ROC 曲线与 PR 曲线

ROC 曲线与 PR 曲线

  • ROC 曲线和 PR 曲线是评估机器学习算法性能的两条重要曲线,两者概念比较容易混淆,但是两者的使用场景是不同的。本文主要讲述两种曲线的含义以及应用的场景。

定义

ROC 曲线和 PR 曲线都是用在二分类中,且涉及到下图的几个概念(摘自 The Relationship Between Precision-Recall and ROC Curves)


上面四个指标用大白话解释如下

  • Recall:查全率,正样本中被预测出来是正的比例(越大越好)
  • Precision:查准率,预测的正样本中被正确预测的比例(越大越好)
  • True Positive Rate:跟 Recall 定义一样 (越大越好)
  • FPR : 负样本中被预测为正的比例(越小越好)

对于一个二分类问题,往往要设定一个 threshold,当预测值大于这个 threshold 时预测为正样本,小于这个 threshold 时预测为负样本。如果以 Recall 为横轴,Precision 为纵轴,那么设定一个 threshold 时,便可在坐标轴上画出一个点,设定多个 threshold 则可以画出一条曲线,这条曲线便是 PR 曲线。

PR 曲线是以 Recall 为横轴,Precision 为纵轴;而 ROC曲线则是以 FPR 为横轴,TPR 为纵轴。

那么两者的关系是怎样的?


对比

The Relationship Between Precision-Recall and ROC Curves 中证明了以下两条定理

  • 定理1:对于一个给定的的数据集,ROC空间和PR空间存在一一对应的关系,因为二者包含完全一致的混淆矩阵。我们可以将ROC曲线转化为PR曲线,反之亦然。

  • 定理2:对于一个给定数目的正负样本数据集,曲线 A 在 ROC 空间优于曲线 B ,当且仅当在 PR 空间中曲线 A 也优于曲线 B。

定理 2 中 “曲线A优于曲线B” 是指曲线 B 的所有部分与曲线 A 重合或在曲线 A 之下。而在ROC空间,ROC曲线越凸向左上方向效果越好。与ROC曲线左上凸不同的是,PR曲线是右上凸效果越好。

从定理 2 来看,ROC 空间和 PR 空间两个指标似乎具有冗余性,那么为什么还需要这同时两个指标呢?答案是在两者在样本不均衡的情况下表现有较大差异。


下图是ROC曲线和Precision-Recall曲线的对比,摘自 An introduction to ROC analysis

图 (a) 和 (b) 是在样本正负比例为 1:1 下的 ROC 曲线和PR 曲线,图(c) 和 (d) 是在样本正负比例为 1:100 下的 ROC 曲线和PR 曲线。

从结果来看:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。


文章 An introduction to ROC analysis中认为这是个优点,原因是在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而 ROC 这种对不平衡样本的鲁棒性使得其曲线下的面积 AUC 不会发生突变。

那么,AUC 意味这什么?首先 AUC 值是一个概率值,表示随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率。 AUC计算 - 进阶操作

因此,AUC值实际上反映了模型的 rank 能力,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面。这个指标尤其适用在某些场景下(如 CTR 预估),每次要返回的是最有可能点击的若干个广告(根据CTR排序, 选择排在前面的若干个),实际上便是在考验模型的排序能力。除此之外,CTR 中存在着样本不均衡的问题,正负样本比例通常会大于 1:100,如果采用 PR 曲线,则会导致 AUC 发生剧变,无法较好反映模型效果。

然而,ROC 曲线不会随着类别分布的改变而改变的优点在一定程度上也是其缺点。因为 ROC 曲线这种不变性其实影响着的是 AUC 值,或者说是评估分类器的整体性能。但是在某些场景下,我们会更关注正样本,这时候就要用到 PR 曲线了。


比如说信用卡欺诈检测,我们会更关注 precision 和 recall,比如说如果要求预测出为欺诈的人尽可能准确,那么就是要提高 precision;而如果要尽可能多地预测出潜在的欺诈人群,那么就是要提高 recall。一般来说,提高二分类的 threshold 就能提高 precision,降低 threshold 就能提高 recall,这时便可观察 PR 曲线,得到最优的 threshold。

除此之外,Quora 上的问题

What is the difference between a ROC curve and a precision-recall curve? When should I use each?中也举了一下的例子说明了在欺诈检测的问题中,PR 曲线更能反映结果的变化。

Let’s take an example of fraud detection problem where there are 100 frauds out of 2 million samples.

Algorithm 1: 90 relevant out of 100 identified

Algorithm 2: 90 relevant out of 1000 identified

Evidently, algorithm 1 is more preferable because it identified less number of false positive.

In the context of ROC curve,

Algorithm 1: TPR=90/100=0.9, FPR= 10/1,999,900=0.00000500025

Algorithm 2: TPR=90/100=0.9, FPR=910/1,999,900=0.00045502275

The FPR difference is 0.0004500225

For PR Curve

Algorithm 1: precision=0.9, recall=0.9

Algorithm 2: Precision=90/1000=0.09, recall= 0.9

Precision difference= 0.81

The difference is more apparent in PR curve


总结

