什么是ROC曲线?为什么要使用ROC?以及 AUC的计算
一、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的计算相关推荐
- ROC曲线是什么?ROC曲线是怎么绘制的?ROC曲线的横纵坐标是什么?如何用Python绘制?AUC又是什么?
ROC曲线是什么?ROC曲线是怎么绘制的?ROC曲线的横纵坐标是什么?AUC又是什么? metrics.roc_auc_score metrics.roc_curve ROC= Receiver Op ...
- 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在目标检测中 ...
- 用matlab画出M1和M2的ROC曲线,ROC曲线及其matlab实现ROC曲线的绘画
ROC曲线(Receiver Operating Characteristic Curve)是利用Classification模型真正率(True Positive Rate)和假正率(False P ...
- stata绘制roc曲线_使用Stata进行ROC曲线分析实例分析-roc曲线分析实例
使用Stata进行ROC曲线分析实例分析 roctab mods pre,g . roccomp mods pre ldh cr abl,g . roccomp mods pre ldh cr ab ...
- stata绘制roc曲线_[转载]光滑ROC曲线的画法
在科研统计中,有时候需要用ROC曲线来表示我们某一方法的诊断能力(或者说2分类能力),于是乎就涉及到了ROC曲线的绘制.大部分人还是会使用SPSS进行统计分析的,也有会使用SPSS绘制ROC曲线的童鞋 ...
- roc曲线matlab怎么做,ROC曲线Matlab程序
最近在做一个模型,用到了ROC曲线. ROC(Receiver Operating Characteristic,受试者工作特征的缩写)曲线是一个非常有用的技术,经常用来组织分类器,可视化分类器的性能 ...
- 你想知道的“ROC曲线”
本文转自"态昌基因",已获授权. Science这篇文章关注了非洲马拉维儿童 营养不良与肠道菌群及肠粘膜免疫功能之间的关系,发现以特定细菌为靶点的lgA对于儿童营养不良的诊断及治疗 ...
- 多分类问题的ROC曲线绘制
多分类问题的ROC曲线绘制 目录 多分类问题的ROC曲线绘制 #roc曲线 (1)ROC曲线图中的四个点
- 交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线
交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线 Receiver Operating Characteristic (ROC) with cross valid ...
- 「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC
https://www.toutiao.com/a6706449645901464078/ 2019-06-25 20:49:47 大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP. ...
最新文章
- python类的静态属性和静态方法_详解Python中的静态方法与类成员方法
- FAQ接口自动化_转载参考
- spring之AOP(转)
- 老男孩的运维笔记文档-高级部分(系统架构师)列表(三)
- 背英语单词很困难,不妨学习一下词根词缀吧(每天10个词根、词缀)Part 1
- 简单分析STM32和51的区别
- hive 语句总结_HiveQL查询语句总结
- 干货||Selenium自动化测试网页
- GraphQL的JavaScript实现graphql-js应用举例
- 商城小程序项目完整源码(微信小程序)
- 工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend
- 我的工程学导论学习心得1
- 一份完整App运营推广计划方案
- ubuntu安装nividia驱动
- GuzzleHttp使用
- 怎么复制一台虚拟机到另外一台电脑上
- 联想拯救者常用快捷键
- 一年级的孩子可以学习机器人编程
- 【递推算法】热带雨林的昆虫繁殖
- 《纵向领导力》的四个维度
热门文章
- pandas 如何创建空的DataFrame
- Nand Flash引脚(Pin)的说明
- linux流量控制的基本原理,基于Linux内核的BT流量控制的原理与实现.pdf
- java实现手机日历_Java实现日历
- 关于在u-boot中使用usb进行通信(一)
- How to Find Crappy Programmers
- submit()和execute()区别
- 520表白纪念自适应单页源码
- 关于 Linux中逻辑卷/物理分区等知识的一些总结
- add python to environment,Python 安装