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

tidymodels逻辑回归分类中.pred_class与ROC曲线绘制疑问

二分类ROC曲线绘制:.pred_1 vs .pred_0的问题解析

核心原因:阳性类别的匹配顺序错误

roc_curve() 函数默认会把因变量(outcome)的第一个因子水平当作阳性类别。如果你的outcome变量中,0是第一个水平(可通过levels(data_test_pred$outcome)查看顺序),那么:

  • 传入.pred_1时,函数会误将0当作阳性类别,你的预测概率(对应1的概率)和实际阳性类别完全反向,导致ROC曲线落在对角线下方——本质是模型的“真阳性率”与“假阳性率”被颠倒。
  • 传入.pred_0时,预测概率对应函数默认的阳性类别(0),匹配关系正确,曲线看起来正常,但这反映的是模型对0类别的预测性能,并非你关注的1类别的性能。

解决办法

两种直接修正方式任选其一即可:

  1. 调整因变量的因子水平顺序
    将你关注的阳性类别(1)设为第一个水平:
# 转换为因子并重新指定参考水平
data_test_pred$outcome <- relevel(factor(data_test_pred$outcome), ref = "1")
# 绘制正确的ROC曲线
roc1 <- roc_curve(data_test_pred, outcome, .pred_1)
  1. 在roc_curve中明确指定阳性类别
    无需修改因子水平,直接通过positive参数指定阳性类别:
roc1 <- roc_curve(data_test_pred, outcome, .pred_1, positive = "1")

验证

修正后,用.pred_1生成的ROC曲线会回到对角线上方,此时计算的AUC值才是模型对阳性类别1的真实预测性能。比如之前用.pred_0得到的AUC为0.8,反向的.pred_1曲线AUC会是0.2,修正后就能得到正确的0.8。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:31:08