机器学习笔记绪论模型评估与选择

Posted LabulaH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习笔记绪论模型评估与选择相关的知识,希望对你有一定的参考价值。

目录

第一章 绪论

0️⃣引言

1️⃣基本术语

2️⃣假设空间

3️⃣归纳偏好

第二章 模型评估与选择

0️⃣经验误差与过拟合

1️⃣评估方法

✏️留出法/hold-out

✏️交叉验证法/cross validation

✏️自助法/bootstrapping

✏️调参/parameter tuning 与最终模型

2️⃣性能度量/performance measure

✏️回归任务​

✏️分类任务

3️⃣比较检验

✏️假设检验

✏️交叉验证 t 检验

✏️McNemar检验

✏️Friedman检验与Nemenyi检验

4️⃣偏差与方差


第一章 绪论

0️⃣引言

西瓜问题:如何辨别一颗好瓜。

​​​​​​​

1️⃣基本术语

1.数据集/data set:一组记录的集合。

2.示例(样本、特征向量)/instance/sample/feature vector:每条记录是关于一个事件或对象的描述。

3.属性(特征)/attribute/feature:反应事件或对象在某方面的表现或性质的事项。

4.属性值/attribute value:属性上的取值。

5.属性空间(输入空间、样本空间)/attribute space/sample space:属性张成的空间。

6.学习(训练)/learning/training:从数据中学得模型的过程。

7.训练数据/training data:训练过程中使用的数据,每个样本称为“训练样本/training sample”,训练样本组成的集合称为“训练集/training set”。

8.假设/hypothesis:学得模型对应了关于数据的某种潜在规则。

9.真相(真实)/ground-truth:潜在规律自身。

10.学习器/learner:模型的别称。

11.标记/label:关于示例结果的信息。

12.样例/example:拥有了标记信息的示例。

13.标记空间(输出空间)/label space:所有标记的集合。

14.分类/classification:预测的是离散值的学习任务。

15.回归/regression:预测的是连续值的学习任务。

16.二分类/binary classification:只涉及两个类别的分类任务,通常一个称为“正类/positive class”,一个称为“反类/negative class”。

17.多分类/multi-class classification:涉及多个类别的学习任务。

18.测试/testing:学习到模型之后对样本进行预测的过程。

19.测试样本/testing sample:被预测的样本。

20.聚类/clustering:把训练集中的对象分为若干组,每个组称为一个“簇/cluster”。

21.监督学习/supervised learning:学习任务为分类和回归的代表。

22.无监督学习/unsupervised learning:学习任务为聚类的代表。

23.泛化/generalization 能力:学得的模型适用于新样本的能力。

24.分布/distribution:样本空间的全体样本服从的一种规律。

26.独立同分布/independent and identically distributed,简称i.i.d. :获得的每个样本都是独立地从这个分布上采样获得的。

2️⃣假设空间

我们可以把学习过程看作一个在所有假设(hypothesis)组成的空间中进行搜索的过程,搜索目标是找到与训练集“匹配”的假设,即能够将训练集中的瓜判断正确的假设。假设的表示一旦确定,假设空间及其规模大小就确定了。

3️⃣归纳偏好

机器学习算法在学习过程中对某种类型假设的偏好,称为“归纳偏好”。

一般性的原则来引导算法确立“正确”的偏好:

         奥卡姆剃刀/Occam‘s razor:这是一种常用的、自然科学研究中最基本的原则,即“若有多个假设与观察一致,则选最简单的那个”。

对于一个学习算法a,若它在某些问题上比学习算法b好,那么必然存在另一些问题,在那里b比a好。

        “没有免费的午餐”定理/No Free Lunch Theorem(简称NFL定理):无论学习算法a多聪明,学习算法b多笨拙,它们的期望性能相同。(❗前提是问题出现的机会相同或同等重要)

脱离具体问题,空泛地谈论“什么学习算法更好”毫无意义。

