一、ROC简介

ROC的全名叫做Receiver Operating Characteristic,中文名字叫“受试者工作特征曲线”,其主要分析工具是一个画在二维平面上的曲线——ROC 曲线。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。

一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。如果很不幸,你得到一个位于此直线下方的分类器的话,一个直观的补救办法就是把所有的预测结果反向,即:分类器输出结果为正类,则最终分类的结果为负类,反之,则为正类。虽然,用ROC 曲线来表示分类器的性能很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC 曲线下方的那部分面积的大小通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的性能。AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准。

二、基本概念

解读ROC图的一些概念定义::

1. 四种分类

真正(True Positive , TP)被模型预测为正的正样本;
假负(False Negative , FN)被模型预测为负的正样本;
假正(False Positive , FP)被模型预测为正的负样本;
真负(True Negative , TN)被模型预测为负的负样本。

2. 横纵坐标解释

该曲线的横坐标为假阳性率(False Positive Rate, FPR),N是真实负样本的个数,
FP是N个负样本中被分类器预测为正样本的个数。

纵坐标为真阳性率(True Positive Rate, TPR),


P是真实正样本的个数,
TP是P个正样本中被分类器预测为正样本的个数。

3.混淆矩阵

对于二分类问题,可将样本根据其真实类别与学习器预测类别的组合划分为TP(true positive)、FP(false positive)、TN(true negative)、FN(false negative)四种情况,TP+FP+TN+FN=样本总数。

三、为什么要选择ROC?

既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线的对比:

其中第一行ab均为原数据的图,左边为ROC曲线,右边为P-R曲线。第二行cd为负样本增大10倍后俩个曲线的图。可以看出,ROC曲线基本没有变化,但P-R曲线确剧烈震荡。因此,在面对正负样本数量不均衡的场景下,ROC曲线(AUC的值)会是一个更加稳定能反映模型好坏的指标。

四、AUC作为评价标准

1. AUC (Area Under Curve)

被定义为ROC曲线下的面积,取值范围一般在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

2.AUC 的计算方法

非参数法:(两种方法实际证明是一致的)

(1)梯形法则:早期由于测试样本有限,我们得到的AUC曲线呈阶梯状。曲线上的每个点向X轴做垂线,得到若干梯形,这些梯形面积之和也就是AUC 。

(2)Mann-Whitney统计量: 统计正负样本对中,有多少个组中的正样本的概率大于负样本的概率。这种估计随着样本规模的扩大而逐渐逼近真实值。

参数法:

(3)主要适用于二项分布的数据,即正反样本分布符合正态分布,可以通过均值和方差来计算。

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

· AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。

· 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

· AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。

· AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

三种AUC值示例:

总结:AUC值越大的分类器,正确率越高

4. 不同模型AUC的比较

总的来说,AUC值越大,模型的分类效果越好,疾病检测越准确;不过两个模型AUC值相等并不代表模型效果相同,例子如下:

下图中有三条ROC曲线,A模型比B和C都要好

下面两幅图中两条ROC曲线相交于一点,AUC值几乎一样:当需要高Sensitivity时,模型A比B好;当需要高Speciticity时,模型B比A好

参考:

1.https://www.jianshu.com/p/2ca96fce7e81

2.https://www.plob.org/article/12476.html

什么是ROC曲线?为什么要使用ROC?以及 AUC的计算相关推荐

  1. ROC曲线是什么?ROC曲线是怎么绘制的?ROC曲线的横纵坐标是什么?如何用Python绘制?AUC又是什么?

    ROC曲线是什么?ROC曲线是怎么绘制的?ROC曲线的横纵坐标是什么?AUC又是什么? metrics.roc_auc_score metrics.roc_curve ROC= Receiver Op ...

  2. Detection:目标检测常用评价指标的学习总结(IoU、TP、FP、TN、FN、Precision、Recall、F1-score、P-R曲线、AP、mAP、 ROC曲线、TPR、FPR和AUC)

    目录 前言 1. IoU 2. TP.FP.TN.FN 2.1 混淆矩阵 2.2 TP.FP.TN.FN的定义 2.3 TP.FP.TN.FN在目标检测中的对应内容 2.3.1 TP,FP在目标检测中 ...

  3. 用matlab画出M1和M2的ROC曲线,ROC曲线及其matlab实现ROC曲线的绘画

    ROC曲线(Receiver Operating Characteristic Curve)是利用Classification模型真正率(True Positive Rate)和假正率(False P ...

  4. stata绘制roc曲线_使用Stata进行ROC曲线分析实例分析-roc曲线分析实例

    使用Stata进行ROC曲线分析实例分析 roctab mods pre,g . roccomp mods pre ldh cr abl,g . roccomp mods  pre ldh cr ab ...

  5. stata绘制roc曲线_[转载]光滑ROC曲线的画法

    在科研统计中,有时候需要用ROC曲线来表示我们某一方法的诊断能力(或者说2分类能力),于是乎就涉及到了ROC曲线的绘制.大部分人还是会使用SPSS进行统计分析的,也有会使用SPSS绘制ROC曲线的童鞋 ...

  6. roc曲线matlab怎么做,ROC曲线Matlab程序

    最近在做一个模型,用到了ROC曲线. ROC(Receiver Operating Characteristic,受试者工作特征的缩写)曲线是一个非常有用的技术,经常用来组织分类器,可视化分类器的性能 ...

  7. 你想知道的“ROC曲线”

    本文转自"态昌基因",已获授权. Science这篇文章关注了非洲马拉维儿童 营养不良与肠道菌群及肠粘膜免疫功能之间的关系,发现以特定细菌为靶点的lgA对于儿童营养不良的诊断及治疗 ...

  8. 多分类问题的ROC曲线绘制

    多分类问题的ROC曲线绘制 目录 多分类问题的ROC曲线绘制 #roc曲线 (1)ROC曲线图中的四个点

  9. 交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线

    交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线 Receiver Operating Characteristic (ROC) with cross valid ...

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

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

最新文章

  1. python类的静态属性和静态方法_详解Python中的静态方法与类成员方法
  2. FAQ接口自动化_转载参考
  3. spring之AOP(转)
  4. 老男孩的运维笔记文档-高级部分(系统架构师)列表(三)
  5. 背英语单词很困难,不妨学习一下词根词缀吧(每天10个词根、词缀)Part 1
  6. 简单分析STM32和51的区别
  7. hive 语句总结_HiveQL查询语句总结
  8. 干货||Selenium自动化测试网页
  9. GraphQL的JavaScript实现graphql-js应用举例
  10. 商城小程序项目完整源码(微信小程序)
  11. 工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend
  12. 我的工程学导论学习心得1
  13. 一份完整App运营推广计划方案
  14. ubuntu安装nividia驱动
  15. GuzzleHttp使用
  16. 怎么复制一台虚拟机到另外一台电脑上
  17. 联想拯救者常用快捷键
  18. 一年级的孩子可以学习机器人编程
  19. 【递推算法】热带雨林的昆虫繁殖
  20. 《纵向领导力》的四个维度

热门文章

  1. pandas 如何创建空的DataFrame
  2. Nand Flash引脚(Pin)的说明
  3. linux流量控制的基本原理,基于Linux内核的BT流量控制的原理与实现.pdf
  4. java实现手机日历_Java实现日历
  5. 关于在u-boot中使用usb进行通信(一)
  6. How to Find Crappy Programmers
  7. submit()和execute()区别
  8. 520表白纪念自适应单页源码
  9. 关于 Linux中逻辑卷/物理分区等知识的一些总结
  10. add python to environment,Python 安装