《机器学习》周志华--第2章 模型评估与选择 读书笔记+习题

第2章 模型评估与选择

 2.1 经验误差与过拟合

2.2 模型评估


 2.1 经验误差与过拟合

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

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

  3. 过拟合: 最常见的情况是学习能力过于强大,把学习样本不太一般的特性都学习到了。过拟合无法彻底避免,只能“缓解”或者说减少风险。

  4. 欠拟合: 这是指对训练样本的一般性质尚未学好。通常由学习能力不足导致的

2.2 模型评估

2.2.1 留出法 

二八分

2.2.2 交叉验证法

假设数据集中包含m个样本,k最大=m,留一法,比较准确;k最小是2.

2.2.3 自助法

给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’,这就是自助采样的结果.

每个样本被选到的概率是\frac{1}{m},则m次之后始终不被选到的概率是\left ( 1-\frac{1}{m} \right )^{m},取极限为\lim_{m\rightarrow \infty }\left (1-\frac{1}{m} \right )^{m} \mapsto \frac{1}{e} \approx 0.368

极限推导由\lim_{m\rightarrow \infty }\left (1+\frac{1}{m} \right )^{m} \mapsto e而来

即通过自助采样,仍有数据总量约1/3的、没在训练集中出现的样本用于测试.这样的测试结果,亦称“包外估计”(out-of _bagestimate).

2.2.4 调参与最终模型

训练集用于训练模型参数,测试集用于估计模型对样本的泛化误差(测试集既 不参与参数的学习过程,也 不参与参数的选择过程,仅仅用于模型评价),验证集用于“训练”模型的超参数(超参数是用于控制模型行为的参数,这些参数不是通过模型本身学习而来的,例如网络层数,网络节点数,迭代次数,学习率这些)

2.3性能度量

性能度量是衡量模型泛化能力的评价标准

  1. 回归任务最常用的性能度量是"均方误差" (mean squared error):

  2. 对于数据分布Ð 和概率密度函数p(.) , 均方误差可描述为:

 

2.3.1 错误率与精度

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

其中\mathbb{I}()指括号内条件满足为1,否则为0。

f(x_{i})是推测值,y_{i}是实际值。

不相等的个数/总个数

UfsVvn.png

精度定义为:

Ufgql4.png

2.3.2 查准率、查全率与F1

分类结果的“混淆矩阵”(confusion matrix)如下表所示:

UhdHmT.png

查准率P的定义为:

Uh0uG9.png

查全率R的定义为:

Uh0dxI.png

查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低. 

若希望将好瓜尽可能多地选出来,则可通过增加选瓜的数量来实现,但这样查准率就会较低

只挑选最有把握的瓜,但这样就难免会漏掉不少好瓜,使得查全率较低

  • P-R曲线

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

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

UhRSm9.png

宏XX 、微XX

    • 很多时候我们有多个二分类混淆矩阵,例如进行多次训练/测试,每次得到一个混淆矩阵;总之,我们希望在n个二分类混淆矩阵上综合考察查准率和查全率.
    • 在各混淆矩阵上分别计算出查准率和查全率,在计算其平均值,这样就得到了宏查准率(macro-P)、宏查全率(macro-R)、宏F1(macro-F1)
    • 将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN平均值,分别记为++TP++、++FP++、++TN++、++FN++,再基于这些平均值计算出“微查准率”(micro-P)、“微查全率” (micro-R)和“微F1”(micro-F1)

 

Uh5Tw4.png

2.3.3 ROC与AUC

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

若两个学习器的ROC曲线发生交叉,则难以一般性 地断言两者孰优孰劣.此时如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即AUC(AreaUnderROC Curve)。

从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得.假定ROC曲线是由坐标为{(x1,y1), (x2, y2)… (xm, Ym)}的点按序连接而形成(x1 =0, xm= 1),参考图b,则AUC可估算为:

 

U4tzHe.png

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

U4aETg.png

即考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”。容易看出, lrank 对应的是ROC曲线之上的面积。因此有:AUC=1-lrank

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

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

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

UIbugH.png

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

UIjJ1O.png

  • 代价曲线理解

数学内涵不太理解,推荐参考知乎:https://www.zhihu.com/question/63492375最高赞,很详细,但是我还是有一部分看不懂。下面有条回答@邓俊泽偏重于应用理解,下面我引用了一些。

“纵轴名为归一化代价。事实上这个东西就是错误率。(0,FPR)和(1,FNR)这两个点,即用来检测模型好坏的样本全是负例(即P(+)=0),那我模型产生的错误就只有负例被错误的预测为正例这一种情况,就是(0,FPR)的由来!同样,当我用来检测模型好坏的样本全都是正例(即P(+)=1),那我模型产生的错误就只有正例被错误的预测为负例的情况这一种情况,就是(1,FNR)的由来!”

每一条线段实际上就是一组(FPR,FNR)组合决定的,即ROC曲线上的一个点。

  • 为什么要以所有线段的下界来解释总体的错误率呢?

“总结一下:每一个正例概率P(+),模型都能够选择很多阈值对其进行分类,这些分类结果在代价曲线中表现出来的就是不同(FPR、FNR)组合的线段与正例概率的交点,在所有阈值中,至少会有一个阈值(对应唯一的FPR、FNR组合)使得模型能够把样本分类错误率降到最低。”

 

  • CC 相比于 ROC 有什么优势
  1. CC 能可视化代价。
  2. CC 的纵轴给出了我们对模型最关心的指标:代价或者错误率。且撇开 ROC 的短板 —— 代价不说,仅就错误率而言,CC 上一目了然的事情,在 ROC 空间里并不方便,每拉出一个点,至少得心算一次加法,一次减法。
  3. CC 的纵轴与先验p直接相关。通常情况下,先验与样本中的频率并不相同。CC 可以展示模型在各个p情况下的表现,也是 ROC 所不及的。
  4. ROC曲线是用来判断模型好坏的,也就是说模型训练完了,模型的好坏可以用ROC曲线判断。

