欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

机器学习第二章笔记

程序员文章站 2022-03-22 23:00:52
...

机器学习一般流程

机器学习第二章笔记

第二章 模型评估与选择

2.1 经验误差与过拟合

  1. 分类错误的样本数占样本总数的比例称为"错误率"(errorrate)

  2. 如果在m个样本中有a个样本分类错误,则错误率E=a/m;

  3. 相应的,1-a/m称为"精度"(accuracy)

  4. 学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error)

  5. 学习器在训练集上的误差称为“训练误差”(training error)或 “经验误差”(empirical error)

  6. 在新样本上的误差称为“泛化误差”(generalizationerror)

  7. 过拟合: 当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降.这种现象在机器学习中称为“过拟合”(overfitting)。最常见的情况是学习能力过于强大,把学习样本不太一般的特性都学习到了。过拟合无法彻底避免,只能“缓解”或者说减少风险。

  8. 欠拟合: 与“过拟合”相对的是“欠拟合”(underfitting), 这是指对训练样本的一般性质尚未学好。通常由学习能力不足导致的

机器学习第二章笔记

2.2评估方法

使用一个“测试集”(testingset)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testingerror)作为泛化误差的近似.通常我们假设测试样本也是从样本真实分布中独立同分布采样而得.但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

2.2.1 留出法

“留出法”(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D= S∪T, S∩T=空集.在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。 常见做法是将大约 2/3~4/5 的 样本用于训练,剩余样本用于测试。

2.2.2 交叉验证法

“交叉验证法”(cross validation)先将数据集D划分为k个大小相似的互斥子集,即D= D1∪D2∪…UDk, Di∩Dj= 空集(i≠j).每个子集Di都
尽可能保持数据分布的一致性,即从D中通过分层采样得到.然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k:次训练和测试,最终返回的是这k个测试结果的均值.显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为“k折交叉验证”(k-fold crossvalidation). k: 最常用的取值是10,此时称为10折交叉验证;其他常用的k值有5,20等。示意图如下

机器学习第二章笔记

假定数据集D中包含m个样本,若令k=m,则得到了交叉验证法的一个特例:留一法(Leave-One-Out,简称LOO).留一法不受随机样本划分方式的影响,留一法的评估结果往往被认为比较准确。但它的缺点是,当数据集非常大的时候,计算的开销也非常大,而且留一法的结果不一定永远比其他方法的结果准确。

机器学习第二章笔记

2.2.3 自助法

给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’,这就是自助采样的结果.显然, D中有一部分样本会在D’中多次出现,而另一部分样本不出现.可以做一一个简单的估计,样本在m次采样中始终不被采到的概率是(1-1/m)的m次方,取极限得到
机器学习第二章笔记

即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D’中.于是我们可将D’用作训练集, D\ D’用作测试集;这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试.这样的测试结果,亦称“包外估计”(out-of _bagestimate).

自助法的优点是在数据集小,难以有效划分训练集和测试集的时候非常有用。它的缺点是容易产生估计偏差,因此在初始数据量足够时,留出法和交叉验证法会更常用一些。

2.2.4 调参与最终模型

大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别.因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的“参数调节”或简称“调参”(parameter tuning).

给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只使用了一部分数据训练模型.因此,在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型.这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型.

另外,需注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set).例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参.

2.3 性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure).

2.3.1 错误率与精度

错误率和精度是分类任务中两种最常用的性能量度.既适用于二分类任务,也适用于多分类任务.错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例.对样例集D,分类错误率定义为:

机器学习第二章笔记

精度定义为:

机器学习第二章笔记

2.3.2 查准率,查全率与F1

错误率和精度虽常用,但并不能满足所有任务需求.以西瓜问题为例,假定瓜农拉来一车西瓜, 我们用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误.但是若我们关心的是“挑出的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例被挑了出来”,那么错误率显然就不够用了,这时需要使用其他的性能度量.

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(truepositive)、假正例(falsepositive)、 真反例(truenegative)、假反例(falsenegative)四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+ FP+ TN + FN=样例总数.分类结果的“混淆矩阵”(confusion matrix)如下表所示:

机器学习第二章笔记

查准率P的定义为:

机器学习第二章笔记

查全率R的定义为:

机器学习第二章笔记

