西瓜书--chap2 模型评估与选择

2.1 经验误差和过拟合

  • 基本概念:
错误率分类错误样本占总样本的比例,即E=a/m
精度1-a/m,可以理解为正确率,一般写作百分号的形式。
误差样本真实值和预测值之间的偏差,学习集在训练集上的偏差为训练误差,又称为“经验误差”;在新样本上的误差为泛化误差
过拟合学习器过度学习训练集上的特点,并将其当成所有潜在样本所共有特性的现象。也称为“过配”。
欠拟合相比于过拟合而言,指未学习好训练集的一般性质。即学习不够。也称为“欠配”。

   值得注意的是,欠拟合比较容易克服,如随机森林中增加树的深度等;但是过拟合是在各个模型中所无法彻底避免的存在,我们只能采取部分措施来缓解,减少其影响。

    在实际问题中,训练误差因过拟合现象而不适合用作模型选择的指标,那么是怎样进行模型选择的呢?接下来将介绍机器学习中常见的评估方法。


2.2 评估方法

    通常我们通过使用一个“测试集”来测试该学习器对新样本的判别能力,该测试集一般由原始样本中部分样本组成。因此,原始样本应按照一定的方式将其分为两部分:训练集S和测试集T。常见方法有以下几种。

2.2.1 留出法(hold-out)

      留出法,顾名思义,按照一定的比例直接将数据集D划分为两个互斥的组合,分别用作训练集和测试集。但在划分的时候应注意采用“分层抽样”,即训练集和测试集样本类别的比例应尽量一致。但该方法划分方式的多样性和随意性,会导致模型结果的不稳定,因此常需要多次划分取结果的平均值。

       同时,训练集和测试集样本数量的划分也存在很大的影响:若训练集样本过多,测试集较少,可能会导致“过拟合”,评估结果不太稳定准确;若训练集太少,模型训练可能不够,评估结果的保真性也会有所降低。一般大约2/3-4/5用作训练集,其他为测试集。

2.2.2 交叉验证法(cross validation)

      该方法为目前常用的一个划分方法,也称为k折交叉验证。在训练过程中,每次将样本集分为k份,利用其中的k-1份作为训练集,剩下一份作为测试集,这样就可以获得k组训练/测试集,从而进行k次训练和测试,最后以这k次结果的平均值作为返回值。示意图如下:

     与留出法类似,每组的划分也存在不同的方式,因此也会重复进行该步骤p次,并取p次的平均住作为最终结果,即p次k折验证。

    这里就得提到一个特殊情况,当k=m(样本数量)时,即每组只有一个样本,此时称为“留一法”。相比于简单的k折验证和留出法,它不受样本划分方式的影响,且每次将m-1个样本作为训练集,模型得到充分训练,模型预测结果往往比较准确;但同时,由于需要进行m次计算,当m很大时,计算成本较大,且“天下没有免费的午餐”,这一定律仍然成立,有时候的模型结果不一定更为准确(可能有例子吧,不太清楚)。

2.2.3 自助法

   自助法以自主采样法为基础,对于包含m个样本的数据集D,每次抽样后放回,以确保每次抽样时能抽到每个样本。这个过程执行m次后,即可得到包含m个样本的数据集D'。可以看出,D'中的样本可能有部分重复,也可能有部分样本一次都没有出现。样本在m次抽样后未被抽到的概率为36.8%。因此,我们选用D'作为训练数据,D-D'作为测试数据。这样的测试结果,也称为包外估计。

    可以看出,当数据集很小,难以划分训练集和测试集时该方法很有效;但同时,这样的方法也改变了数据的原始分布。当数据集很大时我们一般采用上面另外两种方法。


      在对所用算法进行选择之后,还需要对算法参数进行调节。我们一般对这些参数选定一个特定的范围和步长,让其在此参数空间中遍历,从而选出最好的一个参数组合。可以看出,相比于直接从参数范围来选择,该做法有效的节省了计算成本,但同时,范围及步长的选择常需要经验指导,最后性能也不一定是最好的。

     最后要注意的一点是,上面提到的测试集其实都是验证集,而测试集是相比于原本的样本空间而言的,是实际问题中需要我们去预测的那一部分样本。我们常使用验证集来进行模型算法的调参和选择;而使用训练集来评估模型的泛化能力。这一点一定要区分!!

