![机器学习公式详解(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/870/48600870/b_48600870.jpg)
2.3 性能度量
本节的性能度量指标较多,但是一般常用的只有错误率、精度、查准率、查全率、、ROC和AUC。
2.3.1 式(2.2) ~式(2.7)的解释
这几个公式简单易懂,几乎不需要额外解释,但需要补充说明的是,式(2.2)、式(2.4)和式(2.5)假设数据分布为均匀分布,即每个样本出现的概率相同,而式(2.3)、式(2.6)和式(2.7)则为更一般的表达式。此外,在无特别说明的情况下,“西瓜书” 2.3节的所有公式中的“样例集”均默认为非训练集(测试集、验证集或其他未用于训练的样例集)。
2.3.2 式(2.8)和式(2.9)的解释
查准率:被学习器预测为正例的样例中有多大比例是真正例。
查全率:所有正例中有多大比例被学习器预测为正例。
2.3.3 图2.3的解释
-
曲线的画法与ROC曲线的画法类似,也是通过依次改变模型阈值,然后计算出查准率和查全率并画出相应坐标点,具体参见2.3.8小节“式(2.20)的推导”中的讲解。这里需要说明的是,“西瓜书”中的图2.3仅仅是示意图,除了图左侧提到的“现实任务中的
-
曲线常是非单调、不平滑的,在很多局部有上下波动”以外,通常不会取到
点。当取到
点时,就会将所有样本均判为正例,此时FN = 0,根据式(2.9)可算得查全率为1,但是TP+FP为样本总数,根据式(2.8)得出的查准率此时为正例在全体样本中的占比,显然在现实任务中正例的占比通常不为0,因此
-
曲线在现实任务中通常不会取到
点。
2.3.4 式(2.10)的推导
将式(2.8)和式(2.9)代入式(2.10),得到
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/122.jpg?sign=1738926512-vsZzrWjBRWZqjUadqBevA3VGy2jKdh3T-0-eb0dc4db2e0d06d46277bcbd00df95a9)
若现有数据集,其中标记
(1表示正例,0表示反例)。假设模型
对
的预测结果为
,则模型
在数据集
上的
为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/126.jpg?sign=1738926512-lCHOcPNMz7CKE2SgLEtv8ibNMDWf11Vu-0-f778f2b5238004e8703a147733d1ee3f)
不难看出上式的本质为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/127.jpg?sign=1738926512-FzPsgfobIAprtgjJzb85J9EwPRHe1IGG-0-8fa44470217751c88805f4654de8bc88)
2.3.5 式(2.11)的解释
“西瓜书”在式(2.11)左侧提到的本质是加权调和平均,且和常用的算术平均相比,其更重视较小值,在此举例说明。假设a同学有两门课的成绩分别为100分和60分,b同学相应的成绩为80分和80分。此时若计算a同学和b同学的算术平均分,则结果均为80分,无法判断这两位同学成绩的优劣。但是,若计算加权调和平均分,那么当
时,a同学的加权调和平均分为
分,b同学的加权调和平均分为
分,此时b同学的平均成绩更优。原因是,a同学由于偏科导致其一门成绩过低,而加权调和平均更重视较小值,所以a同学的偏科情况便被凸显出来。
式(2.11)的下方提到“时查全率有更大影响;
时查准率有更大影响”,下面解释原因。将式(2.11)恒等变形为如下形式
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/134.jpg?sign=1738926512-Mc1DkoDccfDW7hzMO4TMooHSwR6gXDdQ-0-4303811af25bd65f3139b7e21eb6d5b3)
从上式可以看出,当时
,
的权重比
的权重高,因此查全率
对
的影响更大,反之查准率
对
的影响更大。
2.3.6 式(2.12) ~式(2.17)的解释
式(2.12)的和式(2.13)的
是基于各个二分类问题的
和
计算而得的;式(2.15)的
和式(2.16)的
是基于各个二分类问题的TP、FP、TN、FN计算而得的;“宏”(macro)可以认为是只关注宏观而不看具体细节,而“微”(micro)可以认为是要从具体细节做起,因为相较于
和
指标来说,TP、FP、TN、FN更微观,毕竟
和
是基于TP、FP、TN、FN计算而得的。
从“宏”和“微”的计算方式可以看出,“宏”没有考虑每个类别的样本数量,由于平等看待每个类别,因此会受到高和高
类别的影响;而“微”则考虑到了每个类别的样本数量,由于样本数量多的类别相应的TP、FP、TN、FN也会占比更多,因此在各类别样本数量极度不平衡的情况下,样本数量较多的类别会主导最终结果。
式(2.14)的是将
和
代入式(2.10)而得到的;式(2.17)的
是将
和
代入式(2.10)而得到的。值得一提的是,以上只是
和
的常用计算方式之一,在查阅资料的过程中看到其他的计算方式也属正常。
2.3.7 式(2.18)和式(2.19)的解释
式(2.18)定义了真正例率TPR。下面解释公式中出现的真正例和假反例,真正例即实际为正例预测结果也为正例,假反例即实际为正例但预测结果为反例。式(2.18)的分子为真正例,分母为真正例和假反例之和(即实际的正例个数),因此式(2.18)的含义是所有正例中有多大比例被预测为正例 [即查全率(Recall)]。
式(2.19)定义了假正例率FPR。下面解释公式中出现的假正例和真反例,假正例即实际为反例但预测结果为正例,真反例即实际为反例预测结果也为反例。 式(2.19)的分子为假正例,分母为真反例和假正例之和(即实际的反例个数),因此式(2.19)的含义是所有反例中有多大比例被预测为正例。
除了真正例率TPR和假正例率FPR,还有真反例率TNR和假反例率FNR。
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/144.jpg?sign=1738926512-jkZhAictRsP4uMDhuy1CExn1TzNMif8A-0-8da65958cbb59f0e1c814e3400f8eca7)
2.3.8 式(2.20)的推导
在推导式(2.20)之前,我们需要先弄清楚曲线的具体绘制过程。下面我们就举个例子,按照“西瓜书”图2.4下方给出的绘制方法,讲解一下
曲线的具体绘制过程。
假设我们已经训练得到一个学习器,现在用该学习器对8个测试样本(4个正例,4个反例,即
)进行预测,预测结果为
此处用表示样本,以便和坐标
做出区分
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/150.jpg?sign=1738926512-HrAAkqsbSCjEjBxUdQjEH4SiM6iLBxCJ-0-3a296651b8065849a5bfed541707503b)
其中,和
分别表示样本为正例和反例,数字表示学习器
预测该样本为正例的概率,例如对于反例
来说,当前学习器
预测它是正例的概率为
。
根据“西瓜书”中给出的绘制方法,我们首先需要对所有测试样本按照学习器给出的预测结果进行排序,接着将分类阈值设为一个不可能取到的超大值,例如设为1。显然,此时所有样本预测为正例的概率都一定小于分类阈值,那么预测为正例的样本个数为0,相应的真正例率和假正例率也都为0,所以我们可以在坐标处标记一个点。接下来需要把分类阈值从大到小依次设为每个样本的预测值,也就是依次设为0.77、0.62、0.58、0.47、0.33、0.23、0.15。然后分别计算真正例率和假正例率,并在相应的坐标上标记点。最后将各个点用直线连接, 即可得到
曲线。需要注意的是,在统计预测结果时,预测值等于分类阈值的样本也被算作预测为正例。例如,当分类阈值为
时,测试样本
被预测为正例,因为它的真实标记也是正例,所以此时
是一个真正例。为了便于绘图,我们将
轴(假正例率轴)的“步长”定为
,将
轴(真正例率轴)的“步长”定为
。根据真正例率和假正例率的定义可知,每次变动分类阈值时,若新增
个假正例,相应的
轴坐标将增加
;若新增
个真正例,相应的
轴坐标将增加
。按照以上讲述的绘制流程,最终我们可以绘制出图2-1所示的
曲线。
上面给出的预测结果已经按照预测值从大到小排好序
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/161.jpg?sign=1738926512-uQVk79xH9c2ynZHXqh9OvAXPxkXh1A0B-0-4a1f9b0178611fd8b55680116ed43e09)
图2-1 ROC曲线示意图
在这里,为了能在解释式(2.21)时复用此图,我们没有写上具体的数值,转而用其数学符号代替。其中,绿色线段表示在分类阈值变动的过程中只新增了真正例,红色线段表示只新增了假正例,蓝色线段表示既新增了真正例也新增了假正例。根据值的定义可知,此时的
值其实就是所有红色线段和蓝色线段与
轴围成的面积之和。观察图2-1可知,红色线段与
轴围成的图形恒为矩形,蓝色线段与
轴围成的图形恒为梯形。由于梯形面积公式既能计算梯形面积,也能计算矩形面积,因此无论是红色线段还是蓝色线段,其与
轴围成的面积都能用梯形面积公式来计算:
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/163.jpg?sign=1738926512-katTiWpdwlPPUIy8pVQUkwF4QkyKiK2D-0-fd63c77c6fc8870c594577ca82d6ac56)
其中,为“高”,
为“上底”,
为“下底”。对所有红色线段和蓝色线段与
轴围成的面积进行求和,则有
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/166.jpg?sign=1738926512-wfc5h2McOcIlJvtdtDI0ZERT3tzIV3L1-0-69e1ef3239166ee8669a6c900afb51bc)
此为。
通过以上曲线的绘制流程可以看出,
曲线上的每一个点都表示学习器
在特定阈值下构成的一个二分类器,这个二分类器越好,它的假正例率(反例被预测错误的概率,横轴)越小,真正例率(正例被预测正确的概率,纵轴)越大,所以这个点越靠左上角[即点(0,1)]越好。学习器越好,其
曲线上的点越靠左上角,相应的
曲线下的面积也越大,即AUC也越大。
2.3.9 式(2.21)和式(2.22)的推导
下面针对“西瓜书”上所说的“对应的是ROC曲线之上的面积”进行推导。按照我们上述对式(2.20)的推导思路,
可以看作所有绿色线段和蓝色线段与
轴围成的面积之和,但从式(2.21)中很难一眼看出其面积的具体计算方式,因此我们进行如下恒等变形:
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/169.jpg?sign=1738926512-QDhzDvwOnzMFsuZC7Aiyj25SVTv43lr1-0-563c6079675ed68694ad39ecc45654f0)
在变动分类阈值的过程中,如果有新增真正例,那么图2-1就会相应地增加一条绿色线段或蓝色线段,所以上式中的可以看作在累加所有绿色线段和蓝色线段。相应地,
后面的内容便是在求绿色线段或蓝色线段与
轴围成的面积,即
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/172.jpg?sign=1738926512-230JhbLY6K6cexzcEbXoVP8K53n1AA8C-0-837caa65c35cccfc3f51bd4fd458a50c)
与式(2.20)的推导思路相同,不论是绿色线段还是蓝色线段,其与轴围成的图形面积都可以用梯形面积公式来进行计算,所以上式表示的依旧是一个梯形的面积公式。其中,
为梯形的“高”,中括号内便是“上底+下底”。下面我们分别推导一下“上底”(较短的底)和“下底”(较长的底)。
由于在绘制曲线的过程中,每新增一个假正例时
坐标就新增一个步长,因此对于“上底”,也就是绿色或蓝色线段的下端点到
轴的距离,长度就等于
乘以预测值大于
的假正例的个数,即
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/174.jpg?sign=1738926512-NluJewnhQv3CBEJhKa0oKl1EowYe7UvK-0-ca6f48765106439a960ade5b20b5aff1)
而对于“下底”,长度就等于乘以预测值大于或等于
的假正例的个数,即}
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/175.jpg?sign=1738926512-SSHKMhZJfg7NSuGf0CnFTGxx6FJFfRRo-0-d1163a6bbb0cf4bb96eb4f21d53ed522)
到此,推导完毕。
若不考虑,并从直观上理解
,则表示的是:对于待测试的模型
,从测试集中随机抽取一个正反例对儿
,模型
对正例的打分
小于对反例的打分
的概率,即“排序错误”的概率。推导思路如下:采用频率近似概率的思路,组合出测试集中的所有正反例对儿,假设组合出来的正反例对儿的个数为
,用模型
对所有正反例对儿打分并统计“排序错误”的正反例对儿个数
,然后计算出
,此为模型
“排序错误”的正反例对儿的占比,可近似看作模型
在测试集上“排序错误”的概率。具体推导过程如下:测试集中的所有正反例对儿的个数为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/182.jpg?sign=1738926512-2ZDr03FylHYyvPTAgl6G95KxRdmLJ2vQ-0-191a1eba5771a13dabf5938c0b346471)
“排序错误”的正反例对儿的个数为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/183.jpg?sign=1738926512-ciKKYYDKiRllg0rKMnx6Bbwqf9wZrrZY-0-20677a7bd2a3104d649a1a11b07205cb)
因此,“排序错误”的概率为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/184.jpg?sign=1738926512-MkVFMt63zwyBe5XpgqHrbDmYcACMKAF2-0-6dfc8da73609a1e0aee27964a1dcadde)
若再考虑当时算半个“排序错误”,则上式可进一步扩展为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/185.jpg?sign=1738926512-QQ4TR5xElqLjZZl0ziY2nDGvBKAypqRx-0-9152e0bc87010b529b8b965c9cf934e7)
此为。
如果说指的是从测试集中随机抽取正反例对儿,模型
“排序错误”的概率;那么根据式(2.22)可知,AUC便指的是从测试集中随机抽取正反例对儿,模型
“排序正确”的概率。显然,此概率越大越好。
2.3.10 式(2.23)的解释
式(2.23)很容易理解,但需要注意该公式上方交代了“若将表2.2中的第0类作为正类、第1类作为反类”,若不注意此条件,按习惯(0为反类、1为正类)就会产生误解。为避免产生误解,在接下来的解释中,我们将记为
,并将
记为
。式(2.23)还可以进行如下恒等变形:
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/190.jpg?sign=1738926512-GKRE1C2LsduWFuumUC76f8r7TsdtoQE3-0-84e3c5d8d48d975bfe64029bc94ff260)
其中,和
分别表示正例集
和反例集
的样本个数。
表示正例集
中预测错误样本所占比例,即假反例率FNR。
表示反例集
中预测错误样本所占比例,即假正例率FPR。
表示样例集
中正例所占比例,也可理解为随机从
中取一个样例并取到正例的概率。
表示样例集
中反例所占比例,也可理解为随机从
中取一个样例并取到反例的概率。
因此,若将样例为正例的概率记为
,则样例为反例的概率
为
,上式可进一步写为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/200.jpg?sign=1738926512-l6ZgK550H3lifmLvIaCx6F5Njd6AT52o-0-1d3f7fc929da57f0ca9ab505ef110fde)
上面的式子在2.3.12小节“式(2.25)的解释”中会用到。
2.3.11 式(2.24)的解释
当时,式(2.24)可化简为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/202.jpg?sign=1738926512-N1bN3Or6g9mTV4IaZjomxJhACrTctyw9-0-8a319239c7e44d78c22750113c26b2fd)
其中,是样例为正例的概率(一般用正例在样例集中所占的比例近似代替)。因此,当代价不敏感时(即
),
就是正例在样例集中的占比;而当代价敏感时(即
),
即为正例在样例集中的加权占比。具体来说,对于样例集
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/205.jpg?sign=1738926512-KVst0zVNE91tL9qPy4eWRTHC0UeFtAV5-0-3dde7c063e8cde1d3ec3033ab091ffa5)
其中,表示正例,
表示反例。可以看出
,若想让正例得到更多重视,可考虑代价敏感
和
,这实际上等价于在以下样例集上进行代价不敏感的正例概率代价计算。
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/211.jpg?sign=1738926512-aHo5E6xkYPPj1x0Q5UXMgPxYsbIL99Yq-0-d6404914924c9947bd1053ac2ea179cf)
也就是将每个正例样本复制4份,若有1个出错,则4个一起出错,代价为4。此时可计算出
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/212.jpg?sign=1738926512-vcdxTKgkjKGlXi9gcPxVv2sFSe7oSqFB-0-573dda0dc5c52f6ff3f2de3c7c7545e8)
也就是正例在等价的样例集中的占比。所以,无论代价敏感还是不敏感,
在本质上表示的都是样例集中正例的占比。在实际应用过程中,如果由于某种原因无法将
和
设为不同取值,可采用上述“复制样本”的方法间接实现将
和
设为不同取值。
对于不同的和
取值,若二者的比值保持相同,则
不变。例如,对于上面的例子,若设
和
,则
仍为0.5。
此外,根据此式还可以相应地推导出反例概率代价:
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/217.jpg?sign=1738926512-VG9A7PtNVgagmpe4X2x3y7xX4A3Q4XB3-0-1da20740db3ce955eae8177d5cdc5081)
2.3.12 式(2.25)的解释
对于包含个样本的样例集
,可以算出学习器
总的代价为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/218.jpg?sign=1738926512-EOHIV8fginvYDdqzk1ofvBs5R1P6GqFi-0-56412af48b0b771b6edd8de2622e8b38)
其中,是正例在样例集中所占的比例(或严格地称为样例为正例的概率),
的下标中的“se”表示sensitive,即代价敏感。根据前面讲述的FNR、FPR、TPR、TNR的定义可知:
表示正例被预测为反例(正例预测错误)的样本个数;
表示反例被预测为正例(反例预测错误)的样本个数;
表示正例被预测为正例(正例预测正确)的样本个数;
表示反例被预测为反例(反例预测正确)的样本个数。
将以上各种样本个数乘以相应的代价,便可得到总的代价。但是,按照此公式计算出的代价与样本个数
呈正比,显然不具有一般性,因此需要除以样本个数
。而且一般来说,预测出错才会产生代价,预测正确则没有代价,即
,所以
更为一般化的表达式为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/225.jpg?sign=1738926512-PYXZjlgsKC69DT9AtiA9LlKfnLmNivmV-0-b985f88825981115dffaa1b79689ca8d)
回顾式(2.23)的解释可知,上面的式子为式(2.23)的恒等变形,所以它可以同式(2.23)一样被理解为学习器在样例集
上的“代价敏感错误率”。显然,
的取值范围并不在0和1之间,且
在
时取到最大值,因为当
时表示所有正例均被预测为反例,所有反例则均被预测为正例,代价达到最大,即
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/227.jpg?sign=1738926512-HHeK9B8gEJNLJIcN8Tx1UbOdzPNkasIs-0-ac92d097a3a26dc1567538c285d9ba3c)
所以,如果要将的取值范围归一化到0和1之间,只需要将其除以其所能取到的最大值即可,即
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/228.jpg?sign=1738926512-3ByVBW9Hn7EXcoykTJz4jVxk5EJ09MAZ-0-dedd02bef0387040cff70089b8980320)
此为式(2.25),也就是,其中的下标“norm”表示normalization。
进一步地,根据式(2.24)中的定义可知,式(2.25)可以恒等变形为
![](https://epubservercos.yuewen.com/017289/28243954404459306/epubprivate/OEBPS/Images/230.jpg?sign=1738926512-9z3K5p5rDSJG9ff9zkinv4u6uH2m7GO8-0-55e717fdf384f3ad8fd0d07c5c933aee)
对于二维直角坐标系中的两个点和
以及实数
,
一定是线段
上的点,且当
从0变到1时,点
的轨迹为从
到
。基于此,结合上述
的表达式可知:
即为线段
上的点。当
从0变到1时,点
的轨迹为从
到
,即图2.5中的各条线段。需要注意的是,以上只是从数学逻辑自洽的角度对图2.5中的各条线段进行了解释,实际上各条线段并非按照上述方法绘制而成。理由如下。
表示的是样例集中正例的占比,而在进行学习器的比较时,变动的只是训练学习器的算法或者算法的超参数,用来评估学习器性能的样例集是固定的(单一变量原则),
是一个固定值。因此,图2.5中的各条线段并不是通过变动
,然后计算
绘制出来的,而是按照“西瓜书”上式(2.25)下方所说的对ROC曲线上的每一点计算FPR和FNR,然后将点
和点
直接连成线段。
虽然图2.5中的各条线段并不是通过变动横轴表示的来进行绘制的,但是横轴仍然有其他用处,例如用来查找使学习器的归一化代价
达到最小的阈值(暂且称其为最佳阈值)。具体地说,首先计算当前样例集的
值,然后根据计算出来的值在横轴上标记出具体的点,并基于该点画一条垂直于横轴的垂线,与该垂线最先相交(从下往上看)的线段所对应的阈值(每条线段都对应ROC曲线上的点,而ROC曲线上的点又对应具体的阈值)即为最佳阈值。原因是,与该垂线最先相交的线段必然最靠下,因此其交点的纵坐标最小,而纵轴表示的便是归一化代价
,此时归一化代价
达到最小。特别地,当
时(即样例集中没有正例,全是负例),最佳阈值应该是学习器不可能取到的最大值,且按照此阈值计算出来的
、
、
。按照上述画垂线的方法在图2.5中进行实验,即在横轴的0刻度处画垂线,显然与该垂线最先相交的线段是点
和点
连成的线段,交点为
,此时对应的也为
、
、
,且该条线段所对应的阈值也确实为“学习器不可能取到的最大值”(因为该线段对应的是ROC曲线中的起始点)。