机器学习笔记之——分类任务常用指标

分类任务常用指标


假设数据集 D 总共有 m 个样本, x i , y i x_i, y_i xi,yi 分别表示第 i i i 个样本的特征和标签, f ( x i ) f(x_i) f(xi) 是预测标签。

1. 错误率与精度

  • 错误率是分类错误的样本占样本总数的比例:
    e r r o r = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) error = \frac{1}{m}\sum_{i=1}^mI(f(x_i)\neq y_i) error=m1i=1mI(f(xi)̸=yi)
  • 精度(Accuracy)是分类正确的样本占样本总数的比例:
    a c c = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) acc = \frac{1}{m}\sum_{i=1}^mI(f(x_i)= y_i) acc=m1i=1mI(f(xi)=yi)

可以看出错误率与精度的关系是 a c c + e r r o r = 1 acc + error = 1 acc+error=1

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 的定义如下:
    P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
    意义:预测为正例的样本里真正是正样本的比例。

  • 查全率(又称召回率)的定义如下:
    R = T P T P + F N R = \frac{TP}{TP+FN} R=TP+FNTP
    意义:所有真实正样本中被预测成功的比例。

2.3 P-R 曲线

查准率与查全率是一对矛盾的指标,一般来说,查准率高时,查全率会偏低,而查全率高时,查准率会偏低。直观上理解,倘若我们想尽可能地把更多的正样本找出来(提高查全率),可以放低预测为正样本的门槛,使得更多的样本被预测为正样本,这样就能提高查全率,但是由于放低了标准,会使得更多的反例样本也被预测为正例,从而使得查准率降低。反之,我们只需要提高标准,只把那些最有把握的样本预测为正例,这样就能提高查准率,但是会把很多正样本漏在标准之外,降低查全率。

因为两者一般是矛盾的,并且可以通过调整预测标准来使其中某一个提高,因此只考量其中一个指标是不合理的。例如,倘若我们只用查全率来衡量,那么对于那些把所有样本都预测为正样本的分类器,我们会认为其非常优秀,因为查全率达到了 100%,但是显然这样的分类器是没有什么价值的。同理,只用查准率来衡量也是不行的。

所以,我们需要同时考虑这两个指标。P-R 曲线是比较直观的一种比较办法。把样本按"是正例的可能性"大小进行排序,最有把握是正例的样本排在最前,反之最后,然后按此顺序逐个划分正反例的阈值。比如,第一次把所有的样本均预测为反例,第二次把第一个样本预测为正例,剩下的 m-1 个样本预测为反例,以此类推。每一次预测均可以计算得到一对查准率和查全率,以两者分别作为横轴和纵轴,就可以画出 P-R 曲线,如下图所示:

P-R曲线

通过 P-R 曲线可以对两个分类器的查全率和查准率进行比较。若一个分类器的曲线完全包住另一个分类器的曲线,则说明这个分类器的性能优于前者,因为在各种阈值划分下,其查准率和查全率均大于后者。在上图中,我们可以看出 A 的性能优于 C, B 的性能也优于 C。

2.4 F1 score

但是,倘若两条曲线有交叉(比如图中的 A 和 B),则不能够断言孰优孰劣,合理的办法是比较 P-R 曲线下的面积大小。但是这个值不容易计算,因此人们设计了一些能够综合衡量查准率和查全率的指标:

  • BEP(Break-Event Point) 平衡点,是指查准率等于查全率时的取值,按这个指标,可以得出分类器 A 优于 B
  • F1 score,是查准率和查全率的调和平均:
    1 F 1 = 1 2 ( 1 P + 1 R ) \frac{1}{F1}=\frac{1}{2}(\frac{1}{P}+\frac{1}{R}) F11=21(P1+R1)
    可以推出:
    F 1 = 2 × P × R P + R F1=\frac{2\times P \times R}{P+R} F1=P+R2×P×R
  • F β F_{\beta} Fβ score,是查准率和查全率的加权调和平均 β \beta β 表示了查全率的相对重要性。 β = 1 \beta=1 β=1 时退化为标准的 F1。
    1 F β = 1 1 + β 2 ( 1 P + β 2 R ) \frac{1}{F_{\beta}}=\frac{1}{1+\beta^2}(\frac{1}{P}+\frac{\beta^2}{R}) Fβ1=1+β21(P1+Rβ2)
    因此,
    F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_{\beta}=\frac{(1+\beta^2)\times P \times R}{(\beta^2\times P)+R} Fβ=(β2×P)+R(1+β2)×P×R

