云走雾走走行程,救苦救难救灾星

有求必应,出古洞四海扬名,在深山修真养性

ROC曲线绘制原理即AUC意义详解

ROC曲线绘制原理

ROC曲线常常用来判定一个分类器的分类效果,想要探究ROC曲线的绘制原理,首先要弄清楚以下几个概念。

在一个分类任务中,样品往往是要分为两类。比如“有病”vs“没病”、“男人”vs“女人”。而往往我们的分类器的分类效果并没有那么好,所以会出现分错的情况。根据这些错分的样品数量,我们得到一个概念——假阳性率(FPR):

与之对应的是真阳性率(TPR):

那么所谓ROC曲线,便是在不同阈值下,由TPR和FPR所构成的图像了。

这个时候你肯定还是看不懂,因为你看得懂就不会翻到我这篇文章了…(酸里酸气)

ok,我从一个分类问题开始,一步步的绘制ROC曲线。

这里呢,通过你选定的超平面分类算法,将两类点成功分类。其中红色的点为阳性,绿色的点为阴性。
可以看到这条超平面的分类效果是很棒的,没有分类错误的现象。
而超平面的公式是

所以你可以利用得出的W来为每个点算出一个值,具体数值已经在图片中标出。得数的绝对值越大,证明离超平面越远,分类越清晰。

如果你理解不了加黑字体的意思,我还有下一个版本的:

通过分类算法找到了一条“分类用的线”,并且把每个点到这条线的距离都标在了图片上,距离这条线越远,证明分类正确的把握越大。

那么ROC曲线是怎么画的呢?

把握最大的点开始(在分类线最上方的点),不断的将点划入阳类,同时计算真阳性率(TPR)和假阳性率(FPR)
注:这里是从点的值为负数开始,也就是线的上方开始不断的将点划入阳类

为了方便下文理解,重新放进这张图

最开始呢,我们把点(1,4)划入阳性集,此时a=1,b=0,真实阳性个数(T)=3,真实阴性个数(F)=3
那么真阳性率为/1/3,假阳性率为0

之后我们把(1,3)划入阳性集,此时a=2,b=0,真实阳性个数(T)=3,真实阴性个数(F)=3
那么真阳性率为/2/3,假阳性率为0

之后我们把(1,2)划入阳性集,此时a=3,b=0,真实阳性个数(T)=3,真实阴性个数(F)=3
那么真阳性率为1,假阳性率为0

之后我们把(2,1)划入阳性集,此时a=3,b=1,真实阳性个数(T)=3,真实阴性个数(F)=3
那么真阳性率为1,假阳性率为1/3
注:从这里开始,将阴性点划入阳性集,出现假阳性

之后我们把(3,1)划入阳性集,此时a=3,b=2,真实阳性个数(T)=3,真实阴性个数(F)=3
那么真阳性率为1,假阳性率为2/3

之后我们把(3,1)划入阳性集,此时a=3,b=3,真实阳性个数(T)=3,真实阴性个数(F)=3
那么真阳性率为1,假阳性率为1

通过将不同点划入阳性集所得到的真阳性率和假阳性率,就可以绘制ROC曲线啦!

建议用笔自己画一画!!!!

好嘞,现在开始说一下这个ROC的特点,通过上述步骤可以看出来,每划入一个点到阳性集,都会使得 a增大 1 (判断正确——真阳性数量增加),或b增大1(判断错误——假阳性数量增加)。当a增大时,曲线会向上生长一小段,当b增大时图像会向右生长一小段。所以ROC的特点就是只能向上或是向右生长,不能向下向左生长!

那么问题来了,所谓的AUC是什么?为什么AUC越大表示分类效果越好?

AUC的意义

AUC即为ROC曲线下的面积。由于真阳性率和假阳性率的范围都是[0,1],所以AUC最大值为1。

上述的ROC曲线的AUC是1,证明分类效果非常棒。

但是请想一想,如果我们的数据如下图所示:

会发生什么?

他会造成真阳性率没有到达1的时候,假阳性率大于0。换句话说,他会让曲线还没有生长到最高处的时候,右拐,这样AUC就不会达到1.。而当判断错误的点(即假阳性点)离分类线越远,这种右拐现象越早发生,曲线下面积AUC就越小,而右拐现象发生的越晚AUC面积就越大

如果离分类线很远的点还被分类错了(AUC相对较小),即分类正确的把握很大的点被分错了,那么说明我们的分类算法或是分类特征是有问题的。如果离线很近的点被分错了(AUC相对较大),即分类正确的把握很小的点被分错了,那只能说数据有问题(笑)或者这种问题是我们可以接受的。

我们当然希望分类错误的点尽可能的靠近分类线,这样就可以说是数据的问题而不是算法的问题(笑)。这就是为什么AUC越大,说明分类效果越好。

