[机器学习与深度学习] - No.3 机器学习中的性能度量指标

机器学习中的性能度量指标

对机器学习、深度学习中的学习器的泛化性能进行评估,不仅仅需要有效可行的实验方法,还需要有衡量模型泛化能力的评价标准。这就是性能度量指标。在回归任务中,我们使用均方误差来衡量性能;在分类任务中,我们使用错误率、精度、查全率、查准率、F1度量、P-R曲线、ROC-AUC等指标来衡量模型。本文重点记录了分类任务的度量指标。

我们假设在预测任务中:给定样例集合 D = ( x 1 , x 1 ) , ( x 2 , y 2 ) , . . . . ( x m , y m ) D = {(x_1,x_1),(x_2,y_2),....(x_m,y_m)} ,其中 y i y_i x i x_i 真实标记, f ( x i ) f(x_i) x i x_i​ 的预测结果。

回归任务:

在回归任务中,我们使用均方误差来衡量模型性能。均方误差定义如下:
E ( f ; D ) = 1 m i = 1 n ( f ( x i ) y i ) 2 E(f;D) = \frac{1}{m}\sum_{i=1}^n(f(x_i)-y_i)^2

分类任务:

1. 错误率和精度:

精确度和错误率是分类中最常用的两种性能度量,既适用于二分类,也适用于多任务分类。错误率就是预测错误的测试样本占整体样本的比率。精确度就是预测正确的测试样本占整体样本的比率。针对我们之前提到的样例D,分类任务的错误率为:
E ( f ; D ) = 1 m i = 1 n I ( f ( x i ) y i ) E(f;D) = \frac{1}{m}\sum_{i=1}^nI(f(x_i) \neq y_i)
其中 I ( x ) I(x) 称为指示函数,在这里取值如下:
{ 1 , x = t r u e 0 , x = f a l s e \left\{\begin{array}{cc} 1, & x = true\\ 0, & x = false \end{array} \right.
精确度定义为:
a c c ( f ; D ) = 1 m i = 1 n I ( f ( x i ) = y i ) = 1 E ( f ; D ) acc(f;D) = \frac{1}{m}\sum_{i=1}^nI(f(x_i) = y_i) \\ = 1 - E(f;D)

2. 查全率、查准率

查全率,查准率在信息检索中是常用的度量指标。查全率又称召回率(recall),简单的来说就是正确的信息有多少被模型检索出来了;查准率又称为准确率,即模型检索出来的结果有多少是真正正确的。

在二分类问题中,我们将样例根据其真实类别与学习模型预测类别的组合,划分为true positive,false positive,true negative,false negative。

名称 解释
真正例 (true positive) TP 真实的正例被模型识别为正例
假正例 (false positive) FP 真正的反例被模型识别为正例
真反例 (true negative) TN 真正的反例被识别为反例
假反例 (false negative) FN 真正的正例被识别为反例

我们常使用混淆矩阵(confusion matrix)来描述上述的关系:

在这里插入图片描述

查准率(Precision)定义为:
P = T P T P + F P P = \frac{TP}{TP+FP}
查准率(Recall)定义为:
R = T P T P + F N R = \frac{TP}{TP + FN}
查准率和查全率是一对矛盾的变量。通常来说,查准率较高的时候,查全率往往偏低。查全率较高的时候,查准率往往较低。(可以这样理解,如果我们的模型把所有样本都标记为正例,那么查全率为100%,但是查准率比较低。反之,如果我们的模型十分的谨慎,则可能造成查准率特别高,但是查全率比较低的情况)

3. P-R曲线和F1度量

P-R曲线通常被用来直观地显示出学习器在样本总体上的查全率,查准率。P-R曲线的定义如下:我们根据模型对样本的预测值进行排序,排在前边的是模型认为“最可能的”正例(即置信度高的),排在最后的是模型认为“最不可能的”正例。我们设置不同的阈值,针对每一个阈值,计算模型的准确率和召回率。然后将召回率作为横轴,准确率作为纵轴,根据坐标绘制计算P-R曲线。

例如:我们将模型预测的置信度进行从高到低排序,然后分别按照0.5,0.6,0.7的阈值,来判断一个样本是否是正样本,并计算准确率和召回率

序号 真实标签 Hyp(0.5) Hyp(0.6) Hyp(0.7) Score
1 0.9998
2 0.9438
3 0.8992
4 0.8692
5 0.8095
6 0.7238
7 0.6752
8 0.5383
9 0.4102
10 0.4053

计算结果:

阈值 召回率 准确率 P-R曲线坐标
0.5 1 7/8 = 0.875 (1,0.875)
0.6 1 1 (1,1)
0.7 6/7 = 0.857 1 (0.857,1)

根据坐标,绘制P-R曲线。常见P-R曲线如下所示:
在这里插入图片描述
在P-R曲线中,若一个模型的P-R曲线被另外一个模型的曲线完全的“包住”,那么我们说后者优于前者。例如图中的A曲线完全包裹了C曲线,所以模型A性能优于模型C。但是,一旦P-R曲线发生交叉,无法判断两者的性能,例如图中的A和B。

如果A的P-R曲线和B的曲线交叉,并且我们还希望比较两个模型的性能,我们通常使用“平衡点”(Break-Even Point,简称BEP)。BEP是P-R曲线和直线 y = x y=x 的交点,即“查全率” = “查准率”时候的取值。

更常用的综合考虑查准率和查全率的指标还有F1度量,F1度量是查全率R和查准率P的算术平均值。
1 F 1 = 1 2 ( 1 P + 1 R ) \frac{1}{F1} = \frac{1}{2}* (\frac{1}{P} + \frac{1}{R})

F 1 = 2 P R P + R F1 = \frac {2*P*R}{P+R}

4. ROC与AUC

ROC曲线(Receiver Operating Characteristic) 和之前提到的P-R曲线有相同之处。ROC曲线也是根据模型对样本的预测值进行排序,排在前边的是模型认为“最可能的”正例(即置信度高的),排在最后的是模型认为“最不可能的”正例。我们设置不同的阈值,计算不同的度量指标。在P-R曲线中,我们使用查全率作为横坐标,使用查准率作为纵坐标。在ROC中,我们使用“真正例率(TPR)“作为纵轴,使用”假正例率(FPR)“作为横轴,两个指标的定义如下:
T P R = T P T P + F N TPR = \frac{TP}{TP+FN}

F P R = F P T N + F P FPR=\frac{FP}{TN+FP}
ROC曲线的一般图像如下:
在这里插入图片描述
与PR曲线比较相同。当一个模型A的ROC曲线被另外一个模型B完全的“包住”地时候,后者的性能要优于前者。当两个曲线交叉地时候,我们需要引入AUC指标才能比较两个模型的性能。AUC(Area Under ROC Curve) 是什么呢?顾名思义,AUC就是ROC曲线下的面积。AUC值越大,模型的性能就越好。

在前面我们介绍了P-R曲线,这是一个综合考虑查全率和查准率的度量指标。那么为什么我们还要定义一个ROC曲线呢?考虑下边一种情况。假设我们将测试集中的负样本增加10倍以后,PR曲线和ROC曲线的变化如下所示:
在这里插入图片描述
可以看出,当我们的数据集中的负样本增加十倍以后,ROC曲线的变化是不大的。但是P-R曲线发生了很大的变化。

分析:对于PR曲线来说,当样本中的负样本增加10倍以后,召回率(Recall)不变的时候,模型肯定将很多的反例错误的标记为正例,这样模型的查准率就会降低很多。所以PR曲线变化很大。

对于ROC曲线来说,横轴为假正例率,纵轴为真正例率。假如样本中的负样本增加10倍以后,当纵轴的真正例率(召回率)不变的时候,模型肯定将很多的反例错误的标记为正例,即FP的数值会变大。因此,FPR的分子(FP)和分母(TN+FP,即负样本个数)都增多了,所以FPR数值变化相对查准率来看,变化不大。

PR曲线比ROC曲线更加关注正样本,而ROC则兼顾了两者。当我们希望查看模型在特定的数据集上的表现,PR曲线更能直观地反映其性能。

当我们常常选择不同的测试集的时候,P-R曲线的变化就会很大,而ROC曲线则能更加稳定地反映模型本身的好坏。ROC曲线的应用场景更加广泛。


参考资料:

[1]《机器学习》- 周志华

[2] P-R曲线及与ROC曲线区别

[3] ROC曲线和PR(Precision-Recall)曲线

发布了118 篇原创文章 · 获赞 140 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/tjuyanming/article/details/86623793
今日推荐