经验误差和过拟合

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

我们实际希望的,是在新样本上能表现得很好的学习器.为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的”普遍规律”,这样才能在遇到新样本时做出正确的判别.然而,当学习器把训练样本学得”太好”了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降这种现象在机器学习中称为”过拟合” (overfitting). 与”过拟合”相对的是”欠拟合” (underfitting) ,这是指对训练样本的一般性质尚未学好.

评估方法

通常, 我们可通过实验测试来 学习器的泛化误差进行评估并进而做出选择。

通常,我们假设测试样本也是从样本真实分布 中独立同分布采样而得。

我们有一个包含m个样例的数据集2.模型评估与选择 - 图1%2C(x_2%2Cy_2)%2C%20%E2%80%A6%20%EF%BC%8C(x_m%2Cy_m)%7D%5Crbrace#card=math&code=D%3D%5Clbrace%7B%28x_1%2Cy_1%29%2C%28x_2%2Cy_2%29%2C%20%E2%80%A6%20%EF%BC%8C%28x_m%2Cy_m%29%7D%5Crbrace&id=qvpP0)。通过对D进行适当的处理,从中产生出训练集S和测试集T. 下面介绍儿种常见的做法.

留出法

“留出法” (hold-out) 直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=BUT ,S∩T=∅,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计.需注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免困数据划分过程引入额外的偏差而对最终结果产生影响。

缺点:若令训练集S包含绝大多数样,则训练出的模型可能更接近于用D训练出的模型, 但由于T比较小,评估结果可能不够稳定准 ;若令测试集T多包含一些样本, 则训练集S与D差别更大了,被评估的模型与用D训练出的模型相比可能有较大差别,从而降低了评估结果的保真性。

交叉验证法

将数据 分为 个大小相似的互斥子集, 即2.模型评估与选择 - 图2#card=math&code=D%3D%20D%E2%82%81%E2%88%AA%20D%E2%82%82%E2%88%AA…%20%E2%88%AA%20D_k%2CD_i%20%E2%88%A9D_j%20%3D%20%C3%B8%28i%E2%89%A0j%29&id=ASCHK)每个子集尽可2.模型评估与选择 - 图3保持数据分布的 致性,即从D中通过分层采样得到. 然后,每次用k-1 子集的并集作为训练集,余下的那个子集作为测试集;

交叉检验中的“留一法”使用的训练集与初始化数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似。因此,留一法的评估结果往往被认为比较准确。然而,留一法也有其缺陷:在数据集比较大时,训练的计算开销可能难以忍受。另外,留一法的评估结果也未必永远比其他评估方法准确。

自助法

我们希望评估的是用D训练出的模型。但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致估计偏差。留一法受训练样本规模影响较小,但计算复杂度又太高了。有没有什么办法可以减少训练样本规模不同造成的影响,同时还能比较高效进行试验评估呢?

自助法”是一个比较好的解决方案。给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,并将其拷贝放入D’中,然后再将该样本放回数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们得到了包含m个样本的数据集D’,这就是我们自助采样的结果。我们将D’作为训练集,将D-D‘(集合减法)作为测试集。

自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够是,留出法和交叉验证法更常用一些。

性能度量

在预测任务中,给定样例集2.模型评估与选择 - 图4%2C(x_2%2Cy_2)%2C%20%E2%80%A6%20%EF%BC%8C(x_m%2Cy_m)%7D%5Crbrace#card=math&code=D%3D%5Clbrace%7B%28x_1%2Cy_1%29%2C%28x_2%2Cy_2%29%2C%20%E2%80%A6%20%EF%BC%8C%28x_m%2Cy_m%29%7D%5Crbrace&id=CFZeX)其中2.模型评估与选择 - 图5是示例 2.模型评估与选择 - 图6的真实标记.要评估学习器2.模型评估与选择 - 图7的性能,就要把学习器预测结果2.模型评估与选择 - 图8#card=math&code=f%28x%29&id=Xx9LE)与真实标记y进行比较.回归任务最常用的性能度量是”均方误差”