在非均等代价下,代价曲线横轴是取值为[0,1]的正例概率代价:

UIztjU.png

其中p是样例为正例的概率;

举例说明,当我们认为,正例错判为负例的代价与负例错判为正例的代价相同时, P1(+)=p

当我们认为把负类判定为正类会造成更大的损失时,此时带入公式,得P2(+)

P2(+)<P1(+)

对应到图中, 正例概率 就会往左移动,对应的阈值就会增大,模型对正类的判断就会更谨慎。

2.4 比较检验

2.4.1 假设检验

泛化错误率为e的学习器在一个样本上犯错的概率是e;测试错误率ε意味着在m个测试样本中恰有εm个被误分类.

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

UHGpm6.png

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下,若变量

UHcmGR.png

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

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

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.上的预测输出.以回归任务为例,学习算法的期望预预测为:

UbKicV.png(2.37)

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

UbKmN9.png(2.38)

噪声为:

UbKfg0.png(2.39)

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

UbK7E4.png(2.40)

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

UbM0i9.png

(2.41)

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

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

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

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

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

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

UblYEF.png

训练并不是越多越好!!!! 

 

习题 


1.数据集包含 1000 个样本,其中 500 个正例、 500 个反例,将其划分为包含 70% 样本的训练集和 30% 样本的测试集用于留出法评估,试估算共有多少种划分方式.
答:在保持样本均衡的前提下,正例和反例在训练和测试集中的数量相同。
在这里插入图片描述

2.数据集包含100 个样本,其中正、反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别(训练样本数相同时进行随机猜测),试给出用10 折交叉验证法和留一法分别对错误率进行评估所得的结果。
答:因为模型是将新样本预测为训练样本数较多的类别
留一法:测试集1个样本,训练集99个样本,50+49,有50个与测试集真实类别不同,故测试集无法被划分到正确的类,错误率100%;
10折交叉验证法:在采用分层抽样的前提下,每次训练样本正反例数一样,分类概率一样,错误率因为50%;


3.若学习器A 的F1 值比学习器B 高,试析A 的BEP 值是否也比B 高.
BEP:是"查准率= 查全率"时的取值。

 

现实中BEP并不实用

 

4.试讲述真正例率(TPR) 、假正例率(FPR)与查准率§ 、查全率®之间的联系.
答:
P,查准率(准确率),(预测正例)中(真实正例)的比例.
R,查全率(召回率),(真实正例)中(预测正例)的比例.
TPR,真正例率,(真实正例)中(预测正例)的比例,TPR = R.
FPR,假正例率,(真实反例)中(预测正例)的比例. 

 

5.试证明式(2.22).
在这里插入图片描述
ROC 全称是"受试者工作特征" (Receiver Operating Characteristic),ROC 曲线的纵轴是"真正
例率" (True Positive Rate ,简称 TPR) ,横轴是"假正例率" (False Positive Rate ,简称 FPR)。
AUC是ROC 线下 的面积。
 

学习器的本质是将样例按照预测概率排序,正例在前,反例在后。首先将一个阈值设为最大,即在排序的最左边,阈值左边为预测正例,右边为预测反例。

 

因为阈值左边没有样例,所以这时没有真正例,也没有假正例,对应ROC曲线上的(0,0)  。

向右不断移动阈值,每扫过一部分,都将这部分变为预测正例,该部分预测正例中若只包含真正例,则ROC曲线竖直向上移动,若只包含假正例,则ROC曲线水平向右移动,若既有正例也有反例,则斜向上移动。

 累加了所有不在正例的反例数目,其中同样的位置标记为0.5,在正例前面标记为1。从图中可以看出,折线每次向右(右上)延伸,表示扫描到了反例,折线上方对应的面积,就是该反例后面有多少个正例,每个正例是一个正方形,对应的面积是1。同位置上的正例是个三角形,对应的面积是0.5。计算出总面积后,由于ROC图的坐标是归一化的,所以总面积要除以一开始放大的倍数,也就是 m+m- 。

 

6.试述错误率与 ROC 曲线的联系

错误率可由代价-混淆矩阵得出;
ROC曲线基于TPR与FPR表示了模型在不同截断点取值下的泛化性能。
ROC曲线上越靠近(1,0)  的点,对应的学习器越完美,但是常需要通过计算等错误率来实现P、R的折衷,而P、R则反映了我们所侧重部分的错误率。

7. 试证明任意一条 ROC 曲线都有一条代价曲线与之对应,反之亦然.

ROC曲线的点对应了一对(TPR,FPR),即一对(FNR,FPR),由此可得一条代价线段(0,FPR)–(1,FNR),由所有代价线段构成簇,围取期望总体代价和它的边界–代价曲线。所以说,ROC对应了一条代价曲线。

8.Min-max 规范化和公score 规范化是两种常用的规范化方法.令X’ 分别表示变量在规范化前后的取值,相应的,令 Xmin 即表示规范化前的最小值和最大值 x~in z;mz 表示规范化后的最小值和最大值,军和 σz 分别表示规范化前的均值和标准差,则 min-max 规范化、 z-score 规范化分别如式(2 .43) (2 .44) 所示.试析二者的优缺点.

 在这里插入图片描述

2.8

2.9 

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪呀呀呀呀呀呀呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值