ROC的含义及画法

ROC的全名叫做Receiver Operating Characteristic(受试者工作特征曲线 ),又称为感受性曲线(sensitivity curve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。其主要分析工具是一个画在二维平面上的曲线——ROC 曲线。ROC曲线以真正例率TPR为纵轴,以假正例率FPR为横轴,在不同的阈值下获得坐标点,并连接各个坐标点,得到ROC曲线。
对于一个分类任务的测试集,其本身有正负两类标签,我们对于这个测试集有一个预测标签,也是正负值。分类器开始对样本进行分类时,首先会计算该样本属于正确类别的概率,进而对样本的类别进行预测。比如说给出一组图片,让分类器判断该图片是否为汉堡,分类器在开始分类前会首先计算该图片为汉堡的概率,进而对该图片的类别进行预测,是汉堡或者不是汉堡。我们用概率来表示横坐标,真实类别表示纵坐标,分类器在测试集上的效果就可以用散点图来表示,如图所示

那么如何通过概率来获得预测的类别呢?
通常我们会设置一个阈值,这里以0.5为例。
当概率≥0.5时,分类器认为这张图片是汉堡,也就是图中虚线右边的部分,我们用橙色来表示;
当概率<0.5时,分类器认为这张图片不是汉堡,也就是图中虚线左边的部分,我们用薄荷绿来表示;

我们可以根据图中的预测结果得到一个混淆矩阵

故而当阈值只有0.5的时候,有且仅有一个混淆矩阵与之对应。
但实际上我们的阈值可以取0-1之间的任何一个数,因此我们可以得到很多个混淆矩阵

有没有一种方法能把所有的混淆矩阵表示在同一个二维空间内呢?
这时ROC曲线便能把它们全部表示出来,ROC曲线的横纵坐标分别是FPR(False Positive Rate)和TPR(True Positive Rate),对于任意一个混淆矩阵(如图)

其TPR和FPR的计算公式为

这时我们就能在二维空间中找出一个唯一的点来与一个混淆矩阵相对应,当我们有很多个混淆矩阵的时候,对应的二维空间中就会有很多个点,如果我们把这些点连起来,那么构成的曲线便是我们的ROC曲线
回到刚才那个对图片进行分类的例子,当阈值在[0,0.1]区间时,分类器认为所有的图片都是汉堡,这时我们就能得到一个混淆矩阵以及该混淆矩阵中TPR和FPR的值,同时在二维平面坐标轴中得到一个坐标为(1,1)的点

同理,当我们的阈值取(0.1,0.2],(0.2,0.3],…,(0.9,1]时,都会有一个新的混淆矩阵的TPR和FPR的值与之对应,同时二维空间中也会出现一个新的点与之对应,知道阈值取到最大,二维空间中找到了所有与混淆矩阵对应的点,我们把这些点连起来就得到了我们所需要的ROC曲线

由上可知,ROC曲线的横坐标和纵坐标其实是没有相关性的,所以不能把ROC曲线当做一个函数曲线来分析,应该把ROC曲线看成无数个点,每个点都代表一个分类器,其横纵坐标表征了这个分类器的性能。
为什么使用ROC曲线?
因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线的对比:


在上图中,(a)和( c )为ROC曲线,(b)和(d)为Precision-Recall(P-R)曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,( c )和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。
ROC曲线图中的四个点
第一个点:(0,1),即FPR=0, TPR=1,这意味着FN=0,并且FP=0。这是完美的分类器,它将所有的样本都正确分类。
第二个点:(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。
第三个点:(0,0),即FPR=TPR=0,即FP=TP=0,可以发现该分类器预测所有的样本都为负样本(negative)。
第四个点:(1,1),即分类器实际上预测所有的样本都为正样本。
经过以上的分析,ROC曲线越接近左上角,该分类器的性能越好。

AUC的含义

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。
下面ROCA曲线和ROCB曲线哪条曲线对应的分类器效果更好呢?

根据TPR和FPR的公式我们可知,TPR的分母P和FPR的分母N对应于同一个测试集都是不变的,在分类过程中如果想获得更准确的分类结果,我们需要让TP更可能的大,FP更可能的小,也就是说我们想让TPR尽可能的大,FPR尽可能的小,故而在左边的二维空间内,曲线越靠近左上角,效果越好。
那么我们可不可以通过一个值而不是看曲线图的方式来判断曲线A和B哪个分类效果好,我们通过曲线与X轴、坐标(1,0)和(1,1)所连成的直线围成的面积来判断曲线A和B所对应的分类器的分类效果,面积越大,则说明该分类器越好,这个面积就是我们所说的AUC值。

简单说:AUC值越大的分类器,正确率越高。

AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC=0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
AUC<0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测,因此不存在 AUC<0.5 的情况。
如过是多分类问题呢?如何计算AUC的值呢?
我们可以求得宏观的AUC和微观的AUC
对于宏观的AUC来说,针对每一个类别我们都可以画出对应的ROC曲线,求出对应的AUC值,最后对于所有的AUC的值求某种平均作为整个模型所有类别的宏观AUC值。
对于微观的AUC来说,假设我们的概率预测结果如下图所示,每一行表示一个样本被预测成各个类别的概率,每一行的概率之和为1,橙色方块表示该样本所属的真实类别,样本1对应的真实类别为C1,样本2对应的真实类别为C3。


至此我们可以得到一个经过转化的预测结果,如下图

我们可以根据这个表来得到针对整个模型的ROC曲线以及它对应的AUC值。
图片来自于B站视频
【小萌五分钟】机器学习 | 模型评估: ROC曲线与AUC值
https://www.bilibili.com/video/BV1wz4y197LU?from=search&seid=9450810776924126752
参考博文:
https://blog.csdn.net/IT_flying625/article/details/103246932
http://charleshm.github.io/2016/03/Model-Performance/
https://zhuanlan.zhihu.com/p/26293316
https://www.jianshu.com/p/8abf429bf587
https://blog.csdn.net/ibelieve8013/article/details/106769234/

ROC曲线的含义以及画法相关推荐

  1. ROC 曲线介绍以及 python 画法

    文章目录 前言 一.ROC 曲线是什么? 二.绘制 ROC 曲线 1. 图介绍 2.代码实现 总结 前言   看了一些怎么画ROC曲线的内容,感觉没有找到自己想要的知识,都是零散的或者直接的模板,里面 ...

  2. 查准率,查全率,PR曲线,ROC 曲线的含义

  3. ROC曲线和PR曲线的区别及相应的应用场景

    ROC曲线和PR曲线都是用来衡量分类器分类性能的好坏的标准 ROC曲线和PR曲线的区别 ROC曲线 关于ROC曲线的具体含义详见我之前的博文:ROC曲线的含义以及画法 ROC曲线所在的二维坐标轴空间的 ...

  4. ROC曲线的通俗理解

    在准备机器学习导论课程考试的过程中,发现自己根据西瓜书上的讲解总是也理解不上去ROC曲线的含义.于是在网络上寻求答案,发现一篇讲解得不错的博客[1],说得比西瓜书好很多,通俗易懂.这里说一下自己的感想 ...

  5. 一文彻底搞懂ROC曲线与AUC的概念

    一文彻底搞懂ROC曲线与AUC的概念 1. ROC曲线的初级含义 1.1 精确率和召回率 1.2 ROC曲线的含义 2. ROC曲线如何绘制 3. ROC曲线和排序有什么关联? 4. AUC和基尼系数 ...

  6. roc曲线和auc_roc和auc曲线的初学者指南

    roc曲线和auc 博客结构(Blog Structure) As can be seen in the title above, the purpose of this blog is to gai ...

  7. 机器学习11. ROC曲线、AUC值、Accuracy、Precision、Recall 含义

    AUC/ROC,Accuracy,Precision,Recall 含义.查准率,查全率,样本均衡问题 部分图片转自这里 行的True和False表示预测为正负 列的Pos和Neg表示真实的正负 表哥 ...

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

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

  9. 机器学习:python绘制P-R曲线与ROC曲线

    Python绘制P-R曲线与ROC曲线 查准率与查全率 P-R曲线的绘制 ROC曲线的绘制 查准率与查全率   P-R曲线,就是查准率(precision)与查全率(recall)的曲线,以查准率作为 ...

最新文章

  1. Spring Boot登录选项快速指南
  2. IBatis 映射文件 sql 中大于、小于等符号转义
  3. 交叉编译ncurses5.6
  4. 开发转测试没人要_新人如何快速的进入融入软件测试行业?
  5. Linux中出现 -bash: unzip: command not found
  6. 【腐蚀率预测】基于matlab GUI BP神经网络钢筋腐蚀率预测【含Matlab源码 107期】
  7. 多小区下小区上行速率的计算(3)
  8. 使用百度地图绘制热力图
  9. 分析一块某宝上的WiFi摄像头模块
  10. c4d-创建样条曲线-4
  11. k2p openwrt固件_自编译OpenWrt 属于自己的固件
  12. [js高手之路]html5 canvas动画教程 - 跟着鼠标移动消失的一堆炫彩小球
  13. Spark之SparkSQL和DataFrame
  14. android 图片轮播框架banner
  15. 强化学习@AAAI2019
  16. vs运行localhos转换为本地ip地址访问
  17. Android中你不得不知的几个问题及解决方法
  18. 图解海康威视摄像头和硬盘录像机的网络连接与端口映射
  19. 关于51单片机驱动DS18B20代码的感想
  20. 单片机学习笔记——微机基础知识

热门文章

  1. 腾讯通服务器临时文件,腾讯通详细使用教程
  2. matlab坐标轴标注和特殊字体…
  3. 数据中聚类个数的确定(Determining the number of clusters in a data set)
  4. 无人驾驶工业车辆企业「未来机器人」完成数亿元融资
  5. uniapp 微信分享(安卓)
  6. Linux 进程管理之进程调度与切换
  7. 二招搞定word文档中的乱码
  8. 网络的FIN_WAIT_2状态解释和分析
  9. 移交笔记本电脑前如何安全地删除个人数据
  10. LoadRunner技巧之IP欺骗