【笔记】机器学习之模型的评估与选择

经验误差与过拟合

错误率

错误率 = 分类错误数 / 样本总数
精度 = 1 - 错误率

经验误差

我们把机器学习的实际预测输出与样本的真实输出之间的差异称为误差,学习器在训练集上的误差叫经验误差,在新样本上的误差叫泛化误差。

过拟合与欠拟合

当机器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降,这就是“过拟合”,反之为“欠拟合”。


过拟合和欠拟合

好比你想学习追妹子。先找表妹问喜欢什么,表妹说她喜欢干净帅气的男生,还说她喜欢周杰伦,喜欢火锅,喜欢酸菜鱼,合计一百条规矩。你规规矩矩地按照要求学习,终于符合表妹的一切要求,0 Error,训练完成,超级自信准备出去试试追个妹子。可是换了个妹子,发现学到的似乎没想象中有用。第二个妹子只要你干净帅气。后面的九十八条她都不care,她甚至讨厌吃火锅,喜欢蔡徐坤,那后面98条只会增加误差。这就过拟合了。

过拟合是机器学习面临的关键障碍,各类学习算法必然都带有一些针对过拟合的措施,过拟合也是无法彻底避免的,我们所能做的只是缓解。

过拟合无法避免

如果过拟合可以避免,那么我们在解决NP难问题的时候只要把问题归约为找到经验误差最小的结果,就可以找到最优解,这意味着我们就已经证明了P=NP,而现实中多数人还是相信P!=NP的。

评估方法

留出法

将数据集分成两个互斥的集合,一个为训练集,另一个为测试集。
一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

交叉验证法

先将数据集平均分成k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,然后每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,得到k组训练/测试集,从而可以进行k次训练和测试,最终返回的是k这个结果的均值。
假定数据集中包含m个样本,若令k=m即为交叉验证法的特例:留一法。


交叉验证法

自助法

给定包含m个样本的数据集D,每次随机从D中挑选一个样本拷贝到采样数据集D'中,重复m次,得到包含m个样本的数据集D'。样本在m次采样中始终不被采到的概率是(1 - 1 / m) ^ m,取极限得到:



初始数据集D中约有36.8%的样本未出现在采样数据集D'中,于是我们将D'用作训练集,D\D'作测试集,这样的测试结果叫做包外估计。

调参与最终模型

学习算法的很多参数是在实数范围内取值,因此,对每种参数配置都训练出模型是不可能的,现实中的常用做法是,对每个参数选定一个范围和变化步长。显然这样选定的参数往往不是最佳值,但这是在计算开销和性能估计之间进行折中的结果,通过折中,学习过程才变得可行。

在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型。这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型。

性能度量

要评估学习器f的性能,就要把学习器预测结果f(x)和真实标记y作比较。
回归任务最常用的性能度量是“均方误差”



更一般的,不均匀的数据分布,均方误差可描述为


错误率与精度

错误率是分类错误的样本数占样本总数的比例,精度是分类正确的样本数占样本总数的比例。
错误率



精度



更一般的,不均匀的数据分布,错误率和精度可分别描述为

查准率、查全率F1

对于二分类问题,可将样例根据其真实类别与机器学习预测类别的组合划分为真正例(TP)、假正例(FP)、真反例(TN)、假反例(FN)



查准率P与查全率R分别定义为


按照机器学习预测可能性顺序逐个把样本作为正例进行预测,每次计算出当前的查准率和查全率。以查准率为纵轴,查全率为横轴作图,就得到查准率-查全率曲线,简称“P-R曲线”。


学习器A的P-R曲线将C曲线完全包住,则可断言A的性能优于C。A和B的P-R曲线发生交叉,则难以一般性地断言两者优劣,只能在具体的条件下进行比较。然而在很多情形下,人们往往仍然希望把A和B比出个高低,这时可以比较P-R曲线下的面积大小,但这个值不太容易估算,因此人们设计了一些综合考虑查准率、查全率的性能度量。

平衡点

平衡点(BEP)是查准率=查全率时的取值,基于BEP的比较,可认为A优于B。

F1度量

F1是基于查准率与查全率的调和平均数。



F1度量的加权形式,能让我们表达对查准率/查全率的不同偏好。


宏\微 查准率、查全率、F1

我们希望在n个二分类混淆矩阵上综合考察查准率和查全率。
一种做法是先将各混淆矩阵上分别计算出查准率和查全率,再计算平均值。


还可先将各个混淆矩阵的对应元素进行平局,得到TP、FP、TN、FN的平均值,再基于这些平均值计算。



ROC与AUC

ROC全称“受试者工作特征”
跟P-R曲线相似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以他们为横纵坐标作图,就得到了ROC曲线。ROC曲线的纵轴是真正例率,横轴是假正例率。




和P-R图相似,ROC曲线包住的性能优于被包住的,若ROC曲线发生交叉,则可以通过比较面积判断优劣,即AUC。

对样本预测的正例概率进行排序,考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等则记0.5个“罚分”。排序“损失”定义为


容易看出,损失对应的是ROC曲线之上的面积,因此有

代价敏感错误率与代价曲线

在现实问题中,错误的代价并不是均等的,我们之前计算的错误率是直接计算“错误次数”,并没有考虑不同错误会造成的不同后果。在非均等代价下,我们希望最小化“总体代价”。
代价敏感错误率为

类似的,可以给出基于分布定义的代价敏感错误率,以及其他一些性能度量入精度的代价敏感版本。
非均等代价下,“代价曲线”可以直接反映出学习器的期望总体代价。

其中p是样例为正例的概率;纵轴是取值为[0, 1]的归一化代价

其中FPR是假正例率,FNR = 1 - TPR是反正例率。代价曲线的绘制:ROC曲线上的每一点计算出FNR和FPR,在代价平面上绘制一条(0, FPR)到(1, FNR)的线段,线段下的面积就表示了该条件下的期望总体代价。

你可能感兴趣的:(【笔记】机器学习之模型的评估与选择)