ROC曲线绘制原理即AUC的意义详解
云走雾走走行程,救苦救难救灾星
有求必应,出古洞四海扬名,在深山修真养性
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的意义详解相关推荐
- 偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度、敏感度角度
偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度.敏感度角度 目录
- 超详细的ROC曲线绘制教程
ROC曲线是临床中常用的统计分析之一,R中可以绘制ROC曲线的包也有很多,pROC包就是其中的佼佼者. pROC包可以计算AUC和95%置信区间,可以可视化.平滑和比较ROC曲线.下面是pROC包中的 ...
- 基于逻辑回归的癌症分类预测-良/恶性乳腺癌肿瘤预测及ROC曲线绘制
逻辑回归 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归.由于算法的简单和高效,在实际中应用非常广泛.逻辑回归是解决二分类问题 ...
- python 将多个模型的ROC曲线绘制在一张图里(含图例)
一. 多条ROC曲线绘制函数 def multi_models_roc(names, sampling_methods, colors, X_test, y_test, save=True, dpin ...
- 多分类问题的ROC曲线绘制
多分类问题的ROC曲线绘制 目录 多分类问题的ROC曲线绘制 #roc曲线 (1)ROC曲线图中的四个点
- matlab roc曲线,MATLAB画ROC曲线,及计算AUC值
标签: 根据决策值和真实标签画ROC曲线,同时计算AUC的值 function auc = roc_curve(deci,label_y) %%deci=wx+b, label_y, true lab ...
- r roc曲线 语言_R语言系列6:生存分析中多重时间依赖性ROC曲线绘制 timeROC
上一篇文章,我们讲到R语言实现Cox回归生存预测模型构建,以及如何将Logistic回归中,多条ROC曲线绘制在一个图里 今天主要围绕生存分析中,预测模型验证部分,如何将多条time-depend e ...
- roc曲线spss怎么做_SPSS单因素ROC曲线及多因素联合诊断ROC曲线绘制(原创手把手) - 医学统计和生物统计讨论版 -丁香园论坛...
最近被好几个师弟师妹问到ROC曲线的绘制,尤其是多因素联合诊断ROC曲线的绘制(如下图这样的怎么做),所以干脆好好总结一下: 一.单因素ROC曲线 其实这个最简单,估计很多人也会,我知道的有两种办法, ...
- matlab计算prc曲线auc面积,MATLAB画ROC曲线,及计算AUC值
根据决策值和真实标签画ROC曲线,同时计算AUC的值 步骤: 根据决策值和真实标签画ROC曲线,同时计算AUC的值: 计算算法的决策函数值deci 根据决策函数值deci对真实标签y进行降序排序,得到 ...
最新文章
- 读完这本书,我做了一个APP
- matlab2ask和2psk仿真实验代码
- 转贴 CxImage类库使用说明
- 【BZOJ-2938】病毒 Trie图 + 拓扑排序
- ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序--解决方法
- Caffe + Ubuntu 14.04 64bit + CUDA6.5 + 无GPU 配置
- 有哪些wordpress企业网站主题推荐?
- 漳州帷博计算机科技,福建省漳州市芗城中学高二6月月考语文试题 含答案(11页)-原创力文档...
- linux连ftp超时,ftp上传超时的一种解决方案
- kafka sasl_ssl配置
- 【Python网络编程】爬取百度贴吧、小说内容、豆瓣小说、Ajax爬微博、多线程爬淘宝
- Mac安装photoshopcs6
- 实时时间(24小时制)
- python脚本一键抓考试资料网答案
- pytorch学习之图片处理
- CSS3 - 使用弹性盒子(Flex Box)实现完美居中、栅格系统及响应式布局
- 自主小型Web服务器实现——TinyHttp
- 微信支付之Native支付H5支付JSAPI支付退款
- 双系统安装红旗linux,win7与红旗Linux7.0双系统安装的方法
- C语言复习----------指针
热门文章
- Python开发系列课程(12) - 图形用户界面和游戏开发
- PHP实现RSA签名和验签
- TransparentBlt
- android拍照图片如何存储空间不足,手机照相显示内存不足怎么办 解决方法【详解】...
- 软件开发新人如何高效解决BUG
- 如何通过对范德蒙德行列式的学习来领悟数学思维
- Linux虚拟网络基础——Firewall和mangle
- addslashes php,PHP关于反斜杠处理函数addslashes()和stripslashes()的用法 - YangJunwei
- 利用java发送短信
- 数据结构--二叉树遍历(详细过程)