AUC是一种衡量机器学习模型分类性能的重要且非常常用的指标,其只能用于二分类的情况.
AUC的本质含义反映的是对于任意一对正负例样本,模型将正样本预测为正例的可能性 大于 将负例预测为正例的可能性的 概率( :-) 没办法这句话就是这么绕, rap~
).
AUC作为数值,那么到底是怎么来的?怎么理解它的意义?
在真正接触AUC之前,还需要了解两个概念, 分别是混淆矩阵(confusion matrix) 和 ROC曲线.
混淆矩阵:
可以看出混淆矩阵由四个值构成:
- TP : 真实类别为1,且预测结果为1的样本个数,预测正确.
- FP : 真实类别为0,且预测结果为1的样本个数,预测错误.
- FN : 真实类别为1,且预测结果为0的样本个数,预测错误.
- TN : 真实类别为0,且预测结果为0的样本个数,预测正确.
由混淆矩阵可以计算得到ROC曲线的关键参数:TPR(真正例率) 和 FPR(假正例率).
- 对TPR最通俗易懂的理解即将正例预测为
正例
的比例
- 对FPR最通俗易懂的理解即将负例预测为
正例
的比例(注意: TPR和FPR分子上表示的都是模型将样本预测为正例的情况,不过一个是预测正确一个是预测错误)
理解到这个程度就可以接触ROC曲线了
可以从图上面看出,FPR和TPR分别是ROC曲线的横坐标和纵坐标.对于ROC曲线有四个点需要单独拎出来理解,这对理解AUC也是很有帮助的.它们分别是:
- [0, 0] : FPR,TPR均为0.根据式(1)(2)可以得到即TP=FP=0,其含义为模型将所有样本均预测为负例.
- [0, 1] : FPR=0,TPR=1. 根据式(1)(2)可以得到即FP=FN=0,其含义为模型做出了没有任何错误的完美预测(由此可以看出ROC曲线越是向上凸(贴近上边界),曲线上的点的纵坐标(TPR)越是大,代表模型的性能越好).
- [1, 0] : FPR =1,TPR=0.根据式(1)(2)可以得到即TP=TN=0,其含义为模型做出的预测全部错误(由此可以看出,ROC曲线越是贴近下边界(下凹),那么模型的性能越是差).
- [1, 1] : FPR =1,TPR=1.根据式(1)(2)可以得到即TN=FN=0,其意义为模型将所有样本均预测为正例.
此外,对于图ROC curve中的三根曲线的理解:
- 黑线: 几何含义即ROC图的对角线, 数值含义即TPR = FPR,物理含义即对于任意抽取的样本,模型将其中正例预测为正例的概率和将负例预测为正例的概率是相等的.这也就意味着和随机分类的性能一样.
- 红蓝色线: 通常来讲, 我们的机器学习模型要优于随机分类器,因此我们经常看到的曲线往往都是像蓝色线和红色线一样的ROC曲线.它们相比黑线是有明显上凸的,同样的横坐标(FPR)下,红蓝线纵坐标(TPR)是大于黑线的,即代表模型将正例预测为正例的概率要大于将负例预测为正例的概率.同理可以看出蓝线模型由于红线模型.
如果要将上述的标准进行定量评估,就延伸得到了AUC, AUC即ROC曲线下方与坐标轴围成的面积大小
AUC(Area under the ROC curve)
AUC更直观地反应了ROC曲线向我们表达的模型分类能力.其数值大小(越大越好)代表了模型的性能优劣.说到这里,自然也就能够明白开篇关于AUC物理意义的阐述了,重申一遍即:AUC的本质含义反映的是对于任意一对正负例样本,模型将正样本预测为正例的可能性 大于 将负例预测为正例的可能性的 概率(例如: 当AUC = 0.5, ROC曲线为黑线时, 模型将一对正负例样本中的正样本预测为正例的概率为0.5,将负样本预测为正例的概率也为0.5,等效于随机分类预测).
- AUC = 1,代表完美分类器
- 0.5 < AUC < 1,优于随机分类器
- 0 < AUC < 0.5,差于随机分类器
如何绘制ROC曲线?
绘制曲线,必不可少的就是拿到曲线上的点,也就是需要get到每个点的TPR和FPR数值.
这里借用在知乎上看到的例子啦:
Case_1:
对于像SVM这样的硬分类器,分类得到的结果都是已经标记完成的二分类数值(0/1).就长下面这个样子:
由此很容易得到混淆矩阵Confusion Matrix:
![Confusion Matrix](https://upload-images.jianshu.io/upload_images/13777601-dce9d6d3474f6df2.png?
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
已经拿到TP/FP/TN/FN,那么可以计算出TPR = 3/4, FPR = 2/4.从而可以绘制得到ROC曲线:
Case_2:
对于逻辑回归LR, 还有常用的xgb, lgb而言,分类的预测结果都是一个分类概率值.比如长这个样子:
这种情况,看起来就一脸懵逼,因为完全没有预测好的标签. 这个时候就需要我们先将预测结果进行排序,逐步调整分类的阈值, 依次将样本划为正例,然后计算TPR和FPR的数值进行绘图.
步骤:
threshold = 0.9, 即只有第一个样本被划分为正例,此时TPR = 1/4, FPR = 0.
threshold = 0.8, 此时TPR = 2/4, FPR = 0.
threshold = 0.7, 此时TPR = 2/4, FPR = 1/4.
......
threshold = 0.1, 此时TPR = 1, FPR = 1.
最后绘图即可.
说了这么多, 最后强调一下AUC作为评价指标的优势:
由于AUC是与TPR核FPR密切相关的,而TPR和FPR分别从正例,负例的角度上去衡量了模型的分类能力(具有跟精准率和召回率一样的能在样本极端不平衡的情况下进行有效的衡量优势),因此在样本极端不平衡的情况下,AUC依然能够做出合理的评价. :-)
AUC的计算方式:
- 最为直观的方式当然是绘制出ROC曲线,然后计算出曲线下包绕的面积,面积值即AUC.
2.直接计算:假设总共有(m+n)个样本,其中正样本m个,负样本n个,总共有mn个样本对,计数,正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,累加计数,然后除以(mn)就是AUC的值