西瓜书学习笔记第2章(模型评估与选择)

2.1经验误差与过拟合

错误率(error rate):分类错误的样本数占样本总数的比例,即如果在m个样本中有a个样本分类错误,则错误率 E= a/m;
精度(accuracy):精度 = 1 – 错误率,即1-E
误差(error):学习器的实际预测输出与样本的真实输出之间的差异
训练误差(training error)/经验误差(empirical error):学习器在训练集上的误差
泛化误差(generalization error):学习器在新样本上的误差
过拟合(overfitting):学习器把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降的一种现象
欠拟合(underfitting):学习器对训练样本的一般性质尚未学好

欠拟合很容易克服,例如决策树学习中的扩展分支、神经网络学习中增加训练轮数等,而过拟合则非常麻烦,而过拟合是机器学习面临的关键障碍。

过拟合无法彻底避免,能做的只是“缓解”,或者说减小风险。可以大致理解为:机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这就意味着我们构造性的证明了“P=NP”;因此,只要相信“P≠NP”,过拟合就不可避免。

2.2评估方法

在现实任务中,有许多学习算法可供选择,甚至对同一个学习算法,使用不同的参数配置,也会产生不同的模型。即“模型选择”(model selection)问题
为了选择最优模型,可以通过实验测试评估学习器的泛化误差来进行选择。为此,需要一个测试集来测试学习器对新样本的判别能力,然后将测试集上的测试误差作为泛化误差的近似值。测试集应尽可能与训练集互斥,即尽可能不让测试样本出现在训练样本中。

如果我们还有一个包含m个样例的数据集D={(x1,y1),(x2,y2),…,(xm,ym)},既要训练,又要测试,就需要通过对D进行适当的处理,从中产生出训练集S和测试集T。(类似于习题集和考试试题)

2.2.1留出法(hold-out)

直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另个作为测试集T,即D=S∪T,S∩T=∅。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。

二分类任务:数据集D有1000个样本,划分700个作为训练集S,剩下的300个作为测试集T。训练结束后,产生的模型在T上有90个错误。那么错误率为(90/300)×100%=30%,精度为(1−0.3)×100%=70%

注意
训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似。“分层采样”(stratified sampling)
即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集D进行分割。因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行试验评估后取平均值作为留出法的评估结果。

常见的做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。S小时评估结果的偏差较大,T较小时评估结果的方差较大。

2.2.2交叉验证法(cross validation)

先将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j)。每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后每次用k−1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可以获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这个k个测试结果的均值。

通常把交叉验证法称为“k折交叉验证法”(k-fold cross validation)。k最常用的取值是10,此时称为10折交叉验证

注意
与留出法类似,将数据集D划分为k个子集同样存在多种划分方式。为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证的结果的均值。

假定数据集D中包含m个样本,若令k=m,则得到了交叉验证的一个特例:留一法(Leave-One-Out,简称 LOO)。留一法不受随机样本划分方式的影响,留一法的评估结果往往被认为比较准确。缺陷是,当数据集比较大时,训练m个模型的计算开销可能是难以忍受的。另外,留一法的估计结果也未必永远比其他评估方法准确。(NFL 定理)

2.2.3自助法(bootstrapping)

它直接以自助采样 (bootstrap sampling) 为基础 [Efron and Tibshirani, 1993].
给定包含m个样本的数据集D,我们对它进行采样产生数据集D′:每次随机从D中挑选一个样本,将其拷入到D′中,重复执行m次后,就得到了包含m个样本的数据集D′,这就是自助采样的结果。

显然,D中的一部分样本会在D′中多次出现,而另一部分则不会出现。通过自助采样,初始数据集D中约有36.8%(1/e)的样本未出现在数据集D′中。我们可将D′用作训练集,D\ D′用作测试集。

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

2.2.4调参与最终模型

参数调节(parameter tuning)简称“调参”:大多数学习算法都有参数需要设定,参数配置的不同,学得模型的性能往往会有显著差别。对算法参数的设定就是调参。

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

2.3性能度量(performance measure)

衡量模型泛化能力的评价标准。

2.3.1错误率与精度

错误率是错误分类的样本数与总样本数的比值,精度是正确分类的样本数与总样本数的比值。
对样例集D,分类错误率定义为:
西瓜书学习笔记第2章(模型评估与选择)
精度定义为:
西瓜书学习笔记第2章(模型评估与选择)
更一般的,对于数据分布D和概率密度函数p(⋅),错误率与精度可分别描述为:
西瓜书学习笔记第2章(模型评估与选择)

2.3.2查准率、查全率与F1

查准率(precision):检索出来的条目中准确的占比。比如检索出m条,n条是真正准确的,则查准率=n/m。
查全率(recall):所有准确的条目检索出来的占比。比如检索出m条,n条是真正准确的且真正准确的有p条,则查全率=n/p。

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)和假反例(false negative)四种情形。

令TP、FP、TN、FN分别表示其对应的样例数,那么TP + FP + TN + FN = 样例总数。

分类结果的”混淆矩阵” (confusion matrix) 如图所示:
西瓜书学习笔记第2章(模型评估与选择)
查准率P与查全率R分别定义为:
西瓜书学习笔记第2章(模型评估与选择)
精度高时,召回率往往很低;当召回率高时,准确率通常很低。

PR曲线:查准率-查全率曲线:
西瓜书学习笔记第2章(模型评估与选择)
“平衡点”(Break-Even Point,简称BEP):为了在PR图中识别学习器的性能谁更优异,人们设计了一些综合考虑查准率、查全率的性能度量。平衡点就是其中之一,它是“查准率=查全率”时的取值。平衡点的取值越大,学习器越优。