第二章 模型评估与选择

0️⃣经验误差与过拟合

1.错误率/error rate:分类错误的样本数占样本总数的比例。即如果在m个样本中有a个样本分类错误,则错误率E = a / m。

2.精度/accuracy:1 - a / m 称为精度,即“精度 = 1 - 错误率”。

3.误差/error:学习器的实际预测输出与样本的真是输出之间的差异。学习器在训练集上的误差称为“训练误差/training error”或“经验误差empirical error”,在新样本上的误差称为“泛化误差generalization error”。

显然,我们希望得到泛化误差小的学习器。然而,我们事先并不知道新样本是什么样,实际能做的是努力使经验误差最小化。

为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时作出正确的判别。然而,当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。

4.过拟合/overfitting:学习器在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

5.欠拟合/underfitting:相对于过拟合,学习器对训练样本地一般性质尚未学好。

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

💡既然过拟合是不可避免的,那么我们该如何选择模型呢?

理想地解决方案当然是对候选模型地泛化误差进行评估,然后选择泛化误差最小的那个模型。

1️⃣评估方法

通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而作出选择。为此,需使用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。

❗但需注意的是,为了得到“举一反三”的能力,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

可是,我们只有一个包含m个样例的数据集D=(x1,y1),(x2,y2),…,(xm,ym),既要训练,又要测试,怎样过才能做到呢?答案是:通过对D进行适当的处理,从中产生出训练集S和测试集T。下面介绍几种常见的做法。 

✏️留出法/hold-out

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

❗为避免因数据划分过程引入额外的偏差,划分时要尽可能保持数据分布的一致性,例如分类任务采用“分层采样”。

❗不同划分训练集的方法会导致不同的结果,所以一般采用多次随机划分、重复实验取平均值作为评估结果。

❗集合S和T的比例会导致模型较大差别,通常将大约2/3~4/5的样本用于训练,剩余样本用于测试。

✏️交叉验证法/cross validation

 “交叉验证法”先将数据集D划分为k个大小相似的互子集,即。每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样的到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。

❗在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。

🖋️交叉验证法的一个特例:留一法/Leave-One-Out(简称LOO)

假定数据集D中包含m个样本,令k = m。

 

💡留一法使用的训练集与初始数据集相比只少了一个样本,因此实际评估的模型与期望评估的用D训练出的模型很相似。

❗ 数据集比较大时计算的开销也很大。

✏️自助法/bootstrapping

“自助法”是针对上述缺点的一个比较好的解决方案,它直接以自助采样法为基础。给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’,这就是自助采样的结果。

D中有一部分样本会在D’中多次出现,而另一部分样本不出现。样本在m次采样中始终不被采到的概率是,取极限得到,即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D’中。

于是我们可将D’用作训练集,D\\D’用作测试集;这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试。这样的测试结果,称为“包外估计”。

💡数据集较小、难以有效划分训练/测试集时很有用;而在初始数据量足够时,留出法和交叉验证法更常用一些。

✏️调参/parameter tuning 与最终模型

在进行模型评估与选择时,除了要对使用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的“参数调节”或简称“调参”。

💡在现实中常用的做法,是对每个参数选定一个范围和变化步长。显然,有的时候选定的参数值往往不是“最佳”值,但这是在计算开销和性能估计之间进行折中的结果,通过这个折中,学习过程才变得可行。事实上,即便在进行这样的折中后,调参往往仍很困难。

❗通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”。

2️⃣性能度量/performance measure

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

✏️回归任务

✏️分类任务

🖋️错误率与精度

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

 对样例集D,分类错误率定义为

精度则定义为

 🖋️查准率precision、查全率recall和F1

