1.3 ROC和AUC
ROC的英文全称为Receiver Operating Characteristic Curve(受试者操作特征曲线)。这个概念源于20世纪70年代的信号检测理论,后被引入机器学习领域,像P-R曲线一样被用来评估一个模型在不同参数下的全局效果。ROC的横轴和纵轴代表的含义与P-R曲线不同,横轴代表假真值率(False Positive Rate,FPR),纵轴代表真真值率(True Positive Rate,TPR)[2,3]。
FPR=FP/(TN+FP),即误判为正样本的负样本数量和全部负样本数量之比。
TPR=TP/(TP+FN),即判断正确的正样本数量和全部正样本数量之比。
ROC的绘制方法和P-R曲线类似,我们也需要通过不断地调整分类阈值来计算每个分类阈值对应的假真值率(横轴)和真真值率(纵轴),然后在坐标平面中描点连线,最后就得到了完整的ROC。图1.3所示橙色曲线是ROC,当分类阈值从1到0变化时,FPR和TPR的值都逐渐增大;当分类阈值为1时,所有样本都被分类为负样本,即FPR和TPR都为0;当分类阈值为0时,所有样本都被分类为正样本,即FPR和TPR都为1。
图1.3 ROC
那么AUC又是什么呢?
AUC的英文全称为Area Under Curve(曲线下面积),即ROC与其下坐标轴围成的面积,图1.3中“area=0.79”即AUC的值。它能够量化地反映一个模型的整体性能。假设分类器的输出是样本属于正类的分数,则AUC的意义为,任取一对(正,负)样本,正样本分数大于负样本分数的概率。
AUC既然是ROC与其下坐标轴围成的面积,显然这个面积的数值不会大于1。又因为ROC一般都处于这条直线的上方,所以AUC的取值范围一般为0.5~1。它的取值代表的含义如下。
1)AUC = 1,理想分类器,即在任何参数情况下都能做出百分之百正确的预测结果,但是现实中一般不存在理想分类器。
2)0.5 < AUC < 1,优于随机猜测的分类器,也是我们一般实际应用的模型,经过合理的优化可以直接应用。
3)AUC = 0.5,等于随机猜测,模型没有预测价值。
4)AUC < 0.5比随机猜测效果还差,但是反向预测也存在一定的价值,实际生产中常因误操作产生这种结果。
使用AUC作为评价标准是因为很多时候ROC并不能清晰地说明哪个分类器的效果更好,而作为一个数值,AUC越大表示分类器效果越好。
那么AUC如何计算呢?主要有两种方法。
(1)简单拼接法
AUC为ROC与其下坐标轴围成的面积,可以将阴影面积分段累加,总面积为每个小的梯形面积之和,计算公式如下:
(1-6)
其中与是横坐标(FPR),与是纵坐标(TPR),代表实验的分类阈值个数。实际上就是小梯形的高,就是小梯形的上底与下底之和,两者相乘之后再乘以1/2就是小梯形的面积,多次实验计算得到的小梯形面积累加就得到了整个ROC下的面积,即AUC。
(2)概率统计法
根据AUC的概念,只要能统计出任意正样本分数大于负样本分数的概率,就可以知道AUC的值。我们可以对个正样本和 个负样本建立一个尺寸为的矩阵,然后统计矩阵中正样本分数比负样本分数高的数量,那么有
(1-7)
这种计算方法的时间复杂度较高,但是结果更精准。
以上就是AUC的计算方法。
既然P-R曲线和ROC都能反映模型的准召率关系以及模型的整体效果,那么它们之间有什么关联和区别呢?
其实P-R曲线和ROC本质上反映的都是召回率和精确率之间的关系。在P-R曲线中,随着正确识别的正样本(TP)增加,被误判的正样本(FN)会不断减少,但是被误判的负样本(FP)就会增加,也就是召回率增加,精确率反而会下降。
ROC相对P-R曲线有一个显著的优点,那就是ROC不容易受到测试集样本分布的影响,而P-R曲线容易随着样本分布的变化发生较大的变动。
那么在多分类场景中,ROC如何应用呢?
假设类别数量为,我们可以为个类别分别绘制条ROC。
例如,假设有3个分别名为、和的类,可以绘制一条针对{}和{,}的ROC、一条针对{}和{,}的ROC,以及一条针对{}和{,}的ROC。分别计算AUC,判断针对特定类别的分类效果[2]。
对于二分类的ROC和P-R曲线对比,最经典的案例莫过于2006年的论文An Introduction to ROC Analysis[3]中介绍的对比实验。
图1.4(a)和图1.4(b)是原始样本的ROC和P-R曲线,图1.4(c)和图1.4(d)是将负样本数量增加到原来的10倍后的ROC和P-R曲线[2]。其中,每幅图的实线和虚线分别代表两种不同的数据集。
图1.4 ROC和P-R曲线对比
1)对比图1.4(a)和图1.4(c)的ROC,负样本数量增加到原来的10倍后,两种数据集的ROC几乎没有变化。因为ROC的纵轴是TPR,横轴是FPR,当我们计算比值时,TPR几乎不会发生变化,因为正样本数量没变,即TPR计算公式的分母不变,分子有可能因为负样本增加而略微减小;对于FPR,负样本增加会直接导致它的分母变大,但是这个时候错分为正样本的负样本数量也会随之增加,也就是分子也会随之增加,只不过增幅不会比分母更大,整体来看TPR和FPR都会略微减小,ROC变化不大。因此,ROC可以避免正负样本不均衡带来的干扰,能更加有效地评估模型本身的效果[3]。
2)对比图1.4(b)和图1.4(d)的P-R曲线,我们可以看到负样本增加到原来的10倍后,P-R曲线变化是很明显的。因为P-R曲线的纵轴是精确率(Precision),横轴是召回率(Recall),负样本如果增加到原来的10倍,在召回率不变的情况下,模型必然会错误召回更多的负样本,所以精确率会大幅下降。因此P-R曲线对样本的分布比较敏感,不适合作为模型效果整体评估的工具。也正因为这一点,我们可以用它来检测样本是否均衡[3]。
综上所述,我们可以得到P-R曲线和ROC的一些应用场景,如广告排序和垃圾邮件识别等,在这些场景中,正样本的数量往往是负样本数量的1/1000,甚至1/10000。这时候针对不同的测试集,P-R曲线的变化就会非常明显,而ROC则能够更加稳定地反映模型本身的好坏。由于P-R曲线对正样本关注度比较高,对于严格的异常检测的场景,P-R曲线也是非常不错的选择。
需要注意的是,选择P-R曲线还是ROC是由实际问题确定的。如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能。