很多时候我们都用到ROC(receiver operating characteristic curve,受试者工作特征曲线)和AUC(Area Under Curve,被定义为ROC曲线下的面积)来评判一个二值分类器的优劣,其实AUC跟ROC息息相关,AUC就是ROC曲线下部分的面积,所以需要首先知道什么是ROC,ROC怎么得来的。然后我们要知道一般分类器会有个准确率ACC,那么既然有了ACC,为什么还要有ROC呢,ACC和ROC的区别又在哪儿,这是我喜欢的一种既生瑜何生亮问题。

最后又简单说明了一下有了ROC之后,为什么还要有AUC呢

ROC简介

ROC曲线的横坐标为false positive rate(FPR)即负类样本中被判定为正类的比例,也就是传说中的误纳率

纵坐标为true positive rate(TPR)即正类样本中被判定为正类的样本,1-TPR也就是传说中的误拒率

接下来我们考虑ROC曲线图中的四个点和一条线。

第一个点,(0,1),即左上角的点,在这个点意味着FPR=0,TPR=1,稍微翻译一下就是误纳率为0,误拒率为0,再翻译成人话就是负类样本中被判断为正类的比例为0,说明负类样本都被判断为负类,判断正确,正类样本中被判断为正类的比例为1,说明正类样本都被判断正确,所以这是一个完美的分类器,它将所有的样本都正确分类。

第二个点,(1,0),即右下角的点,在这个点意味着FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确分类。把该判断为正类的判断为负类,把该判断为负类的判断为正类

第三个点,(0,0),即左下角的点,在这个点意味着FPR=TPR=0,可以发现该分类器预测所有的样本都为负样本(negative),在后面我们可以看到这种情况说明阈值选得过高。

第四个点(1,1),即右下角的点,分类器实际上预测所有的样本都为正样本,在后面我们可以看到这种情况说明阈值选得过低。

如何画ROC曲线

由于每次从分类模型中只能得到一个用于判定分类结果的分数,要将这个分数与一个阈值进行比较,判定这个样本属于哪个类,所以我们可以更改阈值,得到不同的分类结果,也就是不同的TPR和FPR

之前说到当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点

将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。

既然有了ACC为什么要有ROC呢(既生瑜何生亮呢)

我们知道,我们常用ACC准确率来判断分类器分类结果的好坏,既然有了ACC为什么还需要ROC呢,很重要的一个因素是实际的样本数据集中经常会出现数据偏斜的情况,要么负类样本数大于正类样本数,要么正类样本数大于负类样本数。

比如说我负类样本数有9,000个,正类样本数有100个,如果阈值选得过高,正类样本都判断为负类,同样负类样本都判定为负类,那么准确率90%,看起来还不错,但是如果考虑ROC中的TPR和FPR的话就会知道,此时的TPR=0,FPR=0,也就是误纳率是0,但是误拒率是100%,是左下角的点,并不是很好的一个点,而原来的ACC就不具有代表性

既然有了ROC为什么要有AUC呢(既生瑜何生亮呢)

使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而相对于AUC是个数值而言,对应AUC更大的分类器效果更好,数值更好判断一些。

很多时候我们都用到ROC和AUC来评判一个二值分类器的优劣,其实AUC跟ROC息息相关,AUC就是ROC曲线下部分的面积,所以需要首先知道什么是ROC,ROC怎么得来的。然后我们要知道一般分类器会有个准确率ACC,那么既然有了ACC,为什么还要有ROC呢,ACC和ROC的区别又在哪儿,这是我喜欢的一种既生瑜何生亮问题。

最后又简单说明了一下有了ROC之后,为什么还要有AUC呢

顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。

AUC的计算方法总结:

(AUC的值就是计算出ROC曲线下面的面积)

直接计算AUC是很麻烦的,所以就使用了AUC的一个性质(它和Wilcoxon-Mann-Witney Test是等价的)来进行计算。Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。有了这个定义,我们就得到了另外一中计算AUC的办法:得到这个概率。

方法一:统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N)。

第二种方法实际上和上述方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去正类样本的score为最 小的那M个值的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即

AUC=((所有的正例位置相加)-M*(M+1))/(M*N)

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

