P-R 曲线和 ROC 曲线有什么区别?什么时候用哪个?
简化版
两者都遍历分数阈值:ROC 画 FPR–TPR,P-R 画 Recall–Precision。若只改变类别先验而保持正负类条件分数分布,理论 ROC 不变,P-R 会随正类率变化;因此稀有正类且关心报警纯度时,P-R/AP 往往更贴业务。ROC 适合描述正负样本成对排序或指定 FPR 区域的召回,但全局 AUROC 可能稀释业务工作区。选择不应只看“是否均衡”,还要看绝对误报容量、操作区间和评估分布,实践中通常联合报告。
详细版
两条曲线对比:
| ROC 曲线 | P-R 曲线 | |
|---|---|---|
| 横轴 | FPR = FP/(FP+TN) | Recall = TP/(TP+FN) |
| 纵轴 | TPR = TP/(TP+FN) | Precision = TP/(TP+FP) |
| 理想位置 | 左上角 | 右上角 |
| 面积指标 | AUC(AUROC) | AP / AUPRC |
| 对类先验 | 条件分布不变时理论曲线不变 | Precision 随正类率变化 |
| 随机基线 | 对角线(0.5) | 水平线 = 正类比例 |
关键差异根源:
- ROC 的 FPR 分母是负样本数,TPR 分母是正样本数——正负分开归一化,类别比例变了曲线基本不变。
- P-R 的 Precision 分母是 TP+FP——负样本一多,FP 容易变大,Precision 下降明显,曲线随不平衡剧烈变化。
完整版教学
一、两条曲线的定义
ROC 和 P-R 曲线都是遍历所有分类阈值、把每个阈值下的一对指标连成的曲线,用来评价模型在各种权衡下的整体表现。区别只在用哪两个指标做轴:
- ROC 曲线:横轴 FPR = FP/(FP+TN)(误报率),纵轴 TPR = TP/(TP+FN)(召回率)。越靠左上角越好。
- P-R 曲线:横轴 Recall = TP/(TP+FN)(召回率),纵轴 Precision = TP/(TP+FP)(精确率)。越靠右上角越好。
对应的面积指标:ROC 是 AUC(AUROC),P-R 是 AP(平均精确率)/ AUPRC。
ROC 的 FPR 与 TPR 分别在真实负类、正类内部归一化;PR 的 Precision 同时受 TP 与 FP 影响。若保持类条件分数分布不变、只改变类别先验,理论 ROC 不变而 PR 会变化;现实换人群也可能改变条件分布,因此不能说 ROC 永远稳定。
AP 常按 Recall 增量对 Precision 加权求和,AUPRC 也可能指梯形积分。不同库的插值、并列分数和正类定义不同,面积数字不能脱离实现直接比较。
二、核心区别:对类别不平衡的敏感度
这是本题的关键,也是选择两者的依据。区别的根源在于三个指标的分母各含什么:
- TPR 分母 = TP+FN = 正样本总数(只和正样本有关)。
- FPR 分母 = FP+TN = 负样本总数(只和负样本有关)。
- Precision 分母 = TP+FP(含 FP,和负样本数量强相关)。
ROC 的两个轴分别在正类和负类内部归一化。因此,仅改变类别先验且保持 P(score|Y) 不变时,理论 ROC 不变;现实中的人群、标注或采样变化也可能改变类条件分布,所以不能说 ROC 对所有漂移都稳定。
而 P-R 的 Precision 分母含 FP:当负样本极多(正类很少)时,即使模型误报率(FPR)很低,绝对的 FP 数量也可能很大,导致 Precision 显著下降。所以类别越不平衡,P-R 曲线变化越剧烈、越能反映模型在「正类稀少」下的真实困境。
三、举例:为什么较低 FPR 仍可能对应大量误报
假设做欺诈检测:10000 笔交易里只有 100 笔欺诈(1% 正类),负样本 9900 笔。某模型抓到 90 个欺诈(TP=90,FN=10),但误报了 900 笔正常交易(FP=900):
- FPR = 900/9900 ≈ 0.091——即 9.1% 的负类被误报;是否可接受必须结合绝对审核量判断,而且单个 ROC 工作点不能推出 AUC。
- Precision = 90/(90+900) ≈ 0.09——只有 9%!意味着模型报警的 990 笔里只有 90 笔真欺诈,90% 是误报,实际几乎没法用。
两个坐标回答不同问题:ROC 点给出类内 TPR/FPR,P-R 点给出找回率与预测正例纯度。负样本基数很大时,较小的 FPR 仍可能产生超出容量的绝对 FP,Precision 会直接反映这种结果。不是某条曲线“骗人”,而是全局面积或单一坐标可能与业务操作点错位。
四、随机基线也不同
- ROC 的随机基线是固定的对角线(AUC=0.5),和类别比例无关。
- P-R 的随机基线是一条水平线,高度 = 正类比例(正类 1% 时基线就在 0.01)。所以看 P-R 曲线要对照这个随类别变化的基线判断模型好坏。
随机排序的总体期望 ROC 基线是对角线,AUROC=0.5;PR 的期望基线与正类率 π 相关。有限样本经验曲线会围绕基线波动,样本权重也会改变有效先验。
| 正类率 π | 随机 PR 基线 |
|---|---|
| 50% | 0.50 |
| 10% | 0.10 |
| 1% | 0.01 |
AP 跨数据集下降,可能是排序变差,也可能只是先验不同;比较前要固定或报告评估分布。
五、什么时候用哪个
用 P-R 曲线:
- 类别极度不平衡、正类稀少(欺诈、疾病筛查、异常检测、信息检索)
- 主要关注「正类」的查准查全,不太在乎大量负类
用 ROC / AUC:
- 关注正负样本成对排序
- 需要查看指定 FPR 区域的 TPR
- 比较数据集的评估人群、标签和类条件分布口径一致
- 正类稀少且是关注重点 → P-R 曲线(更敏感、更能反映真实性能)。
- 关注成对排序或 FPR 约束 → 看 ROC、partial AUC 与具体工作点;不要把 AUROC 当成与所有分布变化无关。
- 实践中两者常一起看:ROC 看整体排序,P-R 看不平衡下正类的实际可用性。
六、常见追问
- P-R 和 ROC 最本质区别? ROC 比较类内 TPR/FPR;P-R 比较正类召回与预测正例纯度。只改先验且类条件分布不变时,前者理论不变、后者会变。
- 不平衡为什么用 P-R? 负样本多时 ROC/AUC 偏乐观,P-R 能暴露 Precision 低的真实问题。
- P-R 的随机基线是多少? 等于正类比例(不是 0.5)。
- AP 是什么? 按召回率增量对 Precision 加权的平均精确率;它与梯形插值 AUPRC 可能不同,不平衡场景常用它替代 AUC。
- 两条曲线会矛盾吗? 会——不平衡时 ROC 好看但 P-R 差,以关注正类的 P-R 为准。
七、用同一工作点比较两条曲线的观察角度
100 个正例、9900 个负例中,若 TP=90,FN=10,FP=900,TN=9000,则 TPR=0.90、FPR≈0.091、Precision≈0.091。ROC 点 (0.091,0.90) 表明在约 9.1% 的负类误报率下抓到 90% 正类;PR 点 (0.90,0.091) 直接表明报警中仅约 9.1% 为真。这个单一工作点不能推出 AUC 大小,AUC 必须由全部阈值排序计算。
| 情况 | AUROC | AP/AUPRC 的变化 |
|---|---|---|
| 只改变评估集正类占比,类内分数分布不变 | 理论上保持 | 随 prevalence 改变 |
| 类内分数分布也发生漂移 | 可能改变 | 也会改变 |
| 只关心低 FPR 区域 | 全局 AUC可能稀释重点 | PR仍聚焦正类但也需看工作区 |
阈值从高到低 → 同时得到 (FPR,TPR) 与 (Recall,Precision)
→ ROC 看类内率
→ PR 看预测正例的纯度
AP 常按召回率每次增加时的 Precision 加权求和,AUPRC 可能采用梯形积分;不同库和插值约定下二者不必完全相同。跨数据集比较时还要说明先验比例和分布是否一致。
易错点:ROC 对 prevalence 不直接敏感,不代表它对所有数据漂移稳定,更不代表能忽略线上绝对 FP 数。
八、常见误区与追问
- 误区:一个 ROC 工作点很好就能断言 AUC 很高。 AUC取决于全阈值排序,单点不足以确定曲线面积。
- 误区:AP 与任意算法算出的梯形 AUPRC 永远相等。 插值和积分定义不同可能产生差异。
- 追问:PR 的随机基线是什么? 在独立随机排序的期望下与正类 prevalence 对应。
- 追问:ROC 为什么不能自动跨数据集公平比较? 类别条件分数分布、标注和采样机制变化都会改变含义。
- 追问:业务只允许 FPR≤0.1% 怎么办? 比较该局部区域、partial AUC 或约束下的 TPR,而非只看全局 AUC。
九、加强记忆
ROC 用 FPR–TPR 描述类内错误率,P-R 用 Recall–Precision 描述正类找回与报警纯度。只改变先验且保持类条件分数分布时,ROC 理论不变,P-R 与随机基线会随正类率改变;现实分布漂移则两者都可能变。稀有正类和审核容量场景优先看 P-R/AP、绝对 FP 与 Top-K;关注成对排序或低 FPR 区域可看 AUROC/partial AUC 和具体工作点。AP 与梯形 AUPRC 的插值定义可能不同。没有哪条曲线天然“更真实”,必须声明正类、基率、候选集和业务区间并联合解读。