P-R 曲线和 ROC 曲线有什么区别?什么时候用哪个?
简化版
两者都是遍历阈值画出的评估曲线。ROC 曲线 的轴是 FPR(横)和 TPR(纵);P-R 曲线 的轴是 召回率 Recall(横)和精确率 Precision(纵)。关键区别在对类别不平衡的敏感度:ROC 的两个轴分别在正、负样本内部归一化,对类别比例不敏感、比较稳定;而 P-R 曲线的精确率分母含 FP,直接受负样本数量影响,所以在类别极度不平衡(正类很少)时,P-R 曲线更敏感、更能暴露模型的真实问题。经验:关注正类、正负样本悬殊(如欺诈、疾病、检索)用 P-R 曲线;类别较均衡或要综合比较模型用 ROC/AUC。
详细版
两条曲线对比:
| ROC 曲线 | P-R 曲线 | |
|---|---|---|
| 横轴 | FPR = FP/(FP+TN) | Recall = TP/(TP+FN) |
| 纵轴 | TPR = TP/(TP+FN) | Precision = TP/(TP+FP) |
| 理想位置 | 左上角 | 右上角 |
| 面积指标 | AUC(AUROC) | AP / AUPRC |
| 对不平衡 | 不敏感、稳定 | 敏感、随正类比例变 |
| 随机基线 | 对角线(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 的两个轴(TPR、FPR)分别在正样本和负样本内部归一化,所以改变正负样本的比例,ROC 曲线基本不变——它对类别不平衡不敏感、很稳定。
而 P-R 的 Precision 分母含 FP:当负样本极多(正类很少)时,即使模型误报率(FPR)很低,绝对的 FP 数量也可能很大,导致 Precision 显著下降。所以类别越不平衡,P-R 曲线变化越剧烈、越能反映模型在「正类稀少」下的真实困境。
三、举例:为什么不平衡时 ROC 会「骗人」
假设做欺诈检测:10000 笔交易里只有 100 笔欺诈(1% 正类),负样本 9900 笔。某模型抓到 90 个欺诈(TP=90,FN=10),但误报了 900 笔正常交易(FP=900):
- FPR = 900/9900 ≈ 0.09——看着很小!ROC 上这个点靠近左上角,这个 ROC 工作点在横轴上仍可能显得不大;单点不能推出 AUC。
- Precision = 90/(90+900) ≈ 0.09——只有 9%!意味着模型报警的 990 笔里只有 90 笔真欺诈,90% 是误报,实际几乎没法用。
同一个模型,ROC 说「不错」,P-R 说「很差」。因为负样本基数大(9900),900 个 FP 摊到 FPR 里显得微不足道,但摊到 Precision 里就很致命。这就是极端不平衡下 ROC 过于乐观、P-R 更如实的原因。
四、随机基线也不同
- 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:
- 类别相对均衡
- 想要对类别比例稳健、可跨数据集比较的指标
- 关注整体排序能力(正负样本都重要)
- 正类稀少且是关注重点 → P-R 曲线(更敏感、更能反映真实性能)。
- 要一个稳定、与比例无关的综合排序指标 → ROC/AUC。
- 实践中两者常一起看:ROC 看整体排序,P-R 看不平衡下正类的实际可用性。
六、常见追问
- P-R 和 ROC 最本质区别? ROC 对类别不平衡不敏感(TPR/FPR 各自归一化);P-R 对不平衡敏感(Precision 分母含 FP,受负样本数影响)。
- 不平衡为什么用 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 和 P-R 都是遍历阈值的评估曲线,区别在轴和对不平衡的敏感度:ROC(横 FPR、纵 TPR,靠左上,面积 AUC)——TPR/FPR 分别在正/负样本内归一化,对类别比例不敏感、稳定;P-R(横 Recall、纵 Precision,靠右上,面积 AP)——Precision 分母含 FP、受负样本数强影响,对不平衡敏感。所以极端不平衡(正类稀少)时 ROC 偏乐观、会「骗人」(欺诈例:FPR 0.09 好看,但 Precision 0.09 说明 90% 误报),P-R 更如实。随机基线:ROC 是对角线 0.5、P-R 是正类比例的水平线。选择:正类稀少且关注正类用 P-R,类别较均衡或需整体排序概览可看 ROC/AUC,实践常两者一起看。