错误率和精度虽常用,但并不能满足所有任务需求。例如在信息检索中,我们经常会关心“检索出的信息有多少比例是用户感兴趣的”“用户感兴趣的信息中有多少被检索出来了”。“查准率”与“查全率”是更为适用于此类需求的性能度量。

 

 查准率和查全率是一对矛盾的变量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。通常只有在一些简单任务中,才可能使查准率和查全率都很高。

逐个把样本作为正例进行预测,则可以计算出查全率和查准率,分别将它们作为横轴和纵轴,可以得到类似下面的P-R图。

根据如上P-R图,可以看出A曲线将B曲线“包住”,说明B性能优于A;但是若两曲线相交,则要具体判断。

然而,在很多情形下,人们往往希望把学习器A与B比出个高低。

但是这个值不太容易估算,因此人们就设计出了“平衡点/Break-Event Point”(简称BEP),它是综合考查准率、查全率的性能度量,它是“查准率=查全率”时的取值。

但是BEP还是过于简化了些,更常用的是F1度量:

 

 在一些应用中,对查准率和查全率的重视程度有所不同。F1度量的一般形式,能让我们表达出对查准率/查全率的不同偏好,它定义为

其中β>0度量了查全率对查准率的相对重要性。

①β=1  退化为标准的F1

②β>1  查全率有更大影响

③β<1  查准率有更大影响

 🖋️ROC与AUC

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值则分为正类,否则为反类。实际上,根据这个实值或预测结果,我们可将测试样本进行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面,这样,分类过程就相当于在这个排序中以某个“截断点”将样本分为两部分,前一部分判作正例,后一部分则判为反例。

在不同的应用任务中,我们可根据任务需求来采用不同的截断点。例如若我们更重视“查准率”,则可选择排序中靠前的位置进行截断;若更重视“查全率”,则可选择靠后的位置进行截断。

因此,排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏。 


ROC全称是“受试者工作特征/Receiver Operating Characteristic”,其ROC曲线则是从这个角度出发来研究学习器泛化性能的有力工具。

与上一点介绍的P-R曲线相似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了“ROC曲线”。与P-R曲线使用查准率、查全率为纵、横轴不同,ROC曲线的纵轴是“真正例率”(简称TPR),横轴是“假正例率”(FPR),两者分别定义为:

 显然,对角线对应于“随机猜测”模型,而点(0,1)则对应于将所有正例排在所有反例之前的“理想模型”现实任务中通常是利用有限个测试样例来绘制ROC图,此时仅能获得有限个(真正例率,假正例率)坐标对,无法产生(a)中的光滑ROC曲线,只能绘制出如图(b)所示的近似ROC曲线。

 

 🖋️代价敏感/cost-sensitive 错误率与代价曲线/cost curve

在现实任务中,不同类型的错误所造成的后果不同。为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。

 在非均等代价下,我们所希望的不再是简单地最小化错误次数,而是希望最小化“总体代价”,若将表2.2中的第0类作为正类,第1类作为反类,令分别代表样例集D的正例子集和反例子集,则“代价敏感”错误率为:

类似的,可给出基于分布定义的代价敏感错误率,以及其他一些性能度量如精度的代价敏感版本。

 代价曲线的绘制:ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(TPR,FPR),则可相应计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC曲线上的每一个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为所在条件下学习器的期望总体代价,如图2.5所示:

3️⃣比较检验

有了实验评估方法和性能度量,看起来就能对学习器的性能进行评估比较了,那么怎么来做这个“比较”呢?

✏️假设检验

✏️交叉验证 t 检验

✏️McNemar检验

✏️Friedman检验与Nemenyi检验

4️⃣偏差与方差

以上是关于机器学习笔记绪论模型评估与选择的主要内容,如果未能解决你的问题,请参考以下文章

一起啃西瓜书机器学习-期末复习(不挂科)

机器学习笔记1——经验误差模型评估方法和性能度量

机器学习性能度量:错误率与精度 && 查准率查全率与F1

周志华机器学习--模型评估与选择

2,1 模型评估与选择

机器学习笔记模型评估与选择