2.模型评估与选择 - 图9%3D%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em(f(x_i)-y_i)%5E2.%0A#card=math&code=E%28f%3BD%29%3D%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em%28f%28x_i%29-y_i%29%5E2.%0A&id=Nm1cF)

错误率与精度

错误率和精度是分类任务中最常用的两种性能量度。
错误率是分类错误的样本占样本总数的比例,

2.模型评估与选择 - 图10%3D%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em%5CPi(f(x_i)%5Cnot%3Dy_i).%0A#card=math&code=E%28f%3BD%29%3D%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em%5CPi%28f%28x_i%29%5Cnot%3Dy_i%29.%0A&id=sMOHh)

精度则是分类正确的样本占样本总数的比例,

2.模型评估与选择 - 图11%3D%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em%5CPi(f(x_i)%3Dy_i)%5C%5C%0A%3D1-E(f%3BD)%0A#card=math&code=acc%28f%3BD%29%3D%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em%5CPi%28f%28x_i%29%3Dy_i%29%5C%5C%0A%3D1-E%28f%3BD%29%0A&id=IK10v)

查准率、查全率与Fl

对二分类问题,可将样例根据其实际类别与学习器预测类别的组合划分为真正例(true positive,TP)、假正例(false positive,FP)、真反例(true negative,TN)、假反例(false negative,FN)四种情况,,令 TP FP TN FN 分别表示其对应的样例数,则显然有 TP+FP+TN+FN=样例总数.

真实情况 预测结果
正例 反例
正例 TP FN
反例 FP TN

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

2.模型评估与选择 - 图12

以查准率作为纵轴,查全率作为横轴作图,就得到了[查准率]-[查全率]曲线,简称”P-R曲线”,

2.模型评估与选择 - 图13

查准率和查全率是一对矛盾的度量。人们设计了一些综合考虑查准率、查全率的性能度量。[平衡点](Break-Even Point,简称BEP)就是这样一个度量,它是[查准率]=[查全率]时的取值。

BEP过于简化,更常用的的是F1度量,

2.模型评估与选择 - 图14

在一些应用中,对查准率和查全率的重视程度有所不同。从而有了F1度量的一般形式,

2.模型评估与选择 - 图15%20%5Ctimes%20P%20%5Ctimes%20R%7D%7B(%5Cbeta%5E2%20%5Ctimes%20P)%20%2BR%7D%0A#card=math&code=F_%5Cbeta%3D%5Cfrac%7B%281%2B%5Cbeta%5E2%29%20%5Ctimes%20P%20%5Ctimes%20R%7D%7B%28%5Cbeta%5E2%20%5Ctimes%20P%29%20%2BR%7D%0A&id=CDDvP)

系数β>1时查全率有更大影响;β<1时,查准率有更大影响。

很多时候我们有多个二分类混淆矩阵,我们希望在n个二分类混淆矩阵上综合考察查准率和查全率。目前有两种方法:

  • ”宏查准率(macro-P)“、”宏查全率(macro-R)“、及相应的宏F1(macro-F1)
  • ”微查准率(micro-P)“、”微查全率(micro-R)“、及相应的微F1(micro-F1)

ROC与AUC

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值则分为正类,否则为反类。在不同的应用任务中,我们可根据任务需求(如若我们可以依据更重视[查准率]或更重视[查全率])来选择不同的阈值。ROC曲线便是从这个角度出发来研究学习器泛化性能的有力工具。
与P-R曲线使用查准率、查全率为横纵轴不同,ROC的纵轴是”真正样例(True Positive Rate,简称TPR)”,横轴是“假正例率(False Positive Rate,简称FPR),两者分别定义为,

2.模型评估与选择 - 图16

显示ROC的曲线图称为“ROC图”,

2.模型评估与选择 - 图17

进行学习器比较时,与P-R如相似,若一个学习器的ROC曲线被另一个学习器的曲线“包住”,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性的断言两者孰优孰劣。此时如果一定要进行比较,则较为合理的判断是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。

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

