导语

最近一直在思考如何直观理解AUC,查了维基百科的以及网上的讲解描述,感觉仍然很难把这个概念表述得通俗易懂,直到昨天周会后拿笔在纸上画了画,感觉似乎找到了一种比较有意思的理解方法,下面就请各位看官容我慢慢道来。首先简单介绍一下什么是AUC。

根据维基百科的描述,AUC(Area under the Curve of ROC)是ROC曲线下方的面积,是判断二分类预测模型优劣的标准。ROC(receiver operating characteristic curve)接收者操作特征曲线,是由二战中的电子工程师和雷达工程师发明用来侦测战场上敌军载具(飞机、船舰)的指标,属于信号检测理论。ROC曲线的横坐标是伪阳性率(也叫假正类率,False Positive Rate),纵坐标是真阳性率(真正类率,True Positive Rate),相应的还有真阴性率(真负类率,True Negative Rate)和伪阴性率(假负类率,False Negative Rate)。这四类的计算方法如下:

  • 伪阳性率(FPR) 
    判定为正例却不是真正例的概率
  • 真阳性率(TPR) 
    判定为正例也是真正例的概率
  • 伪阴性率(FNR) 
    判定为负例却不是真负例的概率
  • 真阴性率(TNR) 
    判定为负例也是真负例的概率

x轴与y轴的值域都是[0, 1],随着判定正例的阈值不断增加,我们可以得到一组(x, y)的点,相连便作出了ROC曲线,示例图如下: 

图中的虚线相当于随机预测的结果。不难看出,随着FPR的上升,ROC曲线从原点(0, 0)出发,最终都会落到(1, 1)点。ROC便是其右下方的曲线面积。下图展现了三种AUC的值: 

AUC对于每一个做机器学习的人来说一定不陌生,它是衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。其他评价指标有精确度、准确率、召回率,而AUC比这三者更为常用。因为一般在分类模型中,预测结果都是以概率的形式表现,如果要计算准确率,通常都会手动设置一个阈值来将对应的概率转化成类别,这个阈值也就很大程度上影响了模型准确率的计算。我们不妨举一个极端的例子:一个二类分类问题一共10个样本,其中9个样本为正例,1个样本为负例,在全部判正的情况下准确率将高达90%,而这并不是我们希望的结果,尤其是在这个负例样本得分还是最高的情况下,模型的性能本应极差,从准确率上看却适得其反。而AUC能很好描述模型整体性能的高低。这种情况下,模型的AUC值将等于0(当然,通过取反可以解决小于50%的情况,不过这是另一回事了)。

那么,如何理解这个ROC的曲线面积AUC的数学意义呢?


优雅理解法

我想,既然是计算面积,能否像时间速度曲线一样,套用积分计算路程的思路去理解呢?这个问题思考了许久,始终没能把真阳性率与速度、伪阳性率与时间挂上钩。众所周知,时间速度曲线图如下: 

图中阴影部分的面积便是路程,因为上图x轴上的任意两值相减得到的时间差是有直观意义的。相比之下,ROC中假阳性率相减则并没有如此直观的概念。ROC图从直观上看能得出两个结论:曲线点越接近右下角表示当前阈值预测正例出错的概率越高,准确性较低;曲线点越接近左上角则代表预测正例出错的概率越低,准确性较高。如下图: 

对比之后发现,时间速度曲线是连续的,而ROC曲线是由一组离散的点组成,因为在一般情况下,分类的样本空间有限。其点总数其实就是样本总数,y轴最小步长为1/样本正例数,x轴的最小步长则是1/样本负例数。既然曲线点可枚举,那么我们就可以多举举栗子。

现在假设有一个训练好的二分类器对10个正负样本(正例5个,负例5个)预测,得分按高到低排序得到的最好预测结果为[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],即5个正例均排在5个负例前面,正例排在负例前面的概率为100%。然后绘制其ROC曲线,由于是10个样本,除开原点我们需要描10个点,如下: 

描点方式按照样本预测结果的得分高低从左至右开始遍历。从原点开始,每遇到1便向y轴正方向移动y轴最小步长1个单位,这里是1/5=0.2;每遇到0则向x轴正方向移动x轴最小步长1个单位,这里也是0.2。不难看出,上图的AUC等于1,印证了正例排在负例前面的概率的确为100%。

我们不妨再举个栗子,预测结果序列为[1, 1, 1, 1, 0, 1, 0, 0, 0, 0]。 

计算上图的AUC为0.96与计算正例与排在负例前面的概率0.8 × 1 + 0.2 × 0.8 = 0.96相等,而左上角阴影部分的面积则是负例排在正例前面的概率0.2 × 0.2 = 0.04。

再看个栗子,预测结果序列为[1, 1, 1, 0, 1, 0, 1, 0, 0, 0]。 

