一、roc曲线

1.roc曲线:接收者操作特征(receiver operating characteristic), roc曲线上每个点反映着对同一信号刺激的感受性。

横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-Specificity)

纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率)

2. 针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况。

(1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)

(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)

(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)

(4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)

      TP:正确的肯定数目

      FN:漏报,没有找到正确匹配的数目

      FP:误报,没有的匹配不正确

      TN: 正确拒绝的非匹配数目

列联表如下,1代表正类,0代表负类:

由上表可得出横,纵轴的计算公式:

(1)真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。Sensitivity

(2)负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity

(3)真负类率(True Negative Rate)TNR: TN/(FP+TN),代表分类器预测的负类中实际负实例占所有负实例的比例,TNR=1-FPR。Specificity

假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)

如下面这幅图,(a)图中实线为ROC曲线,线上每个点对应一个阈值。

横轴FPR:1-TNR,1-Specificity,FPR越大,预测正类中实际负类越多。

纵轴TPR:Sensitivity(正类覆盖率),TPR越大,预测正类中实际正类越多。

理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好。

二、 如何画roc曲线

假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。

接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:

AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。

首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。

从AUC判断分类器(预测模型)优劣的标准:

  • AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
  • 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

三、AUC计算 

1.  最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期 Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯 下面的面积之和。这样,我们先把score排序(假设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么 做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此 时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比较麻烦的。

2. 一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test是等价的。这个等价关系的证明留在下篇帖子中给出。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。有了这个定义,我们就得到了另外一中计 算AUC的办法:得到这个概率。我们知道,在有限样本中我们常用的得到概率的办法就是通过频率来估计之。这种估计随着样本规模的扩大而逐渐逼近真实值。这 和上面的方法中,样本数越多,计算的AUC越准确类似,也和计算积分的时候,小区间划分的越细,计算的越准确是同样的道理。具体来说就是统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N) 
   3.  第三种方法实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去M-1种两个正样本组合的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即

公式解释:

1、为了求的组合中正样本的score值大于负样本,如果所有的正样本score值都是大于负样本的,那么第一位与任意的进行组合score值都要大,我们取它的rank值为n,但是n-1中有M-1是正样例和正样例的组合这种是不在统计范围内的(为计算方便我们取n组,相应的不符合的有M个),所以要减掉,那么同理排在第二位的n-1,会有M-1个是不满足的,依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1。

2、根据上面的解释,不难得出,rank的值代表的是能够产生score前大后小的这样的组合数,但是这里包含了(正,正)的情况,所以要减去这样的组(即排在它后面正例的个数),即可得到上面的公式。

另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。

举例说明一下:

样本:y=1,y = 1, y=1, y = -1, y = -1, y = -1

模型1的预测:0.8,0.7,0.3,0.5,0.6,0.9

模型2的预测:0.1, 0.8, 0.9, 0.5, 0.85, 0.2

模型1:正样本score大于负样的对包括(y1,y4)(y1,y5)(y2,y4)(y2,y5)。所以AUC值为4/9

模型2:正样本score大于负样本的对包括(y2,y4)(y2,y6)(y3,y4)(y3,y5)(y3,y6)。所以AUC的值为5/9

所以模型2要比模型1好

这种算法的复杂度为O(n^2)其中n=(M+N)也就是样本的数量

3. 方法3跟方法2是一样的,只不过做了一些处理减小了复杂度,首先按照score进行排序,得分最大的为n,第二大的为n-1,依次类推,最小一个即为1,那么AUC的计算方法为:AUC=((正样本的排序之和)-m*(m+1)/2)/(M*N)。

看公式有点抽象,用上面的例子解释一下

模型1:首先对预测的score进行排序,排序后的样本为:负(6),正(5),正(4),负(3),负(2),正(1)

AUC的值为:((5+4+1)- 3 *(3+1)/2)/(3*3) = 4/9。可以看到跟方法二的计算结果一致,我们看一下这个计算公式,首先分子上后面的部分M*(M+1)/2。是不是很熟悉,小学就知道,上底加下底括号起来除以2,既是求梯形的面积公式,也是求连续值的公式,例如1+2+3+4。在这里指的就是所有的正样本的得分都小于所有的负样本的得分的情况下,计算出来的值。前半部分指的是实际的情况下正样本的排序。应该比较好理解了吧

