机器学习笔记之——分类任务常用指标
目录
分类任务常用指标
假设数据集 D 总共有 m 个样本, 分别表示第 个样本的特征和标签, 是预测标签。
1. 错误率与精度
- 错误率是分类错误的样本占样本总数的比例:
- 精度(Accuracy)是分类正确的样本占样本总数的比例:
可以看出错误率与精度的关系是
2. 查准率、查全率与 F1
错误率和精度虽然很常用也很直观,但是不能满足所有任务需求。比如在信息检索中,我们更关心”用户感兴趣的内容有多少被检索出来了“,或者”被检索出来的内容里有多少是用户真正感兴趣的“。这两者分别对应了另外两个常用的指标:查全率(precision)和查准率(recall)。
2.1 混淆矩阵(confusion matrix)
对于二分类问题,可以根据预测标签与真实标签,将样本分成 4 类,一般用混淆矩阵表示如下:
真实标签 | 预测结果 | |
正例 | 反例 | |
正例 | TP(True Positive) | FN(False Negative) |
反例 | FP(False Positive) | TN(True Negative) |
2.2 查准率(Precision)与查全率(Recall)
-
查准率 P 的定义如下:
意义:预测为正例的样本里真正是正样本的比例。 -
查全率(又称召回率)的定义如下:
意义:所有真实正样本中被预测成功的比例。
2.3 P-R 曲线
查准率与查全率是一对矛盾的指标,一般来说,查准率高时,查全率会偏低,而查全率高时,查准率会偏低。直观上理解,倘若我们想尽可能地把更多的正样本找出来(提高查全率),可以放低预测为正样本的门槛,使得更多的样本被预测为正样本,这样就能提高查全率,但是由于放低了标准,会使得更多的反例样本也被预测为正例,从而使得查准率降低。反之,我们只需要提高标准,只把那些最有把握的样本预测为正例,这样就能提高查准率,但是会把很多正样本漏在标准之外,降低查全率。
因为两者一般是矛盾的,并且可以通过调整预测标准来使其中某一个提高,因此只考量其中一个指标是不合理的。例如,倘若我们只用查全率来衡量,那么对于那些把所有样本都预测为正样本的分类器,我们会认为其非常优秀,因为查全率达到了 100%,但是显然这样的分类器是没有什么价值的。同理,只用查准率来衡量也是不行的。
所以,我们需要同时考虑这两个指标。P-R 曲线是比较直观的一种比较办法。把样本按"是正例的可能性"大小进行排序,最有把握是正例的样本排在最前,反之最后,然后按此顺序逐个划分正反例的阈值。比如,第一次把所有的样本均预测为反例,第二次把第一个样本预测为正例,剩下的 m-1 个样本预测为反例,以此类推。每一次预测均可以计算得到一对查准率和查全率,以两者分别作为横轴和纵轴,就可以画出 P-R 曲线,如下图所示:
通过 P-R 曲线可以对两个分类器的查全率和查准率进行比较。若一个分类器的曲线完全包住另一个分类器的曲线,则说明这个分类器的性能优于前者,因为在各种阈值划分下,其查准率和查全率均大于后者。在上图中,我们可以看出 A 的性能优于 C, B 的性能也优于 C。
2.4 F1 score
但是,倘若两条曲线有交叉(比如图中的 A 和 B),则不能够断言孰优孰劣,合理的办法是比较 P-R 曲线下的面积大小。但是这个值不容易计算,因此人们设计了一些能够综合衡量查准率和查全率的指标:
- BEP(Break-Event Point) 平衡点,是指查准率等于查全率时的取值,按这个指标,可以得出分类器 A 优于 B
- F1 score,是查准率和查全率的调和平均:
可以推出:
-
score,是查准率和查全率的加权调和平均, 表示了查全率的相对重要性。 时退化为标准的 F1。
因此,
有些时候,我们对查全率和查准率的重视程度不同,比如信息检索的时候,我们更希望检索出的确实是用户感兴趣的,因此查准率更重要,而逃犯信息检索时,我们更希望不要漏掉可能的嫌疑人,因此查全率更重要。给这两者加上不同的权重,得到的就是 score。
2.5 micro-F1 和 macro-F1
很多时候,我们会得到多个混淆矩阵,比如:
- 进行多次训练,每次得到一个混淆矩阵
- 在多个数据集上进行训练
- 多分类任务
假设我们有 n 个混淆矩阵,那么衡量指标主要有两种:
-
macro-F1: 分别计算各个混淆矩阵上的查准率和查全率 ,然后计算平均值,得到 macro-P, macro-R,从而按照之前的公式计算得到 macro-F1
-
micro-F1: 先计算混淆矩阵的 4 种元素的平均值,即 , , , ,然后计算 micro-P 和 micro-R,从而计算出 micro-F1
-
两者的区别
对于多分类任务,如果这个数据集中各个类的分布不平衡的话,更建议使用mirco-F1,因为 macro-F1 没有考虑到各个类别的样本大小。假设我们有 4 个类,其中 B 类样本远多于其他三类。其混淆矩阵的第一列分别如下:
A类:1 TP,1 FP
B类:10 TP,90 FP
C类:1 TP,1 FP
D类:1 TP,1 FP
分别计算各个类别的查准率,得到 0.5,0.1,0.5,0.5,取平均得到 macro-P 为 0.4,4 类样本被同等对待。但是由于 B 类样本较多,且 B 类样本准确率极低,因此 macro-P 为 0.4 这个指标有误导性,因为大部分样本是被分错的。而 micro-F1 为:
这个指标考虑了各个样本的样本数,因而更为合理。
我们也可以给 macro-P 的计算进行加权,权重为其相对的样本大小。比如上述例子中,四类的权重分别是: 2/106, 100/106, 2/106, 2/106,加权平均得到
可以看出,这个公式与 micro-P 的计算是完全等价的。
(参考链接 micro-F1 vs macro-F1)
3. ROC 与 AUC
3.1 ROC 曲线与 AUC 简介
很多分类器为每个样本预测一个概率,划分一个阈值,大于阈值的预测为正例,否则预测为反例。我们可以根据预测概率,对样本进行排序,把概率最大的排在前面。之前的查全率、查准率以及 F1 score 都是在给定阈值下计算的,在不同的任务需求下,我们可以设定不同的阈值,注重查准率的话可以把阈值设置得大一点,注重查全率的话则把阈值设得小一点。因此排序质量的好坏,综合体现了分类器在不同任务需求下的性能。AUC 就是衡量排序质量的一个指标,与查全率、查准率以及 F1 score 不同,AUC 与阈值的设置无关。
AUC(Area Under ROC Curve) 是 ROC 曲线下的面积,ROC曲线全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,与 P-R 曲线类似,只不过其横纵坐标分别是 FPR(False Positive Rate) 和 TPR(True Positive Rate),如下图(a)所示,计算方式如下:
- FPR: 所有真实负样本被预测错误的比例
- TPR: 所有真实正样本被预测正确的比例,实际上是查全率
点 (0,1) 对应的是预测准确率 100% 的情况,对角线对应随机猜测的模型。如果排序质量是最优的话,即把所有正样本排在所有负样本前面,则 ROC 曲线对应 (0,0)-(0,1)-(1,1) 这样一条折线,此时 AUC=1。
实际中通常无法画出左边那样光滑的曲线,而是像右边图(b)那样用有限个坐标来画出近似的图。画图过程如下:
- 给定 个正例和 反例,根据预测结果对样本进行排序
- 把分类阈值设为最大,即把所有样本都预测为反例,此时 TPR 和 FPR 都是 0,对应坐标 (0,0)
- 然后降低阈值,依次把每个样本划分为正例,计算此时的 TPR 和 FPR。假设上一个坐标是 (x,y),若当前是真正例,则新的坐标为 ,若当前是假正例,则新的坐标为
- 直到阈值最小,把所有样本都划分为正例,此时 TPR 和 FPR 都是 1,对应坐标 (1,1)
关于上述第 3 步的解释,假设上一步阈值设置在第 k 个样本与第 k+1 样本之间,即把前 k 个样本预测为正例,剩下的样本预测为反例。假设前面 k 个样本中有 a 个真实正样本,b 个真实负样本,显然 a+b=k。根据 TPR 和 FPR 的计算公式,可得此时:
现在考虑把阈值往下调,使得前 k+1 个样本被分为正例,剩下的分为反例。此时有两种情况:
(1) 第 k+1 个样本是正例,则此时的 a’=a+1, b’=b,即 FPR 不变,但是 TPR 增加了
(2) 第 k+1 个样本是反例,则此时的 a’=a, b’=b+1,即 TPR 不变,但是 FPR 增加了
3.2 AUC 计算公式
AUC 的计算公式有以下两种:
- 按上面的方法,得到一系列离散的点 ,则 ROC 曲线下的面积近似为:
公式解释:
从 3.1 的分析,我们已经知道, 和 要么是横坐标相等,要么是纵坐标相等。- 若 ,则 到 是垂直于 x 轴的线段,其下方的面积为 0,按上述公式同样得到面积为 0;
- 若 ,则 到 是平行于 x 轴的线段,其下方是一个矩形,长为 ,高为 (也等于 ),可写成 ,与公式符合
一般化来看,假如 到 这段线段不是平行也不是垂直于 x 轴,上述公式也是成立的。这段线段下方的面积是一个梯形,上底是 ,下底是 ,高为 ,根据梯形计算公式可以得到上面的公式。
- AUC 是衡量排序质量的指标,可以计算排序损失,再计算 AUC。假设正例集合 里有 个正例样本,反例集合 里有 个反例样本,则排序损失为:
即统计每一对正例、反例组合 ,若正例的预测值小于反例,则记一个罚分,若两者的预测值相等,则记半个罚分。得到排序损失之后,AUC 的计算如下:
公式解释:
对于每个正例样本 ,下列式子其实是统计了在排序中排在 前面的反例个数:
对于预测值与其相等的反例样本,有 50% 的可能会排在其前面,因此乘以 1/2。我们如果把 的公式改写一下,得到:
而根据 FPR 的公式, 实际上就是 这个样本点在 ROC 曲线中对应坐标的横坐标。而 是 与上一个样本点的纵坐标之差 。因此
可以看出这计算的其实是 ROC 曲线左边的面积,或者说 ROC 曲线上方的面积,即图(b)中空白部分的面积。为什么这个公式中只计算正样本点呢?因为从 3.1 中我们知道,对于那些负样本点,其纵坐标与上一个样本一样,即组成的线段是垂直与 y 轴的,此时在其左边的面积为 0,因而不用计算。由于图(b) 中正方形的面积是 1,因此