前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROC曲线的含义以及画法

ROC曲线的含义以及画法

作者头像
全栈程序员站长
发布2022-08-28 13:49:07
8040
发布2022-08-28 13:49:07
举报

大家好,又见面了,我是你们的朋友全栈君。

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/

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146006.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ROC的含义及画法
  • AUC的含义
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档