ROC曲线面积AUC详解相关推荐

  1. ROC曲线面积AUC详解 --转载

    一.roc曲线 1.roc曲线:接收者操作特征(receiver operating characteristic), roc曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false p ...

  2. 机器学习基础:ROC曲线与AUC计算详解

    AUC & ROC AUC是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有损失函数(logloss),正确率(accuracy),准确率(precision),但相比之下AU ...

  3. 详解机器学习中 ROC曲线、AUC值、正确率、召回率

    文章目录 前言简介 医学图像识别二分类问题 ROC 曲线 如何画ROC曲线 AUC 前言简介 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分的样例比例 ...

  4. 分类模型-评估指标(2):ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】【AUC的计算方式:统计所有正负样本对中的正序对】

    评价二值分类器的指标很多,比如precision.recall.F1 score.P-R曲线等.但这些指标或多或少只能反映模型在某一方面的性能.相比而言,ROC曲线则有很多优点,经常作为评估二值分类器 ...

  5. ROC曲线,AUC面积

    AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间.Auc作为数值可以直观的评价分类器的好坏,值越大越好. 首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本, ...

  6. 分类模型性能评价指标:混淆矩阵、F Score、ROC曲线与AUC面积、PR曲线

    以二分类模型为例:二分类模型最终需要判断样本的结果是1还是0,或者说是positive还是negative. 评价分类模型性能的场景: 采集一个称之为测试集的数据集: 测试集的每一个样本由特征数据及其 ...

  7. auc计算公式_图解机器学习的准确率、精准率、召回率、F1、ROC曲线、AUC曲线

    机器学习模型需要有量化的评估指标来评估哪些模型的效果更好. 本文将用通俗易懂的方式讲解分类问题的混淆矩阵和各种评估指标的计算公式.将要给大家介绍的评估指标有:准确率.精准率.召回率.F1.ROC曲线. ...

  8. AUC值越大_模型评价——准确率、精确率与召回率与F值、宏平均与微平均、ROC曲线与AUC值...

    在上一篇文章中(baiziyu:模型评价--训练误差与测试误差.过拟合与欠拟合.混淆矩阵)主要介绍了模型评价涉及的基本概念,本节给出一些常用的评价指标.这些指标大致可以分为三类,第一大类是普通的准确率 ...

  9. 整理最近学习的算法:SVM支持向量机(简单)、kappa值、ROC曲线和AUC值

    整理最近学习的算法:kappa值.ROC曲线和AUC值.SVM支持向量机(简单) 1.分类精度的检验 (1)kappa系数检验一致性和分类效果 下面给出公式: 其中,p0是每一类正确分类的样本数量之和 ...

  10. 「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC

    https://www.toutiao.com/a6706449645901464078/ 2019-06-25 20:49:47 大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP. ...

最新文章

  1. 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
  2. 六个最佳的软件工程实践(持续的质量验证、变更管理)
  3. java输入字符串异常_设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。...
  4. HALCON测量工具
  5. git push everything up to date问题解决
  6. jacoco + junit + mock 单测没有统计覆盖率问题
  7. 笔记本电脑投屏到电视_同是无线投屏器,家用级与商用级的区别,除了盘活老电视还能干嘛...
  8. ajax ssm 页面跳转_SSM框架的面试常见问题
  9. 为什么python 为什么没有接口_python做接口测试的必要性
  10. Python中BufferedIOBase
  11. 关于多文档MFC从xp系统上移植到win7上出现错误的问题解决经验
  12. 回溯法基本思想_回溯算法(一)
  13. 跨境电商独立站模式解析与机会分析?
  14. jdbc 数据源_Java数据源,JDBC数据源示例
  15. PHP错误处理注册机制
  16. 库论计量计算电池容量
  17. 搭建教育直播平台,对教育机构有什么优势?
  18. 象棋世家 v6.0a 官方
  19. linux nodejs 采集器,前端工程师通过nodejs链接linux,并上传代码进行半自动化更新,省去ssh+ftp的链接工具-前端黑科技-SegmentFault思否...
  20. 设计模式 访问者模式

热门文章

  1. 2021考研英语大作文笔记(刘晓燕版)
  2. arcgis出比例尺大小相同的图
  3. 云计算技术,主要包含哪些关键技术?
  4. 玩客部落ASO解读:应用商店关键词曝光原理
  5. 预约小程序开发:小程序开发的费用都包含了哪些?
  6. 一人顶一个团队的华为天才少年稚晖君,又带来一项硬核黑科技,引起极客圈地震!...
  7. 网络流量采集(一)概述
  8. 上帝掷骰子吗–量子物理史话
  9. tp摄像头的默认地址_TP-LINK摄像头支持IP地址自动跟随啦!
  10. 基于sass的前端样式管理方案