有些时候,我们对查全率和查准率的重视程度不同,比如信息检索的时候,我们更希望检索出的确实是用户感兴趣的,因此查准率更重要,而逃犯信息检索时,我们更希望不要漏掉可能的嫌疑人,因此查全率更重要。给这两者加上不同的权重,得到的就是 F β F_{\beta} Fβ score。

2.5 micro-F1 和 macro-F1

很多时候,我们会得到多个混淆矩阵,比如:

  • 进行多次训练,每次得到一个混淆矩阵
  • 在多个数据集上进行训练
  • 多分类任务

假设我们有 n 个混淆矩阵,那么衡量指标主要有两种:

  • macro-F1: 分别计算各个混淆矩阵上的查准率和查全率 ( P i , R i ) (P_i, R_i) (Pi,Ri),然后计算平均值,得到 macro-P, macro-R,从而按照之前的公式计算得到 macro-F1
    m a c r o _ P = 1 n ∑ i = 1 n P i macro\_P=\frac{1}{n}\sum_{i=1}^nP_i macro_P=n1i=1nPi
    m a c r o _ R = 1 n ∑ i = 1 n R i macro\_R=\frac{1}{n}\sum_{i=1}^nR_i macro_R=n1i=1nRi
    m a c r o _ F 1 = 2 × m a c r o _ P × m a c r o _ R m a c r o _ P + m a c r o _ R macro\_F1=\frac{2\times macro\_P \times macro\_R}{macro\_P + macro\_R} macro_F1=macro_P+macro_R2×macro_P×macro_R

  • micro-F1: 先计算混淆矩阵的 4 种元素的平均值,即 T P ‾ \overline{TP} TP, F P ‾ \overline{FP} FP, T N ‾ \overline{TN} TN, F N ‾ \overline{FN} FN,然后计算 micro-P 和 micro-R,从而计算出 micro-F1
    m i c r o _ P = T P ‾ T P ‾ + F P ‾ micro\_P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}} micro_P=TP+FPTP
    m i c r o _ R = T P ‾ T P ‾ + F N ‾ micro\_R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}} micro_R=TP+FNTP
    m i c r o _ F 1 = 2 × m i c r o _ P × m i c r o _ R m i c r o _ P + m i c r o _ R micro\_F1=\frac{2\times micro\_P \times micro\_R}{micro\_P + micro\_R} micro_F1=micro_P+micro_R2×micro_P×micro_R

  • 两者的区别
    对于多分类任务,如果这个数据集中各个类的分布不平衡的话,更建议使用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 为:
    m i c r o _ F 1 = 1 + 10 + 1 + 1 2 + 100 + 2 + 2 = 0.123 micro\_F1=\frac{1+10+1+1}{2+100+2+2}=0.123 micro_F1=2+100+2+21+10+1+1=0.123
    这个指标考虑了各个样本的样本数,因而更为合理。
    我们也可以给 macro-P 的计算进行加权,权重为其相对的样本大小。比如上述例子中,四类的权重分别是: 2/106, 100/106, 2/106, 2/106,加权平均得到
    0.5 ∗ 2 / 106 + 0.1 ∗ 100 / 106 + 0.5 ∗ 2 / 106 + 0.5 ∗ 2 / 106 = 0.123 0.5*2/106+0.1*100/106+0.5*2/106+0.5*2/106=0.123 0.52/106+0.1100/106+0.52/106+0.52/106=0.123
    可以看出,这个公式与 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)所示,计算方式如下:
