第二章 模型评估与选择

Posted

tags:

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

参考技术A

错误率 E(error rate)
E = a / m = 样本分类错误 / 样本总数

精度(accuracy)
精度 = 1 - E

误差(error)

拟合

用s实验测试来对学习器的泛化误差进行评估
需要一个 训练集 训练学习器,一个 测试集 测试学习器
已知一个包含m个样例的数据集:

既要训练又要测试
测试集 尽可能与 训练集 互斥
以下为几种从数据集 D 产生训练集和测试集的方法

直接把 数据集D 划分为两个互斥的集合,
其中一个作为 训练集S ,另一个作为 测试集T

训练集和测试集的划分要尽可能保持数据分布的一致性,
采用 分层采样(stratified sampling)

缺点:

常见做法:2 / 3 ~ 4 / 5样本用于训练,剩余用来测试。

数据集D 划分为k个大小相似的互斥子集:


每个子集 都从D中通过分层采样获取,尽可能保持数据分布的一致性。
k-1 个子集的并集作为训练集,剩下的子集作为测试集;
可获得 k 组训练/测试集,进行 k 次训练和测试,最终返回 k 次测试结果的均值。
结果的 稳定性 保真性 取决于k的取值,故又称 "k折交叉验证"(k-fold cross validation)

留一法(Leave-One-Out,LOO) : 假定数据集D包含m个样本,令 k=m

给定包含m个样本的数据集D,采样产生 D\'
自助采样(bootstrap sampling)
每次随机从D中挑选一个样本,拷贝放入 D\' ,然后再将该样本放回D中
重复上述过程m次,得到包含m个样本的 D\'

样本在m次采样中始终不被采到的概率是 ,取极限得:

即通过自助采样,初试数据集D中约有36.8%的样本未出现在D\'中,
D\'作训练集,D\\D\'作测试集

验证集(validation set)
研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型的泛化能力,
把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求
在预测任务中,给定样例集
其中 是示例 的真实标记
要评估 学习器 f 的性能,看要把学习器预测结果f(x)和y进行比较

均方误差(mean squared error) :

错误率 : 分类错误的样本数占样本总数的比例
精度 : 分类正确的样本数占样本总数的比例

对于二分类问题,可以根据真实类别与学习器预测类别的组合分为:
真正例(True Positive)、假正例(False Positive)、
真反例(True Negative)、假反例(False Negative)
可得 TP+FP+TN+FN=样例总数

<table align=center>
<caption>分类结果混淆矩阵(cofusion matrix)</caption>
<tr align=center>
<th rowspan="2">真实情况</th>
<th colspan="2">预测结果</th>
</tr>
<tr align=center>
<td>正例</td>
<td>反例</td>
</tr>
<tr align=center>
<td>正例</td>
<td>TP(真正例)</td>
<td>FN(假反例)</td>
</tr>
<tr align=center>
<td >反例</td>
<td>FP(假正例)</td>
<td>TN(真反例)</td>
</tr>
</table>

查准率P (预测正例中真实正例的比率):

查全率R (真实正例中预测正例的比率):

查全率与查准率是一对矛盾的度量,
以查全率为横轴,查准率为纵轴可得 P-R曲线
P-R曲线与平衡点示意图:

P-R图能直观的显示学习器在样本总体上的查全率、查准率,
进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全包住,
则后者的性能优于前者。

很多时候无法完全包住,会产生交叉
此时需要综合考虑查准率和查全率的性能度量:
平衡点(Break-Even Point,BEP):
查准率=查全率 的取值

F1度量: 调和平均

度量:加权调和平均

多数时候会有多个二分类混淆矩阵

一种做法:

另一种做法:
先对混淆矩阵的对应元素求平均,得到TP、FP、TN、FN的平均值:
记为:
再计算:

学习器为测试样本产生一个实值或概率预测,然后将预测值与分类 阈值(threshold) 比较,
大于阈值则为正类,小于阈值则为反类

根据实值或概率预测可以将测试样本进行排序,
"最可能"是正例的排在最前面,"最不可能"是正例的排在最后面,
分类过程即相当于在排序中以某个 截断点(cut point) 将样本分为两部分,
前一部分为正例,后一部分为反例

