ML——模型评估与选择
2.1 经验误差与过拟合
1.基本概念:
错误率:分类错误的样本数占样本总数的比例;
精度:分类正确的样本数占样本总数的比例,即精度=1 — 错误率;
误差:学习器的实际预测输出与样本的真实输出之间的差异;
训练误差:也叫经验误差,是学习器在训练集上的误差;
泛化误差:学习器在新样本上的误差。
2.过拟合和欠拟合
由于新样本的未知性,实际中只能力求使经验误差最小化。一味追求最小化经验误差,很容易引起“过拟合”现象,即学习器将训练样本学得“太好”,以至于把训练样本包含的不太一般的特性都学到了,导致泛化性能下降。与之相对的是“欠拟合”,指对训练样本的一般性质尚未学好。
由于训练样本无法完全替代真实样本,泛化误差无法直接获得,训练误差又由于过拟合现象的存在而不适合作为标准,因此我们需要有一套完整的模型评估与选择的方法。
2.2 评估方法
通常,可通过实验测试对学习器的泛化误差进行评估进而做出选择。首先可对数据集D进行划分,产生训练集S和测试集T;在测试集上训练模型,得到“测试误差”,作为“泛化误差”的近似;最后进行调参并最终确定模型。常见的数据集划分方法有:留出法、交叉验证法和自助法。
2.2.1 留出法
留出法直接将数据集D划分为两个互斥的集合,一个是训练集S,一个 是测试集D。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
训练集/测试集的划分要尽量保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。此外,在确定训练/测试集样本比例后,最好采取若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果,以提升结果的稳定性。
2.2.2 交叉验证法
交叉验证法对数据集D进行分层采样得到k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的作为测试集,从而进行k次训练和测试,最终返回这k个测试结果的均值。由于k取值的重要性,交叉验证法通常也称为“k折交叉验证”,常用的k值有5,10,20等。
假定数据集D中包含m个样本,令k=m,则得到了交叉验证法的一个特例:留一法。留一法不受随机样本划分方式的影响,评估结果往往被认为比较准确,但随着样本量的增多,计算开销比较大。
2.2.3 自助法
自助法是有放回的重复采样的方式进行数据采样。对包含m个样本的数据集D,每次随机从中挑选一个样本放入训练集中,然后把该样本放回,重复进行m次,得到训练集D'。通过自助采样,初始训练集D中有一部分的样本并未出现在采样数据集D'中,将这部分未出现的样本D-D'作为测试集。
总结
调参与最终模型
学习算法的参数配置不同,学习的模型性能往往有着显著差别,因此在进行模型评估与选择时,需要对算法参数进行设定,即“调参”。在研究对比不同算法的泛化性能时,用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
2.3 性能度量
性能度量是衡量模型泛化能力的评价标准。在预测任务中,给定样本集 ,其中yi是实例xi的真实标记。
回归任务中最常用的性能度量是“均方误差”:
分类任务中常用的性能度量如下:
2.3.1 错误率与精度
错误率是分类错误的样本占样本总数的比例:
精度是分类正确的样本占样本总数的比例:
这是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。
2.3.2 查准率、查全率和F1
对二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例TP、假正例FP、真反例TN、假反例FN,其对应样例数相加得到样例总数。分类结果的“混淆矩阵”如下所示:
查准率(precision):预测为正的样本中,真正为正的样本比例;
查全率(recall):所有为正的样本中,预测为正的样本比例。
以查准率为纵轴,查全率为横轴作图得到查准率-查全率曲线,简称“P-R曲线”
可利用P-R曲线比较直观的判断模型好坏。若一个学习器的P-R曲线被另一个的完全“包住”,则认为后者的性能优于前者。但当两个学习器的P-R曲线发生交叉,则难以判断优劣。此时可以基于“平衡点(BEP)”(“查准率=查全率”时的取值)来度量,BEP越大认为该学习器性能越优。如上图中可认为学习器A优于B。
BEP过于简化,一般用F1度量,F1=2P*R/(P+R),它是基于查准率和查全率的调和平均值。在商品推荐系统中,目标是希望推荐内容确实是客户感兴趣的,此时查准率更重要,可运用F1度量的一般形式,当β<1时查准率有更大影响。
2.3.3 ROC与AUC
ROC是从“一般情况下”泛化性能好坏的角度出发研究学习器泛化性能的有力工具。与P-R曲线类似,但ROC曲线的纵轴是“真正例率(TPR)”,横轴是“假正例率(FPR)”,二者定义为:
ROC曲线图如下:
绘制该曲线时,首先将样本按照正例的可能性进行排序,然后把分类阈值设为最大,即将所有样本预测为反例,再依次将每个样例划分成正例并计算FPR和TPR画出曲线。(0,0)点表示将所有点预测为假;(0,1)点表示所有预测为真的个体都正确此时为“理想模型”,且ROC曲线越靠近左上角,模型越优;(1,0)点表示所有预测都是错误的;(1,1)点表示是随机预测。
利用ROC进行学习器的比较时,若一个学习器的ROC曲线完全包住了另一个,则认为前者性能优于后者,若两个学习器的ROC曲线出现“交叉”,可比较ROC曲线下的面积,即AUC。AUC越大,性能越好。
2.3.4 代价敏感错误率与代价曲线
上述的一些性能度量大都隐式的假设了均等代价,即认为把True预测为False与把False预测为True所导致的代价是同等的,但在很多情况下不能以同等代价来进行预测,此时可为错误赋予“非均等代价”,并最小化总体代价
2.4 比较检验
统计假设检验为进行学习器性能比较提供了重要依据。基于假设检验结果可推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。对单个学习器泛化性能的假设可进行“二项检验”或“t检验”,其中后者用于多次重复留出法或交叉验证法进行多次训练/测试时。对两个学习器A和B,若使用"k折交叉验证",可使用“成对t检验”。对于二分类问题,使用“留出法”估计学习器A和B的测试误差,可采用McNemar检验。当在一组数据集上对多个算法进行比较时,可用Friedman检验与Nemenyi后续检验。
2.5 偏差与方差
偏差-方差分解是解释学习算法泛化性能的一种重要工具。泛化误差可分解为偏差、方差和噪声。
参考:
周志华《机器学习》
https://zhuanlan.zhihu.com/p/33199938
https://www.jianshu.com/p/c5fec07c8f8d