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

使用R语言pROC包获取ROC曲线最佳阈值出现负值问题求助

R语言pROC包提取ROC曲线最佳阈值为负值的解决方法

问题成因

  • 逻辑回归predict()函数默认返回结果为对数几率(log-odds),而非大众认知中0-1区间的概率值。对数几率本身取值范围为(-∞, +∞),因此得到负阈值属于正常计算结果,并非程序运行错误。
  • coords()函数参数配置错误:你传入了input="threshold"参数,该参数的作用是告知函数第二个输入值的类型为阈值,但你实际传入的是"best"关键字,二者不匹配可能导致返回结果不符合预期。

修复方案

  1. 调整预测值输出为概率格式
    修改predict调用代码,增加type="response"参数,让输出结果落在0-1的概率区间,后续得到的阈值也会对应落在0-1区间:
pre <- predict(QualityLog, qualityTrain, type = "response")
  1. 修正coords函数参数
    移除错误的input参数,正确的最佳阈值提取写法如下:
coord <- coords(modelroc, x = "best", ret = "threshold")

如果需要同时提取该阈值对应的灵敏度、特异度指标,可以修改ret参数配置:

coord <- coords(modelroc, x = "best", ret = c("threshold", "sensitivity", "specificity"))
  1. 特殊场景说明
    如果你业务场景中确实需要使用对数几率作为预测值,负阈值属于完全合理的结果,只要模型AUC、分类效果符合预期就可以正常使用,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:09