可根据不同任务需求选择截断点:

ROC:受试者工作特征(Receiver Operating Characteristic)

对角线对应于随机猜测模型;
(0,1)点对应于所有正例都在反例之前的理想模型

现实任务为有限样例,只能绘制图(b)所示的近似ROC曲线。
绘制方法:

与P-R图类似,若一个学习器的ROC曲线被另一个学习器的曲线完全包住,
则后者的性能优于前者。
若曲线产生交叉,可以用 AUC(Area Under ROC Curve,ROC曲线下的面积) 进行比较。

AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系
给定 个正例和 个反例,令 和 分别表示正、反例集合
则有
排序损失(loss):

真正例率的分母是 ,假正例率的分母是
ROC曲线图可看成矩形分割成 个小矩形,则:
为ROC曲线上部分的面积
AUC为ROC曲线下部分的面积

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

<table align=center>
<caption>二分类代价矩阵(cost matrix)</caption>
<tr align=center>
<th rowspan="2">真实类别</th>
<th colspan="2">预测类别</th>
</tr>
<tr align=center>
<td>第0类</td>
<td>第1类</td>
</tr>
<tr align=center>
<td>第0类</td>
<td>0</td>
<td>cost_01</td>
</tr>
<tr align=center>
<td >第1类</td>
<td>cost_10</td>
<td>0</td>
</tr>
</table>

:表示将第i类样本预测为第j类样本的代价
一般来说,

令第0类作为正类,第1类作为反类,
作为正例子集, 作为反例子集。

代价敏感(cost-sensitive)错误率:

非均等条件下,ROC曲线不能直接反映学习器的期望总体代价,
代价曲线(cost curve) 可以。


其中,p为样例为正例的概率


其中FPR是假正例率,FNR=1-TPR是假反例率。

代价曲线的绘制:

对学习器性能进行评估

故通过统计假设检验(hypothesis test)来进行学习器性能比较
先介绍两种最基本的假设检验,默认以错误率为性能度量,用 表示。

现实中我们只能获取 测试错误率 ,
而不知道其 泛化错误率
二者未必相同,但接近的可能性比较大,因此可通过测试错误率估推出泛化错误率。

泛化错误率为 的学习器在一个样本上犯错的概率是 ;
测试错误率 意味着在m个测试样本中有 个被误分类。
假设测试样本是从样本总体分布中独立采样而得,
那么泛化错误率为 的学习器将其中m\'个样本误分类
其余样本全部分类正确的概率为

其中,

由此可估算出学习器刚好将 个样本误分类的概率为:

这也表示了在m个样本的测试集上,泛化错误率为 的学习器被测得测试错误率为 的概率。

对于给定的(做实验得到的)测试错误率,由 可得, 在 时取最大值,符合二项分布(binomial)
如下图所示,取 ,则10个样本中测得3个被误分类的概率最大。

使用二项检验(binomial test)对 (泛化错误率是否不大于3)的假设进行检验
考虑假设 ,
在 的概率内所能观测到的最大错误率如下式( 为置信度(confidence),对应上图非阴影部分):


(s.t.是“subject to”的简写,表示在右式条件满足的时候左式才成立)
这里公式还有疑问

若测试错误率 小于临界值 ,
则根据二项检验可得:

大多数时候我们并非只做一次留出法估计,而是通过多次重复留出法或交叉验证法等进行多次训练/测试,会得到多个测试错误率,此时可用"t检验"。
假定我们得到k个测试错误率, ,则此时有:

考虑到k个测试错误率可看作泛化错误率 的独立采样,则有变量:
服从自由度为 k-1 的t分布
如下图:

对于假设 和显著度 ,
可以计算当测试错误率为 时,在 概率内能观测到的最大错误率,即临界值。
如上图所示,两边阴影部分各有 的面积
阴影部分范围分别为
若 位于临界值范围内 内,则不能拒绝假设

