You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言ROCR包ROC曲线阈值设置方法及与ROSE包曲线差异问题

ROCR包阈值数量设置方法

ROCR包默认会使用所有唯一的预测概率作为阈值计算TPR、FPR,没有内置和ROSE包n.thresholds直接对应的参数,你可以手动提取计算结果后采样指定数量的阈值实现相同需求,示例代码如下:

library(ROCR)
pred <- prediction(predicted, response)
perf <- performance(pred, "tpr", "fpr")

# 提取原始计算结果
all_thresholds <- perf@alpha.values[[1]]
all_tpr <- perf@y.values[[1]]
all_fpr <- perf@x.values[[1]]

# 自定义采样100个阈值,可按需修改数量
n_thresholds <- 100
sample_idx <- seq(1, length(all_thresholds), length.out = n_thresholds)
sampled_tpr <- all_tpr[sample_idx]
sampled_fpr <- all_fpr[sample_idx]

# 绘制采样后的ROC曲线,也可自定义着色逻辑实现原生colorize效果
plot(sampled_fpr, sampled_tpr, type = "l", xlab = "假正例率(FPR)", ylab = "真正例率(TPR)")

两个包ROC曲线看起来反转的原因

核心原因是两个包的默认坐标轴设置不同:

  • ROCR中通过performance(pred, "tpr", "fpr")生成的绘图对象,X轴为假正例率(FPR),取值范围01,Y轴为*真正例率(TPR)*,取值范围01,是行业内最常用的ROC曲线展示格式。
  • ROSE的roc.curve默认X轴为特异性(Specificity,即1-FPR),取值范围1~0,Y轴为真正例率(TPR),相当于把标准ROC曲线沿X轴中线翻转,所以视觉上会误以为TPR和FPR被反转。

如果调整坐标轴后结果仍不一致,可以检查两个包对正类标签的定义是否相同,手动指定统一的正类标签即可解决。

内容的提问来源于stack exchange,提问作者Blurryface

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:48:04