机器学习的目的
最后的最后,我们会用模型对新的数据进行预测,希望得到好的结果。因此我们要得到泛化能力好的模型,尽量不要过拟合,这是训练误差和泛化误差的平衡。训练误差太大,说明模型学习能力不够,特征准备的不充分,欠拟合。训练误差小,泛化误差大,说明模型学习能力太强,学到了很多不容易学到的规律,就是过拟合。
要追求平衡,首先要学会如何评估。
首先,测试集是来近似模型的泛化能力。验证集是用来决定训练的时候何时停止的,也就是来进行模型选择和调参。要去近似,首先要在样本上保证测试集的分布和样本真实的分布近似。训练集和测试集最好互斥。如何既保证分布独立且相似,又保证拥有最接近现实的数据,也就是尽可能多的数据,靠采样。
D是我们有的所有m个样本。
下面是采样的方法
1. 把D按比例分为互斥的两份,需保证两者分布的一致性。因为不同的划分方式,会导致结果不同。所以单次划分的结果不够稳定。一般需要若干次随机划分,重复进行实验。比例大概在2/3~4/5。
2. k折交叉验证:把D分为大小相似的k份,保证数据一致性。每次用k-1份做训练,1份做测试。经过k次实验,返回k次实验的均值。则模型取决于k的取值,一般为10。也可进行p次k折交叉验证。
3. 自助法:想要训练样本尽可能多,又不想计算复杂度太高。在数据集较小,难以划分时很有效。但是会改变分布,引入误差。
D' :训练集。有放回的随机从D中挑选样本,重复m次。m取极限,D中约有36.8%的数据不会出现。
D\D' :测试集。
用哪些指标评价拟合程度:
训练集,测试集就4个数。评价指标都是这四个数的各种组合。T:true F:false P:positive N:negitive
四个数:TP,TN,FP,FN。 其中TP +TN + FP + FN = m。即样本个数。
错误率 (error rate): 分类错误比例。 (FP + FN)/m
精度(accuracy): (TP+TN)/m
查准率(precision): TP/(TP+FP) 被认定为正例的里面,判断正确的比例。
查全率(recall): TP/(TP+FN) 真实正例里,被判断出为正例的比例。
查准率和查全率相互矛盾。如:如果想要准一些,可以取的阈值取的严格一些,取的人少一些,只挑很有把握的,自然会漏掉一些。
由两者可以得到P-R曲线,如果a完全包裹b,则a模型优于b。如果有交叉,则比较P-R曲线下面积。
F1度量 是P和R的调和平均数。其一般形式为加权调和平均,可以按照自己对业务的理解去定义,去作为优化的目标。
ROC曲线: 表达了模型的泛化能力。根据模型的排序结果,一个个划分正负,每次得出两个值。横纵是:真正例率TP/(TP+FN), 假正例率FP/(TN+FP)。为啥在ROC曲线画一个y=x呢,那表示随机猜测的ROC。 真正例率 1/(1+FN/TP) 假正例率 1/(1+TN/FP)
自定义代价敏感函数:不同的业务场景,对判断错误的容忍度不同。因此可以权衡不同类型错误造成的损失,计算一个由几个损失合成的损失函数。错误就是cost01 cost10 。
网友评论