综上,有以下几条结论(参考 机器学习之类别不平衡问题 (2) —— ROC和PR曲线

  1. ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能(通常是会计算AUC,表示模型的rank性能),相比而言PR曲线完全聚焦于正例。

  2. 如果有 多份数据且存在不同的类别分布。比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。

  3. 如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。(参考上面 Quora 的例子)

  4. 最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。

ROC 曲线与 PR 曲线的更多相关文章

  1. ROC曲线、PR曲线

    在论文的结果分析中,ROC和PR曲线是经常用到的两个有力的展示图. 1.ROC曲线 ROC曲线(receiver operating characteristic)是一种对于灵敏度进行描述的功能图像. ...

  2. 精确率与召回率,RoC曲线与PR曲线

    在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口 ...

  3. ROC曲线和PR曲线

    转自:http://www.zhizhihu.com/html/y2012/4076.html分类.检索中的评价指标很多,Precision.Recall.Accuracy.F1.ROC.PR Cur ...

  4. ROC曲线 VS PR曲线

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...

  5. 【ROC曲线】关于ROC曲线、PR曲线对于不平衡样本的不敏感性分析说引发的思考

    ROC曲线 在网上有很多地方都有说ROC曲线对于正负样本比例不敏感,即正负样本比例的变化不会改变ROC曲线.但是对于PR曲线就不一样了.PR曲线会随着正负样本比例的变化而变化.但是没有一个有十分具体和 ...

  6. ROC曲线和PR曲线绘制【转】

    TPR=TP/P :真正率:判断对的正样本占所有正样本的比例.  Precision=TP/(TP+FP) :判断对的正样本占判断出来的所有正样本的比例 FPR=FP/N :负正率:判断错的负样本占所 ...

  7. 机器学习之类别不平衡问题 (2) —— ROC和PR曲线

    机器学习之类别不平衡问题 (1) -- 各种评估指标 机器学习之类别不平衡问题 (2) -- ROC和PR曲线 完整代码 ROC曲线和PR(Precision - Recall)曲线皆为类别不平衡问题 ...

  8. P-R曲线及与ROC曲线区别

    一.P-R曲线 P-R曲线刻画查准率和查全率之间的关系,查准率指的是在所有预测为正例的数据中,真正例所占的比例,查全率是指预测为真正例的数据占所有正例数据的比例. 即:查准率P=TP/(TP + FP ...

  9. 查全率(Recall),查准率(Precision),灵敏性(Sensitivity),特异性(Specificity),F1,PR曲线,ROC,AUC的应用场景

    之前介绍了这么多分类模型的性能评价指标(<分类模型的性能评价指标(Classification Model Performance Evaluation Metric)>),那么到底应该选 ...

  10. PR曲线,ROC曲线,AUC指标等,Accuracy vs Precision

    作为机器学习重要的评价指标,标题中的三个内容,在下面读书笔记里面都有讲: http://www.cnblogs.com/charlesblc/p/6188562.html 但是讲的不细,不太懂.今天又 ...

随机推荐

  1. google + chatgpt

    google注册 网址:https://www.google.com/ 使用右上角登录按钮 点击创建账户然后根据步骤注册 chagpt注册 1.https://chat.openai.com/auth ...

  2. 案例:自来水厂项目PM编制问题-检查记录

    1.策划书部分 选择错误.缺失数据 编的太假了 工期对不上.就算按合同实际也没这么长 合同才210天,当然你算上现在可以编远点,但是编合理点 一些瞎编 这瞎编我信了 但是后面空的表是干啥捏?而且数也不 ...

  3. Llinux系统(Centos/Ubuntu/Debian)弹性云数据盘home扩容|云盘一键分扩容

    一.脚本自动处理 适用:数据盘home分区升级扩容合并.云盘升级扩容合并.(注意:不要在宝塔面板终端执行) 输入以下命令执行:  wget -O homeV31.sh http://downinfo. ...

  4. 2023-02-14:魔物了占领若干据点,这些据点被若干条道路相连接, roads[i] = [x, y] 表示编号 x、y 的两个据点通过一条道路连接。 现在勇者要将按照以下原则将这些据点逐一夺回:

    2023-02-14:魔物了占领若干据点,这些据点被若干条道路相连接, roads[i] = [x, y] 表示编号 x.y 的两个据点通过一条道路连接. 现在勇者要将按照以下原则将这些据点逐一夺回: ...

  5. 2022-11-01:给定一个只由小写字母和数字字符组成的字符串str。 要求子串必须只含有一个小写字母,数字字符数量随意。 求这样的子串最大长度是多少?

    2022-11-01:给定一个只由小写字母和数字字符组成的字符串str. 要求子串必须只含有一个小写字母,数字字符数量随意. 求这样的子串最大长度是多少? 答案2022-11-01: 经典的滑动窗口问 ...

  6. phpstudy-sqlilabs-less-2

    题目:GET - Error based - Intiger based 基于错误的数字型注入 ?id=1 ?id=1 order by 3 ?id=-1 union select 1,2,3 ?id ...

  7. 手机app解包

    1.将在网上下载的手机软件放入apps 2.启动 3.查看结果 urls里是网址

  8. Netty实战(一)

    目录 第一章 Java网络编程 1.1 Java NIO 1.2 选择器 第二章 Netty是什么 2.1 Netty简介 2.2 Netty的特性 2.2.1 设计 2.2.2 易于使用 2.2.3 ...

  9. web自动化09-frame切换、多窗口切换

    frame切换 1.html代码: <frameset cols="25%,50%,25%"> <frame src="a.htm"> ...

  10. WPF入门教程系列二十七 ——DataGrid使用示例MVVM模式(4)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...