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曲线相关推荐

  1. 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)

    深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...

  2. 深度学习笔记(14) 评估指标

    深度学习笔记(14) 评估指标 1. 正交化 2. 单一数字评估指标 3. 满足和优化指标 4. 改变开发/测试集和指标 1. 正交化 搭建建立机器学习系统的挑战之一是,可以尝试和改变的东西太多太多了 ...

  3. HALCON 21.11:深度学习笔记---分类(10)

    HALCON 21.11:深度学习笔记---分类(10) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...

  4. HALCON 20.11:深度学习笔记(10)---分类

    HALCON 20.11:深度学习笔记(10)---分类 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...

  5. 优达学城-深度学习笔记(一)

    优达学城-深度学习笔记(一) 标签: 机器学习 优达学城-深度学习笔记一 一 神经网络简介 最大似然概率 交叉熵Cross entropy 1交叉熵代码实现 2多类别交叉熵 对数几率回归的误差函数co ...

  6. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  7. 深度学习笔记(18) 迁移学习

    深度学习笔记(18) 迁移学习 1. 迁移学习理念 2. 图像识别的迁移学习 3. 语音识别的迁移学习 4. 使用迁移学习的场合 1. 迁移学习理念 深度学习中最强大的理念之一就是: 神经网络可以从一 ...

  8. 深度学习笔记(10) 优化算法(二)

    深度学习笔记(10) 优化算法(二) 1. Adam 优化算法 2. 学习率衰减 3. 局部最优的问题 1. Adam 优化算法 Adam代表的是 Adaptive Moment Estimation ...

  9. 深度学习笔记(9) 优化算法(一)

    深度学习笔记(9) 优化算法(一) 1. Mini-batch 梯度下降 2. 指数加权平均数 3. 动量梯度下降法 4. 均方根反向传播 1. Mini-batch 梯度下降 把训练样本放大巨大的矩 ...

  10. 深度学习笔记(7) 实践层面(二)

    深度学习笔记(7) 实践层面(二) 1. 正则化 2. dropout 正则化 3. 其他正则化方法 1. 正则化 深度学习可能存在过拟合问题--高方差,在确定模型之后有两个解决方法 正则化 准备更多 ...

最新文章

  1. 编写更好的 Java 单元测试的 7 个技巧
  2. Spark On YARN 集群安装部署
  3. Google搜索引擎的十大应用
  4. CentOS7 FTP安装与配置
  5. c++ 二维数组传递
  6. jupyter notebook介绍、安装以及使用教程
  7. KVM基础安装,手动创建桥
  8. C++开发 面试问题总结(中兴、CVTE、瑞晟、华为、YY)
  9. Angular官方教程采坑
  10. css之box-sizing用法
  11. 【0day安全-软件漏洞分析技术】笔记
  12. linux 内核 浮点运算,ARM64与x86_64浮点运算精度比较
  13. mac系统如何新建文件
  14. 提升研发质量的三个办法
  15. 河南科技学院教务管理系统服务器,河南科技学院教务管理系统:http://jwc.hist.edu.cn...
  16. Android Switch和ToggleButton控件
  17. 利用计算机绘制地质图的思路和方法,基于规则的地质快速辅助成图
  18. react 生命挂钩_秋田+ React挂钩=耸人听闻的国家管理食谱
  19. Ureport2 安装,配置及问题详解
  20. Android 模拟器加速

热门文章

  1. NVIDIA Display Container LS 服务意外地终止
  2. Pytorch yolov3 多GPU 训练
  3. 文本处理相关资料整理
  4. numpy基本用法多维数组
  5. 贝叶斯推断及其互联网应用(三):拼写检查
  6. java short字段_Java Field setShort()用法及代码示例
  7. cad批量选择相同块_CAD如何批量重命名图块或样式
  8. 为什么二级菜单会被挡住_武夷红茶为什么是二级茶?我们平时喝的红茶会不会被加了糖?...
  9. 如何比较浮点数相等_『GCTT 出品』Go 语言中的比较操作符
  10. mini2440 uboot使用