2.3 性能度量

  不同的任务应选用不同的性能度量指标。接下来主要介绍几种常见的分类性能指标。

2.3.1 错误率和精度

   错误率:

   精度:

 其中II()函数为指示函数,当括号中为真表示1,括号中为假表示0.

 2.3.2 查准率和查全率及F1

      在实际问题中,人们往往不仅关注错误率和精度,比如在医院中,医生往往宁愿大题小做也不愿意错判将一个身患癌症的人诊断为健康人,从而耽误最佳治疗时间,因此仅用以上两个指标难以满足任务需求。在这里,我们更偏向于采用查准率P和查全率R来对任务进行衡量。定义如下:

P=\frac{TP}{TP+FP}

R=\frac{TP}{TP+FN}

    一般来说,这两个分类指标是相互矛盾的,可以认为当P较大时,R一般很小。通俗理解就是,当你想要把所有正例样本查全时,不可避免的会混入许多负例样本,其准确性就难以保证。

     我们以每次计算得到的P和R为横纵坐标作图,即可得到"P-R”曲线,示意图如下:

     图中展示了A/B/C三个模型的P-R曲线,那么怎么比较每个模型的好坏呢?直观来看,我们希望两个指标尽可能的高,那么在图中表现就是该曲线越远离x/y轴越好,可以用其面积来做比较。向上图我们便可以说B模型的性能要好于C模型的性能。但是A和B交叉,难以直观看出面积大小。此时,一些综合考虑查全率和查准率的性能度量便提出来了。

  • 平衡点BEP

       查重率=查准率时的值,值越大表明该模型性能越好。

  • F1度量及Fβ度量

F1=\frac{2\times P\times R }{P+R}

   该公式用的是调和平均数。而引入β能让我们表达出对查准率和查全率的一种偏好。

2.3.3 ROC和AUC

      ROC——“受试者工作特征”曲线,是用来判断模型的好坏。其中AUC是ROC曲线下的面积,AUC越大越好。

下面这个回答挺好的。

(17 封私信 / 39 条消息) 机器学习(周志华)第2.3.4节中,代价曲线的理解? - 知乎 (zhihu.com)中邓俊泽的回答。

2.4 比较检验

   获得性能度量后也不能全面评估模型质量的好坏,涉及因素如下:

  • 通过实验评估方法仅获得的是测试集的性能,这不一定和泛化性能相同。
  • 测试集性能如何与测试集的选择有关;
  • 机器学习算法本身的不确定性导致结果有所不同。

出于以上原因,我们需要用到t检验,卡方检验等统计假设检验手段,来验证测试集的性能是否能代替总体模型的性能——泛化性能。具体就不详细介绍了(等学完统计学再来,太难了。。)

2.5 偏差与方差

   在对泛化误差进行估计后,人们想对其内涵进行解释。常用的有“偏差-方差分解”,具体构成如下:

E(f;D)=bias^2(x)+var(x)+\varepsilon ^2

       其中,bias为偏差,度量了学习算法的期望预测与真实值之间的偏离程度,表现了学习算法本身的拟合能力;var()表明了同样大小的训练集变动所导致的学习性能变化,即刻画了数据扰动所带来的影响;噪声表明了当前任务在任一学习算法上所能达到的期望泛化误差下界,即学习问题本身的难度。

      可以看出,泛化性能是由学习算法的能力、数据的充分性及学习任务本身的难度所共同决定的。

       一般来说,偏差和方差是有冲突的,随着训练程度的加大,偏差逐渐减小,方差逐渐增加。如下图所示,我们要做的就是找到偏差和方差制衡的那一点。

 


 总结

    本章节针对一种或是多种算法,介绍了模型训练过程中常用到的几种分类指标。在实际应用中,应以这些指标为基础,全面的对模型质量进行评估。

    

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值