F P R = F P T N + F P FPR=\frac{FP}{TN+FP} FPR=TN+FPFP
T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP

  • FPR: 所有真实负样本被预测错误的比例
  • TPR: 所有真实正样本被预测正确的比例,实际上是查全率

在这里插入图片描述

点 (0,1) 对应的是预测准确率 100% 的情况,对角线对应随机猜测的模型。如果排序质量是最优的话,即把所有正样本排在所有负样本前面,则 ROC 曲线对应 (0,0)-(0,1)-(1,1) 这样一条折线,此时 AUC=1

实际中通常无法画出左边那样光滑的曲线,而是像右边图(b)那样用有限个坐标来画出近似的图。画图过程如下:

  1. 给定 m + m^+ m+ 个正例和 m − m^- m 反例,根据预测结果对样本进行排序
  2. 把分类阈值设为最大,即把所有样本都预测为反例,此时 TPR 和 FPR 都是 0,对应坐标 (0,0)
  3. 然后降低阈值,依次把每个样本划分为正例,计算此时的 TPR 和 FPR。假设上一个坐标是 (x,y),若当前是真正例,则新的坐标为 ( x , y + 1 m + ) (x,y+\frac{1}{m^+}) (x,y+m+1),若当前是假正例,则新的坐标为 ( x + 1 m − , y ) (x+\frac{1}{m^-},y) (x+m1,y)
  4. 直到阈值最小,把所有样本都划分为正例,此时 TPR 和 FPR 都是 1,对应坐标 (1,1)

关于上述第 3 步的解释,假设上一步阈值设置在第 k 个样本与第 k+1 样本之间,即把前 k 个样本预测为正例,剩下的样本预测为反例。假设前面 k 个样本中有 a 个真实正样本,b 个真实负样本,显然 a+b=k。根据 TPR 和 FPR 的计算公式,可得此时:
F P R = b m − , T P R = a m + FPR=\frac{b}{m^-}, \qquad TPR=\frac{a}{m^+} FPR=mb,TPR=m+a
现在考虑把阈值往下调,使得前 k+1 个样本被分为正例,剩下的分为反例。此时有两种情况:
(1) 第 k+1 个样本是正例,则此时的 a’=a+1, b’=b,即 FPR 不变,但是 TPR 增加了 1 m + \frac{1}{m^+} m+1
(2) 第 k+1 个样本是反例,则此时的 a’=a, b’=b+1,即 TPR 不变,但是 FPR 增加了 1 m − \frac{1}{m^-} m1

3.2 AUC 计算公式

AUC 的计算公式有以下两种:

  • 按上面的方法,得到一系列离散的点 { ( x 1 , y 1 ) , ⋯   , ( x m , y m ) } \{(x_1,y_1),\cdots,(x_m,y_m)\} {(x1,y1),,(xm,ym)},则 ROC 曲线下的面积近似为:
    A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)
    公式解释:
    从 3.1 的分析,我们已经知道, ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1) ( x i , y i ) (x_i,y_i) (xi,yi) 要么是横坐标相等,要么是纵坐标相等。
    • x i + 1 = x i x_{i+1}=x_i xi+1=xi,则 ( x i , y i ) (x_i,y_i) (xi,yi) ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1) 是垂直于 x 轴的线段,其下方的面积为 0,按上述公式同样得到面积为 0;
    • y i + 1 = y i y_{i+1}=y_i yi+1=yi,则 ( x i , y i ) (x_i,y_i) (xi,yi) ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1) 是平行于 x 轴的线段,其下方是一个矩形,长为 x i + 1 − x i x_{i+1}-x_i xi+1xi,高为 y i y_i yi (也等于 y i + 1 y_{i+1} yi+1),可写成 1 / 2 ⋅ ( y i + y i + 1 ) 1/2\cdot(y_i+y_{i+1}) 1/2(yi+yi+1),与公式符合