计算上图的AUC为0.88与计算正例与排在负例前面的概率0.6 × 1 + 0.2 × 0.8 + 0.2 × 0.6 = 0.88相等,左上角阴影部分的面积是负例排在正例前面的概率0.2 × 0.2 × 3 = 0.12。


结语

至此,我们便可直观理解ROC曲线图上面积的含义了,这相当于给定最小时间单位下分段递增匀速运动时间速度曲线的路程积分问题。TPR相当于速度,每段“时间”的起始TPR越高,这段“时间”内正例排在负例前面的概率也就越大,而这个概率就是路程;FPR则相当于时间,这个可以这么理解:每次旅行总会结束,而FPR也总会到达100%(x值为1),FPR每向x轴正方向移动一步,相当于离“旅行结束”又近了一步。这样,一个积分概率,一个积分路程,大概就能近似理解了。

如何直观理解AUC评价指标?相关推荐

  1. 梯度的直观理解_关于梯度、旋度和散度的直观理解

    关于梯度.旋度和散度的直观理解 散度为零,说明是无源场:散度不为零时,则说明是有源场(有正源或负源) 若你的场是一个流速场,则该场的散度是该流体在某一点单位时间流出单位体积的净流量. 如果在某点,某场 ...

  2. BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    https://www.toutiao.com/a6690831921246634504/ 2019-05-14 18:47:24 本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积 ...

  3. RNN循环神经网络的直观理解:基于TensorFlow的简单RNN例子

    RNN 直观理解 一个非常棒的RNN入门Anyone Can learn To Code LSTM-RNN in Python(Part 1: RNN) 基于此文章,本文给出我自己的一些愚见 基于此文 ...

  4. 3.7 注意力模型直观理解-深度学习第五课《序列模型》-Stanford吴恩达教授

    注意力模型直观理解 (Attention Model Intuition) 在本周大部分时间中,你都在使用这个编码解码的构架(a Encoder-Decoder architecture)来完成机器翻 ...

  5. 3.10 直观理解反向传播-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.9 神经网络的梯度下降法 回到目录 3.11 随机初始化 直观理解反向传播 (Backpropagation Intuition (Optional)) 这个视频主要是推 ...

  6. SVM支持向量机【直观理解】

    转载文章:https://baijiahao.baidu.com/s?id=1607469282626953830&wfr=spider&for=pc 如果你曾经使用机器学习解决分类问 ...

  7. 深度学习与计算机视觉(四)反向传播及其直观理解

    四.反向传播及其直观理解 4.1 引言 问题描述和动机: 大家都知道,其实我们就是在给定的图像像素向量x和对应的函数f(x)f(x)f(x),然后我们希望能够计算fff在x上的梯度∇f(x)" ...

  8. 乘基取整法是什么_十进制小数转二进制小数乘2取整法的直观理解

    乘2取整法介绍 举例:0.35转换成二进制 0.35×2=0.7 ······ 取0(d1) 0.7×2=1.4 ······ 取1(d2) 0.4×2=0.8 ······ 取0(d3) 0.8×2 ...

  9. 梯度的直观理解_BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积层反向传播算法的理解中,越发觉得之前对于BP反向传播算法的理解是不到位的.小白近日觉得,对于深度神经网络,"反向传播&qu ...

最新文章

  1. nefu 628 Garden visiting
  2. shp与json互转(转载)
  3. Python程序每日一练习
  4. Application Constants
  5. vue面试有哪些插件_vue 前端框架面试问题汇总
  6. 学习《ACM 程序设计》笔记--STL
  7. SuperMap.IS.AjaxScript之常用功能实现研究及使用
  8. DIAView 嵌入视频监控(海康威视)
  9. Android pk8/x509生成keystore
  10. Windows的Git Bash使用tree命令
  11. Spring的两种定时器
  12. 小白理解transformer解析博客
  13. H3C认证网络工程师
  14. orcale中like用法详解
  15. 干货!ERP在企业财务管理中的应用问题分析与解决办法
  16. 应届生,你为什么那么想做产品经理
  17. AutoMapper源码解析
  18. java中向上的尖括号是什么,什么lt; Tgt; (尖括号)在Java中是什么意思?
  19. Qt平台编写的五子棋单机版
  20. vuecli4安装axios以及简单使用

热门文章

  1. 爬虫实战2(上):爬取豆瓣影评
  2. 一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。
  3. DDOS防御的8种方法
  4. 电源设计经验谈1-9
  5. 深度学习:欠拟合问题的几种解决方案
  6. html设置文本颜色三种写法,html字体颜色设置方法
  7. 老毛桃u盘重装win7教程
  8. 叽歪网创始人李卓桓:叽歪的微信息模式
  9. nodejs实现分解质因数的算法
  10. SIM7600CE GSM/UMTS/LTE天线设计指南