经验误差与过拟合
错误率(error rate):分类错误的样本数占样本总数的比例
精度(accuracy):精度 = 1 - 错误率
误差(error):学习器的实际预测输出与样本的真实输出之间的差异
训练误差(training error)/经验误差(empirical error):学习器在训练集上的误差
泛化误差(generalization error):学习器在新样本上的误差
过拟合(overfitting):学习器把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降
欠拟合(underfitting):学习器对训练样本的一般性质尚未学好
欠拟合容易克服,例如在决策树学习中扩散分支、在神经网络学习中增加训练轮数等,而过拟合非常麻烦,过拟合是机器学习面临的关键障碍。
过拟合无法彻底避免,能做的只是“缓解”,或者说减小风险。可以大致理解为:机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,若克彻底避免过拟合,则通过经验误差最小化就能获得最优解,这就意味着我们构造性的证明了“
评估方法
在现实任务中,有许多学习算法可供选择,甚至对同一个学习算法,使用不同的参数配置,也会产生不同的模型。为了选择最优的模型,可通过实验测试来对学习器的泛化误差进行评估进而做出选择。为此,需要一个测试集来测试学习器对新样本的判别能力,然后以测试集上的测试误差作为泛化误差的近似。测试集应该尽可能的与训练集互斥,即测试样本尽量不在训练样本中出现。
如果我们还有一个包含
留出法(hold-out)
直接将数据集
数据集
注意
训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似。
即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集
D 进行分割。因此,单词使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行试验评估后取平均值作为留出法的评估结果。
常见的做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。
交叉验证法(cross validation)
现将数据集
通常把交叉验证法称为“
注意
与留出法类似,将数据集
D 划分为k 个子集同样存在多种划分方式。为减小因样本划分不同而引入的差别,k 折交叉验证通常要随机使用不同的划分重复p 次,最终的评估结果是这p 次k 折交叉验证的结果的均值。
假定数据集
自助法(bootstrapping)
给定包含
显然,D中的一部分样本会在
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外自助法能从初始数据集中产生多个不同的训练集,对集成学习等方法大有好处。由于自助法产生的数据集改变了初始数据集的分布,会引入偏差值。因此,在数据量足够时,留出法和交叉验证法更常用一些。
调参与最终模型
参数调节(parameter tuning):学习算法都有参数的设定,参数的不同,学得模型的性能会有显著的差别。对算法参数的设定就是调参。
给定包含
性能度量
性能度量(performance measure):衡量模型泛化能力的评价标准。
错误率与精度
错误率是分类错误的样本数占样本总数的比例,精度是分类正确的样本数在样本总数的比例。
对样例集
精度定义为:
更一般的,对于数据分布
查准率、查全率与F1
查准率(precision):检索出来的条目中准确的占比
查全率(recall):所有准确的条目检索出来的占比
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)和假反例(false negative)四种情形。
令TP、FP、TN、FN分别表示其对应的样例数,那么TP + FP + TN + FN = 样例总数。
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
查准率P与查全率R分别定义为
查准率高时,查全率往往偏低;查全率高时,查准率往往偏低。
PR曲线:查准率-查全率曲线
平衡点(Break-Even Point,简称BEP):为了在PR图中识别学习器的性能谁更优异,人们设计了一些综合考虑查准率、查全率的性能度量。平衡点就是其中之一,它是查准率=查全率时的取值。平衡点的取值越大,学习器越优。
BEP还是过于简化,更常用的是F1度量:
在一些应用中,对查准率和查全率的重视程度不同。F1度量的一般形式——
其中
当
当
当
很多时候会有多个二分类混淆矩阵,我们希望在n个二分类混淆矩阵上综合考察查准率和查全率。
一种直接做法是先在各混淆矩阵上分别计算出查准率和查全率,再计算平均值,这样就得到了“宏查准率(macro-P)”、“宏查全率(macro-R)”以及对应的“宏F1(macro-F1)”:
另一种做法是将各混淆矩阵的对应元素进行平均,得到
ROC 与 AUC
ROC全称是“受试者工作特征(Receiver Operating Characteristic)”曲线。根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们的横、纵坐标作图,就得到了ROC曲线。ROC曲线的纵轴是“真正例率(True Positive Rate,简称TPR)”,横轴是“假正例率(False Positive Rate,简称FPR)”,两者分别定义为:
显示ROC曲线的图叫ROC图。
其中AUC(Area Under ROC Curve)为ROC曲线下所包含的面积,用于判断学习器间的性能谁更优。
AUC可通过对ROC曲线下的各部分的面积求和而得。假定ROC曲线是由坐标
AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密关系。给定
即考虑每一对正、反例,做正例的预测值小于反例,则记一个罚分,若相等则记0。5个罚分。
代价敏感错误率与代价曲线
为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价(unequal cost)”
代价矩阵(cost matrix)
真实类别 | 预测类别 | |
第0类 | 第1类 | |
第0类 | 0 |
|
第1类 |
|
0 |
若将第0类作为正类,第1类作为反类,令
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线(cost curve)”则可达到目的。代价曲线图的横轴是取值为
其中
FPR是定义的假正例率, FNR是假返利率。
比较检验
为了比较学习器的泛化性能谁更优异,下面列举了几种常用的机器学习性能比较的方法。为便于讨论,本节默认以错误率为性能度量,用
假设检验
假设检验中的假设是对学习器泛化错误率分布的某种判断或猜想,如
交叉验证t检验
对两个学习器A和B,若我们使用
McNemar检验
Friedman检验与Nemenyi后续检验
偏差与方差
偏差-方差分解(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。
偏差-方差分解试图对学习算法的期望泛化错误率进行拆解。
泛化误差可分解为偏差、方差与噪声之和。
偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度