下表给出一些常用临界值:
<table align=center>
<caption>双边 t 检验常用临界值</caption>
<tr align=center>
<th rowspan="2">a</th>
<th colspan="5">k</th>
</tr>
<tr align=center>
<td>2</td>
<td>5</td>
<td>10</td>
<td>20</td>
<td>30</td>
</tr>
<tr align=center>
<td>0.05</td>
<td>12.706</td>
<td>2.776</td>
<td>2.262</td>
<td>2.093</td>
<td>2.045</td>
</tr>
<tr align=center>
<td>0.10</td>
<td>6.314</td>
<td>2.132</td>
<td>1.833</td>
<td>1.729</td>
<td>1.699</td>
</tr>
</table>

上面是对于单个学习器泛化性能的假设进行检验,
而在现实中我们需要对不同学习器的性能进行比较,
下面介绍此类情况的假设检验方法。

对两个学习器A和B,记使用k折交叉验证法得到的测试错误率分别为 和 ,
其中, 表示在相同的第i折训练/测试集上得到的结果。
可用k折交叉验证"比较t检验"(paired t-tests)进行比较检验。
基本思想:若两个学习器性能相同,则使用相同的训练/测试集得到的测试错误率应相同,即

具体做法:

对于一个有效的假设检验,应保证测试错误率都是泛化错误率的独立采样,
但在上述过程中,所采用的训练集在不同轮次会有一定程度的重叠,故测试错误率并不独立,
为缓解这一问题,故采用" 交叉验证"法
具体做法:

对于二分类问题,留出法不仅可以估计学习器A和B的测试错误率,还能获得两学习器分类结果的差别,如列联表(contingency table):
<table align=center>
<caption>两学习器分类差别列联表</caption>
<tr align=center>
<th rowspan="2">算法B</th>
<th colspan="2">算法A</th>
</tr>
<tr align=center>
<td>正确</td>
<td>错误</td>
</tr>
<tr align=center>
<td>正确</td>
<td>e_00</td>
<td>e_01</td>
</tr>
<tr align=center>
<td >错误</td>
<td>e_10</td>
<td>e_11</td>
</tr>
</table>

做假设两学习器性能相同,则有
那么变量 应符合正态分布
McNemar检验考虑变量:

服从自由度为 1 的 分布
自由度为 1 的 检验的临界值:

交叉验证t检验和McNemar检验都是在一个数据集上比较两个算法的性能,
而很多时候需要在一组数据集上对多个算法进行比较。
两种办法:

假设用4个数据集: 对算法A、B、C进行比较
使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,
然后再每个数据集上根据测试性能由好到坏排序,赋予序值1,2,3,...
若性能相同则平分序值,如下图:

然后使用 Frideman检验 判断算法的性能是否相同
若相同,则平均序值应相同

假定在N个数据集上比较k个算法,令 表示第i个算法的平均序值(暂不考虑平分序值)
的均值为(k+1)/2,方差为
变量:

当k和N较大时,服从自由度为k-1的 分布

上述原始Frideman检验过于保守,现常使用:
变量:
服从自由度为k-1和(k-1)(N-1)的 F 分布
下表为一些常用临界值

若"所有算法性能相同"这个假设被拒绝,则说明算法的性能显著不同,
这时需要进行后续检验(post-hoc test)来进一步区分算法
常用 Nemenyi后续检验

计算出平均序值差别的临界值域:

下表给出常用的 值
若两个算法的平均序值之差超过了临界值域CD,则拒绝假设"所有算法性能相同"

通过"偏差-方差分解"来解释学习算法的泛化性能

泛化误差=偏差+方差+噪声
偏差:度量学习算法的期望预测与真实结果的偏离程度,刻画学习算法本身的拟合能力
方差:度量同样大学的训练集的变动导致的学习性能的变化,刻画数据扰动产生的影响
噪声:表达当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画学习问题本身的难度

一般来说,偏差与方差是有冲突的,称为偏差-方差窘境(bias-variance dilemma)

训练不足时,学习器拟合能力较弱,泛化误差较大
训练充足后,继续训练会使学习器过拟合,泛化误差增高

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

目录

第一章 绪论

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️⃣偏差与方差

以上是关于第二章 模型评估与选择的主要内容,如果未能解决你的问题,请参考以下文章

一起来读西瓜书:第二章 模型评估与选择

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

机器学习笔记第二章:模型评估与选择

模型评估与选择

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

机器学习总结之第二章模型评估与选择