AUC、ROC、ACC区别相关推荐

  1. 分类器的ROC曲线及相关指标(ROC、AUC、ACC)详解

    关于ROC曲线有几篇老博客.有一篇是一位博士写的,不过不知道为什么,那篇文章老是有迷之错误,从13年开始,一直订正到17年,依旧存在错误,如举例有问题.概念混淆(因为其文章包含了太多的概念,导致文法上 ...

  2. AUC/ROC:面试中80%都会问的知识点

    本文分享自华为云社区<技术干货 | 解决面试中80%问题,基于MindSpore实现AUC/ROC>,原文作者:李嘉琪. ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的 ...

  3. 数据挖掘中的指标--分类器中的ROC曲线及相关指标(ROC、AUC、ACC)

    ROC又叫受试者工作特征曲线.它是用来验证一个二分类器模型的性能指标,也就是说,给出一个模型,输入一个模型,输入已知正负类的一组数据,并通过对比模型对改组数据进行的预测,衡量这个模型的性能. 相关内容 ...

  4. MindSpore分类指标之准确率、AUC/ROC详解(一)

    一.评价指标基本概念 评价指标是针对模型性能优劣的一个定量指标. 一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据.模型选取不同的的评价指 ...

  5. matlab计算auc,ROC和AUC介绍以及如何计算AUC

    ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见这里.这篇博文简单介绍 ...

  6. 【AI基础】AUC/ROC指标

    学习总计 可以参考[小萌五分钟]机器学习 | 不平衡分类问题之阈值调整(Threshold Moving): PR曲线上的最优阈值中有关threshold的调整(在处理一些样本类别不平衡上经常使用). ...

  7. 与roc的区别_2020斯柯达柯珞克Karoq对比大众T-ROC,你会选哪个?

    这是您从未真正知道自己需要的两款SUV,但突然间发现自己想要的,无非就是也许它们都是来自高端品牌,在技术上比竞争对手更胜一筹,无论您选择哪种方式都可以保证排他性.在皮肤下,它们本质上是相同的?搭载大众 ...

  8. 机器学习常用评价指标:ACC、AUC、ROC曲线

    文章目录 一.混淆矩阵 二.评价指标 1.准确度(Accuracy) 2.AUC ROC曲线 举例 如何画ROC曲线 AUC的计算 AUC意味着什么 为什么使用ROC曲线 参考 一.混淆矩阵 基于样本 ...

  9. 原理详解AUC、ROC和average precision (AP)以及sklearn实战

    文章目录 前言 TPR,FPR ROC AUC 实战 鸣谢 average precision (AP) 实战 前言 开门见山,想要知道AUC必须知道ROC,想要知道ROC必须知道TPR,FPR, 完 ...

最新文章

  1. 用ssh建立机器之间的信任机制
  2. 有道精品课python-有道精品课-Python小咖养成计划
  3. Accent-Insensitive, Accent Sensitive, a ã, e é 模糊查询
  4. Linux电源管理(10)_autosleep
  5. 普及几个小常识,新手技能补充
  6. python编译器如何设置中文_如何使setup.py test使用特定的fortran编译器?
  7. ADB命令中循环执行某个命令
  8. 服务器本地打开asp文件路径,服务器本地打开asp文件
  9. 投色子--html demo
  10. 微服务的简介和技术栈,太牛逼了!
  11. 国际会议关于Poster的一个网站
  12. 【MEMS传感器】BMI160九轴传感器SPI驱动
  13. cvtColor()实际操作
  14. 【转】告诉你外语学习的真实方法及误区分析(精编版)-part 3
  15. python中逗号在print的作用_Python中逗号的三种作用
  16. 2021年计算机保研面试题
  17. 【进大厂必学】面完 10 多家大厂后,总结了这些太容易被考的算法
  18. 服务器维护首先查看指示灯,HP ILO2 使用详细教程[图文]
  19. python语言是解释型语言-解释型语言python
  20. 【基础】python-docx包之----设置段落样式(缩进/对齐/间距)

热门文章

  1. python以读写方式打开文件_Python读写文件
  2. NAVEX:为动态Web应用程序生成精确且可扩展的漏洞
  3. 如何获取彩色图像中的主色彩
  4. 【leetcode】搜索二维矩阵 II
  5. Hibernate框架第一课
  6. 力扣解题思路:位运算系列
  7. bzoj 1415 [Noi2005]聪聪和可可
  8. http协议入门之Content-Disposition
  9. 祛除装修异味的方法 总有一种适合你!
  10. CSS文件引入另一个CSS文件