在现实任务中会遇到这样的情况:不同类型错误所造成的后果不同。例如在医疗诊断中,错误的把患者诊断为健康人与错误的把健康人诊断为患者,看起来都是犯了“一次错误”,但后者的影响是增加了进一步检查的麻烦,前者的后果却可能是丧失拯救生命的最好时机。
以二分类任务为例,我们可根据任务领域知识设定一个“代价矩阵”,如下图所示,

真实类别 预测类别
第0类 第1类
第0类 0 cost01
第1类 cost10 0

在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线(cost curve)”则可达到目的。代价曲线图的横轴是取值为[0,1]的正例概率代价,

2.模型评估与选择 - 图18cost%3D%5Cfrac%7Bp%20%5Ctimes%20cost%7B01%7D%7D%7Bp%20%5Ctimes%20cost%7B01%7D%20%2B%20(1-p)%20%5Ctimes%20cost%7B10%7D%7D%0A#card=math&code=P%28%2B%29cost%3D%5Cfrac%7Bp%20%5Ctimes%20cost%7B01%7D%7D%7Bp%20%5Ctimes%20cost%7B01%7D%20%2B%20%281-p%29%20%5Ctimes%20cost%7B10%7D%7D%0A&id=xpgRU)

纵轴是取值为[0,1]的归一化代价,

2.模型评估与选择 - 图19%20%5Ctimes%20cost%7B10%7D%7D%7Bp%20%5Ctimes%20cost%7B01%7D%20%2B%20(1-p)%20%5Ctimes%20cost%7B10%7D%7D%0A#card=math&code=cost%7Bnorm%7D%3D%5Cfrac%7BFNR%20%5Ctimes%20p%20%5Ctimes%20cost%7B01%7D%20%5Ctimes%20FPR%20%5Ctimes%20%281-p%29%20%5Ctimes%20cost%7B10%7D%7D%7Bp%20%5Ctimes%20cost%7B01%7D%20%2B%20%281-p%29%20%5Ctimes%20cost%7B10%7D%7D%0A&id=jJ0hc)

画图表示如下图所示,

2.模型评估与选择 - 图20

比较检验

统计假设检验为我们进行学习器性能比较提供了重要依据。基于假设检验结果我们可以推测,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。

假设检验

假设检验中的“假设”是对学习器泛化错误率分布的某种判断或猜想。
对于错误率,我们可以采用“二项检验”来计算“置信度”。
很多时候,我们并非仅做一次留出法估计,而是通过多次重复留出法或是交叉验证法等进行多次训练/测试,这样会得到多个测试错误率,此时,可使用“t检验”。

交叉验证t检验

上面介绍的“二项检验”和“t检验”都是对关于单个学习器泛化性能的假设进行检验,而现实任务中,更多的时候我们需对不同学习器的性能进行比较。
对两个学习器A和B,若我们使用”k折交叉验证法”,则可用“成对t检验”(paired t-tests)来进行比较检验。
对于二分类问题,使用“留出法”估计学习器A和B的测试误差,可采用McNemar检验。

Friedman检验与Nemenyi后续检验

交叉验证t检验和McNemar检验都是在一个数据上比较两个算法的性能,而很多时候,我们会在一组数据集上对多个算法进行比较。当有多个算法参与比较时,一种做法是在每个数据集上分别列出两两比较的结果,而在两两比较时可使用前述方法;另一种方法更为直接,即使用使用基于算法排序的Friedman检验。
使用Friedman检验判断这些算法是否性能都相同。若“所有算法性能都相同”这个假设被拒绝,则说明算法的性能显著不同。这时需要进行“后续检验”(post-hoc test)来进一步区分各算法。常用的有Nemenyi后续检验。

偏差与方差

对学习算法除了通过实验估计器泛化性能,人们往往还希望了解它“为什么”具有这样的性能。“偏差-方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。
泛化误差可分解为偏差、方差和噪声。

2.模型评估与选择 - 图21%3Dbias%5E2(x)%2Bvar(x)%2B%5Cxi%5E2%0A#card=math&code=E%28f%3BD%29%3Dbias%5E2%28x%29%2Bvar%28x%29%2B%5Cxi%5E2%0A&id=FKpg6)