如果你对我上述说明充分理解,那么请看以下叙述
通过将点到分类线的距离排序,所得的对应标签排序:
AUC1 ----> a,a,a,a,a,b,b,b,b,b

AUC2-----> a,a,a,a,b,a,b,b,b,b

AUC3----->a,b,a,a,a,a,b,b,b,b

有AUC1>AUC2>AUC3

同时ROC曲线还特别适合我们样本点分类不均的适合衡量分类器的效能

这里算是介绍完了ROC和AUC。
就说到这里啦!有帮助的话帮忙点个赞哦!!

ROC曲线绘制原理即AUC的意义详解相关推荐

  1. 偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度、敏感度角度

    偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度.敏感度角度 目录

  2. 超详细的ROC曲线绘制教程

    ROC曲线是临床中常用的统计分析之一,R中可以绘制ROC曲线的包也有很多,pROC包就是其中的佼佼者. pROC包可以计算AUC和95%置信区间,可以可视化.平滑和比较ROC曲线.下面是pROC包中的 ...

  3. 基于逻辑回归的癌症分类预测-良/恶性乳腺癌肿瘤预测及ROC曲线绘制

    逻辑回归 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归.由于算法的简单和高效,在实际中应用非常广泛.逻辑回归是解决二分类问题 ...

  4. python 将多个模型的ROC曲线绘制在一张图里(含图例)

    一. 多条ROC曲线绘制函数 def multi_models_roc(names, sampling_methods, colors, X_test, y_test, save=True, dpin ...

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

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

  6. matlab roc曲线,MATLAB画ROC曲线,及计算AUC值

    标签: 根据决策值和真实标签画ROC曲线,同时计算AUC的值 function auc = roc_curve(deci,label_y) %%deci=wx+b, label_y, true lab ...

  7. r roc曲线 语言_R语言系列6:生存分析中多重时间依赖性ROC曲线绘制 timeROC

    上一篇文章,我们讲到R语言实现Cox回归生存预测模型构建,以及如何将Logistic回归中,多条ROC曲线绘制在一个图里 今天主要围绕生存分析中,预测模型验证部分,如何将多条time-depend e ...

  8. roc曲线spss怎么做_SPSS单因素ROC曲线及多因素联合诊断ROC曲线绘制(原创手把手) - 医学统计和生物统计讨论版 -丁香园论坛...

    最近被好几个师弟师妹问到ROC曲线的绘制,尤其是多因素联合诊断ROC曲线的绘制(如下图这样的怎么做),所以干脆好好总结一下: 一.单因素ROC曲线 其实这个最简单,估计很多人也会,我知道的有两种办法, ...

  9. matlab计算prc曲线auc面积,MATLAB画ROC曲线,及计算AUC值

    根据决策值和真实标签画ROC曲线,同时计算AUC的值 步骤: 根据决策值和真实标签画ROC曲线,同时计算AUC的值: 计算算法的决策函数值deci 根据决策函数值deci对真实标签y进行降序排序,得到 ...

最新文章

  1. mysql主主复制+keepalived 打造高可用mysql集群
  2. 2021年春季学期-信号与系统-第七次作业参考答案-第三小题
  3. 元素周期表排列的规律_元素周期表诞生150周年,这些有趣的元素性质你都知道吗?...
  4. 每天一道LeetCode-----将单词数组分成多行,每行长度相同,单词之间用空格分隔,要求空格尽量均匀分布
  5. SAP CRM WebClient UI Technical profile里timeout 设置
  6. c语言sort_C语言十大排序算法,让老师对你刮目相看的技巧
  7. mysql 复制方式_MySQL复制方法
  8. 紫光展锐【软件工程师】面经
  9. Flutter RichText 使用案例解析 Flutter WidgetSpan 设置图片显示
  10. 打造具有物联网基因的现代化商业银行
  11. BZOJ 1054: [HAOI2008]移动玩具(bfs)
  12. Kafka-partition
  13. C语言实现井子格游戏
  14. 浅谈Rsync+Inotify实时同步
  15. Vue生命周期学习总结
  16. 海康威视_摄像头搜索工具
  17. Spring-几种组件注册方式
  18. mysql 触发器 sql server_喜忧参半的SQL Server触发器
  19. 免费!在线WORD转PDF的方法分享
  20. git三板斧--Linux

热门文章

  1. 重做HP笔记本一键恢复功能
  2. VOT tooklit 数据集 安装配置出错:Tracker has not passed the TraX support test.
  3. Java实现AI机器人聊天
  4. 通用java后台服务
  5. zuul routes的配置规则介绍
  6. Python基础综合练习1——第1关:最小公倍数算法
  7. 【老九学堂】【初识C语言】二维数组
  8. 对于一个32岁程序员,如何成功转型
  9. iNFTnews|发表即成资产,Web3平台Mirror会有什么样的未来?
  10. 怎么申请网络文化经营许可证