【深度学习笔记】ROC曲线 vs Precision-Recall曲线
ROC曲线的优势
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持稳定。在实际的数据集中经常会出现类不平衡现象,而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线的对比。
其中(a)和©为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类器在原始测试集(正负样本分布平衡)的结果,©和(d)是将测试集中负样本的数量增加到原来的10倍。可以明显看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。
PR曲线会面临一个问题,当需要获得更高recall时,model需要输出更多的样本,precision可能会伴随出现下降/不变/升高,得到的曲线会出现浮动差异(出现锯齿),无法像ROC一样保证单调性。所以,对于正负样本分布大致均匀的问题,ROC曲线作为性能指标更鲁棒。
PRC曲线的优势
在正负样本分布得极不均匀(highly skewed datasets),负例远大于正例时,并且这正是该问题正常的样本分布时,PRC比ROC能更有效地反应分类器的好坏,即PRC曲线在正负样本比例悬殊较大时更能反映分类的真实性能。例如上面的©(d)中正负样本比例为1:10,ROC效果依然看似很好,但是PR曲线则表现的比较差。举个例子,
单从图(a)看,这两个分类器都比较完美(非常接近左上角)。而从图(b)可以看出,这两个分类器仍有巨大的提升空间。那么原因是什么呢? 通过看Algorithm1的点 A,可以得出一些结论。首先图(a)和(b中)的点A是相同的点,因为TPR就是Recall,两者是一样的。
假设数据集有100个正样本。可以得到以下结论:
由图(a)点A,可得:TPR=TP/(TP+FN)=TP/所有正样本 =TP/100=0.8,所以TP=80。
由图(b)点A,可得:Precision=TP/(TP+FP)=80/(80+FP)=0.05,所以FP=1520。
再由图(a)点A,可得:FPR=FP/(FP+TN)=FP/所有负样本=1520/所有负样本=0.1,所以负样本数量是15200。
由此,可以得出原数据集中只有100个正样本,却有15200个负样本!这就是极不均匀的数据集。直观地说,在点A处,分类器将1600 (1520+80)个样本预测为positive,而其中实际上只有80个是真正的positive。 我们凭直觉来看,其实这个分类器并不好。但由于真正negative instances的数量远远大约positive,ROC的结果却“看上去很美”,因为这时FPR因为负例基数大的缘故依然很小。所以,在这种情况下,PRC更能体现本质。
ROC曲线与PRC曲线表现差异的原因
为什么会有上面分析到的两者差异呢?下面摘自引用[1]的解释很清楚,FPR 和 TPR (Recall) 只与真实的正例或负例中的一个相关(可以从他们的计算公式中看到),而其他指标如Precision则同时与真实的正例与负例都有关,即下面文字说的“both columns”,这可以结合混淆矩阵和各指标的计算公式明显看到。
思考
1、ctr预估显然是负例 远多于 正例,那为什么业界还普遍用ROC曲线而不是PRC曲线下的面积作为性能指标 ?
思考:
我的思考是,对于ctr预估这个问题,我们需要一个于排序强相关的衡量指标,ROC与PRC都可以,而上面介绍了相比PRC,ROC具有鲁棒性的优势。ROC的缺点是对于ctr这种负例远多于正例的问题,其显示的图像和对应的AUC过于“乐观”,不能很好地反映分类器的真实性能,这意味着,即使算法的AUC约为0.8,看起来已经是一个比较好的值的,算法性能应该很不错,但是PRC曲线告诉我们,还没得很呢,还有很大提升空间。
但是,对于ctr问题本身而言,AUC的高低确实可以衡量两个算法的性能优劣,算法A的AUC大于算法B,那么绝大部分情况下可以认为算法A优于算法B,即以AUC为指标进行模型的快速迭代和选择依然是合理的。
另外很重要的一点是,相比于PRC曲线下的面积计算,AUC的计算更容易。
2、随机猜测的PRC曲线是怎么样的?
【深度学习笔记】ROC曲线 vs Precision-Recall曲线相关推荐
- 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)
深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...
- 深度学习笔记(14) 评估指标
深度学习笔记(14) 评估指标 1. 正交化 2. 单一数字评估指标 3. 满足和优化指标 4. 改变开发/测试集和指标 1. 正交化 搭建建立机器学习系统的挑战之一是,可以尝试和改变的东西太多太多了 ...
- HALCON 21.11:深度学习笔记---分类(10)
HALCON 21.11:深度学习笔记---分类(10) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...
- HALCON 20.11:深度学习笔记(10)---分类
HALCON 20.11:深度学习笔记(10)---分类 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...
- 优达学城-深度学习笔记(一)
优达学城-深度学习笔记(一) 标签: 机器学习 优达学城-深度学习笔记一 一 神经网络简介 最大似然概率 交叉熵Cross entropy 1交叉熵代码实现 2多类别交叉熵 对数几率回归的误差函数co ...
- 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述
<繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...
- 深度学习笔记(18) 迁移学习
深度学习笔记(18) 迁移学习 1. 迁移学习理念 2. 图像识别的迁移学习 3. 语音识别的迁移学习 4. 使用迁移学习的场合 1. 迁移学习理念 深度学习中最强大的理念之一就是: 神经网络可以从一 ...
- 深度学习笔记(10) 优化算法(二)
深度学习笔记(10) 优化算法(二) 1. Adam 优化算法 2. 学习率衰减 3. 局部最优的问题 1. Adam 优化算法 Adam代表的是 Adaptive Moment Estimation ...
- 深度学习笔记(9) 优化算法(一)
深度学习笔记(9) 优化算法(一) 1. Mini-batch 梯度下降 2. 指数加权平均数 3. 动量梯度下降法 4. 均方根反向传播 1. Mini-batch 梯度下降 把训练样本放大巨大的矩 ...
- 深度学习笔记(7) 实践层面(二)
深度学习笔记(7) 实践层面(二) 1. 正则化 2. dropout 正则化 3. 其他正则化方法 1. 正则化 深度学习可能存在过拟合问题--高方差,在确定模型之后有两个解决方法 正则化 准备更多 ...
最新文章
- 编写更好的 Java 单元测试的 7 个技巧
- Spark On YARN 集群安装部署
- Google搜索引擎的十大应用
- CentOS7 FTP安装与配置
- c++ 二维数组传递
- jupyter notebook介绍、安装以及使用教程
- KVM基础安装,手动创建桥
- C++开发 面试问题总结(中兴、CVTE、瑞晟、华为、YY)
- Angular官方教程采坑
- css之box-sizing用法
- 【0day安全-软件漏洞分析技术】笔记
- linux 内核 浮点运算,ARM64与x86_64浮点运算精度比较
- mac系统如何新建文件
- 提升研发质量的三个办法
- 河南科技学院教务管理系统服务器,河南科技学院教务管理系统:http://jwc.hist.edu.cn...
- Android Switch和ToggleButton控件
- 利用计算机绘制地质图的思路和方法,基于规则的地质快速辅助成图
- react 生命挂钩_秋田+ React挂钩=耸人听闻的国家管理食谱
- Ureport2 安装,配置及问题详解
- Android 模拟器加速
热门文章
- NVIDIA Display Container LS 服务意外地终止
- Pytorch yolov3 多GPU 训练
- 文本处理相关资料整理
- numpy基本用法多维数组
- 贝叶斯推断及其互联网应用(三):拼写检查
- java short字段_Java Field setShort()用法及代码示例
- cad批量选择相同块_CAD如何批量重命名图块或样式
- 为什么二级菜单会被挡住_武夷红茶为什么是二级茶?我们平时喝的红茶会不会被加了糖?...
- 如何比较浮点数相等_『GCTT 出品』Go 语言中的比较操作符
- mini2440 uboot使用