查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低.例如,若希望将好瓜尽可能多地选出来,则可通过增加选瓜的数量来实现,如果将所有西瓜都选上,那么所有的好瓜也必然都被选上了,但这样查准率就会较低;若希望选出的瓜中好瓜比例尽可能高,则可只挑选最有把握的瓜,但这样就难免会漏掉不少好瓜,使得查全率较低.通常只有在一些简单任务中,才可能使查全率和查准率都很高.

P-R图:

机器学习第二章笔记

P-R图直观地显示出学习器在样本总体上的查全率、查准率.在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者,例如图中学习器A的性能优于学习器C;如果两个学习器的曲线有交叉,则很难分辨两个比较器的优劣。于是,人们设计了“平衡点”这一性能量度,既能考察查准率又能考察查全率。

“平衡点”(Break-Event Point,简称BEP)就是这样一个度量,它是“查准率=查全率”时的取值,例如图中学习器C的BEP是0.64,而基于BEP的比较,可认为学习器A优于B.但BEP还是过于简化,更常用的是F1度量

F1度量:

机器学习第二章笔记

F1度量的一般形式Fβ,能让我们表达出对查准率/查全率的不同偏好,它定义为:

机器学习第二章笔记

其中β> 0度量了查全率对查准率的相对重要性 β= 1时退化为标准的F1; β> 1时查全率有更大影响; β < 1时查准率有更大影响.

机器学习第二章笔记

很多时候我们有多个二分类混淆矩阵,例如进行多次训练/测试,每次得到一个混淆矩阵;或是在多个数据集.上进行训练/测试,希望估计算法的“全局”性能;甚或是执行多分类任务,每两两类别的组合都对应-一个混淆矩阵;…总之,我们希望在n个二分类混淆矩阵上综合考察查准率和查全率.

一种直接的做法是先在各混淆矩阵上分别计算出查准率和查全率,记为(P, R1), (Pz, R)…(Pn,Rn),再计算平均值,这样就得到“宏查准率”(macro-P)、“宏查全率” (macro-R),以及相应的“宏F1”(macro-F1):

机器学习第二章笔记

还可先将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,分别记为++TP++、++FP++、++TN++、++FN++,再基于这些平均值计算出“微查准率”(micro-P)、“微查全率” (micro-R)和“微F1”(micro-F1):

