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