一般化来看,假如 ( x i , y i ) (x_i,y_i) (xi,yi) ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1) 这段线段不是平行也不是垂直于 x 轴,上述公式也是成立的。这段线段下方的面积是一个梯形,上底是 y i y_i yi,下底是 y i + 1 y_{i+1} yi+1,高为 x i + 1 − x i x_{i+1}-x_i xi+1xi,根据梯形计算公式可以得到上面的公式。

  • AUC 是衡量排序质量的指标,可以计算排序损失,再计算 AUC。假设正例集合 D + D^+ D+ 里有 m + m^+ m+ 个正例样本,反例集合 D − D^- D 里有 m − m^- m 个反例样本,则排序损失为:
    l r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( I ( f ( x + ) &lt; f ( x − ) ) + 1 2 I ( f ( x + ) = f ( x − ) ) ) l_{rank}=\frac{1}{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D^-}\Big (I\big (f(x^+)&lt;f(x^-) \big )+\frac{1}{2}I\big (f(x^+)=f(x^-)\big )\Big ) lrank=m+m1x+D+xD(I(f(x+)<f(x))+21I(f(x+)=f(x)))
    即统计每一对正例、反例组合 ( x + , x − ) (x^+,x^-) (x+,x),若正例的预测值小于反例,则记一个罚分,若两者的预测值相等,则记半个罚分。得到排序损失之后,AUC 的计算如下:
    A U C = 1 − l r a n k AUC=1-l_{rank} AUC=1lrank
    公式解释:
    对于每个正例样本 x + x^+ x+,下列式子其实是统计了在排序中排在 x + x^+ x+ 前面的反例个数:
    b e f o r e ( x + ) = ∑ x − ∈ D − ( I ( f ( x + ) &lt; f ( x − ) ) + 1 2 I ( f ( x + ) = f ( x − ) ) ) before(x^+) = \sum_{x^-\in D^-}\Big (I\big (f(x^+)&lt;f(x^-) \big )+\frac{1}{2}I\big (f(x^+)=f(x^-)\big )\Big ) before(x+)=xD(I(f(x+)<f(x))+21I(f(x+)=f(x)))
    对于预测值与其相等的反例样本,有 50% 的可能会排在其前面,因此乘以 1/2。我们如果把 l r a n k l_{rank} lrank 的公式改写一下,得到:
    l r a n k = ∑ x + ∈ D + 1 m + b e f o r e ( x + ) m − l_{rank}=\sum_{x^+\in D^+} \frac{1}{m^+} \frac{before(x^+)}{m^-} lrank=x+D+m+1mbefore(x+)
    而根据 FPR 的公式, b e f o r e ( x + ) m − \frac{before(x^+)}{m^-} mbefore(x+) 实际上就是 x + x^+ x+ 这个样本点在 ROC 曲线中对应坐标的横坐标。而 1 / m + 1/m^+ 1/m+ x + x^+ x+ 与上一个样本点的纵坐标之差 Δ y \Delta y Δy。因此
    l r a n k = ∑ x + ∈ D + x ⋅ Δ y l_{rank}=\sum_{x^+\in D^+}x\cdot \Delta y lrank=x+D+xΔy
    可以看出这计算的其实是 ROC 曲线左边的面积,或者说 ROC 曲线上方的面积,即图(b)中空白部分的面积。为什么这个公式中只计算正样本点呢?因为从 3.1 中我们知道,对于那些负样本点,其纵坐标与上一个样本一样,即组成的线段是垂直与 y 轴的,此时在其左边的面积为 0,因而不用计算。由于图(b) 中正方形的面积是 1,因此 A U C + l r a n k = 1 AUC+l_{rank}=1 AUC+lrank=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值