BEP还是过于简化,更常用的是F1度量:
西瓜书学习笔记第2章(模型评估与选择)
在一些应用中,对查准率和查全率的重视程度不同(推荐系统重视查准率,逃犯检索系统重视查全率)。F1度量的一般形式—— Fβ,能让我们表达出对查准率、查全率的不同偏好,它的定义为:
西瓜书学习笔记第2章(模型评估与选择)
其中 β>0 度量了查全率对查准率的相对重要性。
当β=1 时退化为标准的F1;
当β>1 时查全率有更大影响
当β<1 时查准率有更大影响

很多时候会有多个二分类混淆矩阵,我们希望在n个二分类混淆矩阵上综合考察查准率和查全率。

一种直接做法是先在各混淆矩阵上分别计算出查准率和查全率,再计算平均值,这样就得到了“宏查准率(macro-P)”、“宏查全率(macro-R)”以及对应的“宏F1(macro-F1)”:(宏:各自计算结果,各结果求均值)
西瓜书学习笔记第2章(模型评估与选择)
另一种做法是将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,分别记为TP¯、FP¯、TN¯、FN¯,再基于平均值计算出“微查准率(micro-P)”、“微查全率(micro-R)”和“微F1(micro-F1)”:(微:各数据求平均值,再算出结果)
西瓜书学习笔记第2章(模型评估与选择)

2.3.3ROC 与 AUC

ROC全称是“受试者工作特征(Receiver Operating Characteristic)”曲线。根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们的横、纵坐标作图,就得到了ROC曲线。ROC曲线的纵轴是“真正例率(True Positive Rate,简称TPR)(查全率)”,横轴是“假正例率(False Positive Rate,简称FPR)”,两者分别定义为:
西瓜书学习笔记第2章(模型评估与选择)
显示ROC曲线的图叫ROC图。
西瓜书学习笔记第2章(模型评估与选择)
其中AUC(Area Under ROC Curve)为ROC曲线下所包含的面积,用于判断学习器间的性能谁更优。

AUC可通过对ROC曲线下的各部分的面积求和而得。假定ROC曲线是由坐标{(x1,y1),(x2,y2),…,(xm,ym)}的点按顺序连接而形成(x1=0,xm=1),则AUC可估算为:
西瓜书学习笔记第2章(模型评估与选择)
AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密关系。给定m+个正例和m−个反例,令D+和D−分别表示正、反例集合,则排序损失(loss)定义为:
西瓜书学习笔记第2章(模型评估与选择)
即考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等则记0.5个“罚分”。

ℓrank对应的是ROC曲线之上的面积。
西瓜书学习笔记第2章(模型评估与选择)

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

为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价(unequal cost)”
西瓜书学习笔记第2章(模型评估与选择)
costij表示将第i类样本预测为j类样本的代价。一般,costii=0。若将第0类判别为第1类所造成的损失更大,则cost01>cost10
一般情况下,重要的是代价比值而非绝对值,如cost01:cost10=5:1与50:10所起效果相当。
若将第0类作为正类,第1类作为反类,令D+与D−分别为样例集D的正例子集和反例子集,则代价敏感(cost-sensitive)错误率为:
西瓜书学习笔记第2章(模型评估与选择)
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线(cost curve)”则可达到目的。代价曲线图的横轴是取值为[0,1]的正例概率代价:
西瓜书学习笔记第2章(模型评估与选择)
其中p是样例为正例的概率;纵轴是取值为[0, 1]的归一化代价:
西瓜书学习笔记第2章(模型评估与选择)
FPR是定义的假正例率, FNR是假返利率。
西瓜书学习笔记第2章(模型评估与选择)

2.4比较检验

为了比较学习器的泛化性能,下面列出了几种常用的机器学习性能比较方法。为了便于讨论,本节默认将错误率作为性能度量,用 ε 表示。

2.4.1假设检验

假设检验中的假设是对学习器泛化错误率分布的某种判断或猜想,如ϵ=ϵ0。现实任务中并不能知道学习器的泛化错误率,只能得到测试错误率ϵˆ。泛化错误率与测试错误率接近的可能性比较大,因此可以根据测试错误率估推出泛化错误率的分布。

2.4.2交叉验证t检验

对两个学习器A和B,若我们使用k折交叉验证法得到的测试错误率分别为ϵA1,ϵA2,…,ϵAk和ϵB1,ϵB2,…,ϵBk,其中ϵAi和ϵBi是在相同的第i折训练/测试集上得到的结果。基本思想为若两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同,即ϵAi=ϵAi。

2.4.3McNemar检验

正态分布

2.4.4Friedman检验与Nemenyi后续检验

卡方分布

2.5偏差与方差

偏差-方差分解(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。

偏差方差分解试图分解学习算法的预期泛化错误率。

泛化误差可以分解为偏差、方差和噪声的总和。

偏差衡量学习算法的预期预测与实际结果的偏差程度,直接描述学习算法本身的拟合能力。

方差衡量相同大小的训练集变化引起的学习性能变化,并捕捉数据扰动的影响。

噪声表示任何学习算法在当前任务上所能达到的预期泛化误差的下限,它描述了学习问题本身的难度。

偏差一方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的.给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。
西瓜书学习笔记第2章(模型评估与选择)

参考博文链接:https://blog.csdn.net/qq_38962336/article/details/106387952?spm=1001.2014.3001.5502

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年4月11日 下午3:03
下一篇 2022年4月11日

相关推荐