机器学习第二章笔记
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYYiUHJc-1595584950987)(https://s1.ax1x.com/2020/07/20/Uh5RWq.png)]

2.3.3 ROC与AUC

与P-R曲线使用查准率、查全率为纵、横轴不同,ROC曲线的纵轴是“真正例率”(True Positive Rate,简称TPR),横轴是“假正例率”(False PositiveRate,简称FPR),两者分别定义为:

机器学习第二章笔记

显示ROC曲线的图称为“ROC图”,下图给出了一个示意图,显然,对角线对应于“随机猜测”模型,而点(0, 1)则对应于将所有正例排在所有反例之前的“理想模型”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5u5LM3Je-1595584950989)(https://s1.ax1x.com/2020/07/20/UhjdsA.png)]

进行学习器的比较时,与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以- -般性 地断言两者孰优孰劣.此时如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即AUC(AreaUnderROC Curve),如图所示.从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得.假定ROC曲线是由坐标为{(x1,y1), (x2, 2)… (xm, Ym)}的点按序连接而形成(x1 =0, xm= 1),参见图(b),则AUC可估算为:

机器学习第二章笔记

形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系.给定m+个正例和m-个反例,令D+和D-分别表示正、反例集合,则排序“损失”(loss)定义为:

机器学习第二章笔记

即考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”。容易看出, lrank 对应的是ROC曲线之上的面积:若一个正例在ROC曲线上对应标记点的坐标为(x,y),则x恰是排序在其之前的反例所占的比例,即假正例率.因此有:

AUC= 1-lrank

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

为权衡不同类型错误所造成的不同损失,可为错误赋予"非均等代价" (unequal cost).

以二分类任务为例,我们可根据任务的领域知识设定一个"代价矩阵" (cost matrix),如表所示,其中costij 表示将第i类样本预测为第j类样本的代价.一般来说, costii = 0; 若将第0类判别为第1类,所造成的损失更大,则 cost01 > cost10;损失程度相差越大,cost01与cost10值的差别越大.

机器学习第二章笔记

若将表中的第0类作为正类、第1类作为反类,令D+与D-分别代表样例集D的正例子集和反例子集,则“代价敏感”(cost-sensitive)错误率为:

机器学习第二章笔记

类似的,可给出基于分布定义的代价敏感错误率,以及其他一些性能度量如精度的代价敏感版本.若令costij 中的i、j取值不限于0、1,则可定义出多分类任务的代价敏感性能度量.

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

机器学习第二章笔记

其中p是样例为正例的概率;纵轴是取值为[0,1]的归一化代价

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KvHaFRbp-1595584950994)(https://s1.ax1x.com/2020/07/21/Uo9CBF.png)]

其中FPR是式(2.19)定义的假正例率,FNR=1-TPR是假反例率.代价曲线的绘制很简单:ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(TPR,FPR),则可相应计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图所示.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wImRhpeU-1595584950995)(https://s1.ax1x.com/2020/07/21/UoClrT.png)]

2.4 比较检验

2.4.1 假设检验

泛化错误率为e的学习器在一个样本上犯错的概率是e;测试错误率ε意味着在m个测试样本中恰有εxm个被误分类.假定测试样本是从样本总体分布中独立采样而得,那么泛化错误率为e的学习器将其中m’个样本误分类、其余样本全都分类正确的概率是

εm'(1-ε)m-m'

由此可估算出其恰将εxm个样本误分类的概率如下式所示,这也表达了在包含m个样本的测试集.上,泛化错误率为e的学习器被测得测试错误率为ε的概率:

机器学习第二章笔记

2.4.2 交叉验证t检验

对两个学习器A和B,若我们使用k折交叉验证法得到的测试错误率分别为eA1,eA2…,eAk和eB1,eB2…,eBk,其中eA和eB是在相同的第i折训练/测试集上得到的结果,则可用k折交叉验证“成对t检验”(paired t-tests)来进行比较检验.这里的基本思想是若两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同,即eAi = eBi.
具体来说,对k折交叉验证产生的k对测试错误率:先对每对结果求差,△i=eAi- eBi;若两个学习器性能相同,则差值均值应为零.因此,可根据差值△1,2…△k来对“学习器A与B性能相同”这个假设做t检验,计算出差值的均值μ和方差σ2,在显著度a下,若变量

机器学习第二章笔记

小于临界值ta/2,k-1;则假设不能被拒绝,即认为两个学习器的性能没有显著差别;否则可认为两个学习器的性能有显著差别,且平均错误率较小的那个学习器性能较优.这里ta/2,k-1是*度为k-1的t分布上尾部累积分布为a/2的临界值.欲进行有效的假设检验,一个重要前提是测试错误率均为泛化错误率的独立采样.

然而,通常情况下由于样本有限,在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定 程度的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率.为缓解这一问题,可采用“5 x 2交叉验证”.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-htgcoeoo-1595584950997)(https://s1.ax1x.com/2020/07/22/UH29BT.png)]

2.4.3 McNemar检验

2.4.4 Friedman检验与Nemenyi后续检验

2.5 偏差与方差

对学习算法除了通过实验估计其泛化性能,人们往往还希望了解它“为什么”具有这样的性能.“偏差方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具.偏差-方差分解试图对学习算法的期望泛化错误率进行拆解.我们知道,算法在不同训练集_上学得的结果很可能不同,即便这些训练集是来自同-一个分布.对测试样本x,令YD为x在数据集中的标记,y为x的真实标记,f(x;D)为训练集D.上学得模型f在x.上的预测输出.以回归任务为例,学习算法的期望预预测为:

机器学习第二章笔记

使用样本数相同的不同训练集产生的方差为:

机器学习第二章笔记

噪声为:

机器学习第二章笔记

期望输出与真实标记的差别称为偏差(bias),即:

机器学习第二章笔记

为便于讨论,假定噪声期望为霉,即 ED[yD-y]=0. 通过简单的多项式展开合井,可对算法的期望泛化误差进行分解:

机器学习第二章笔记

也就是说泛化误差可分解为偏差、方差与噪声之和.

偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;

方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;

噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度.

偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的.给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小.

一般来说,偏差与方差是有冲突的,这称为偏差-方差窘境(bias-variancedilemma).图2.9给出了一个示意图.给定学习任务,假定我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合.

机器学习第二章笔记

相关标签: 机器学习