【问题标题】:R package pROC always reports AUC > 0.5R 包 pROC 总是报告 AUC > 0.5
【发布时间】:2018-05-14 03:29:22
【问题描述】:

两个

pROC::auc(0:1, 1:0)
pROC::auc(0:1, 0:1)

AUC 为 1..

通过更多的实验,它似乎总是返回 max(AUC, 1 - AUC)。 有没有办法改变这个? 我找不到报告此问题的 GitHub 存储库。

【问题讨论】:

标签: r roc


【解决方案1】:

pROC::roc 中有一个参数direction,默认设置为auto。 来自roc的文档:

direction - 在哪个方向进行比较? “自动”(默认): 自动定义中位数较高的组并取 相应的方向。 “>”:如果控件的预测变量值 组高于病例组的值(对照> t >= 例)。 “

pROC::auc(0:1, 1:0, direction = "<")
pROC::auc(0:1, 0:1,  direction = "<")

Calimo 在 cmets 中给出了这种基本原理的解释:没有理由假设更高的预测值在所有情况下都更积极。与指示负类概率的模型一样

更多内容可以看here

【讨论】:

  • 自动没有任何意义。如果您的预测是错误的,它也应该保留。感谢您的回答。
  • 最初的基本原理并不是“比随机差”,而是没有理由假设更高的预测值在所有情况下都更积极。我见过很多案例,其中较高的值表示负面结果。想一个模型来表示负类的概率。
  • @Calimo 这确实是正确的,我的解释被以下事实所掩盖,因为我总是以1 是二进制分类中概率较高的类的方式设置数据(或者至少这是从模型中寻找)。我还要感谢您pROC
【解决方案2】:

试试 ModelMetrics 中的 auc 函数:

ModelMetrics::auc(0:1, 1:0)
ModelMetrics::auc(0:1, 0:1)

输出:

[1] 0
[1] 1

【讨论】:

  • 这似乎是一个很棒的包,而且速度超级快。谢谢!
猜你喜欢
  • 2019-06-01
  • 2019-07-28
  • 1970-01-01
  • 2013-12-29
  • 2016-08-30
  • 2020-12-30
  • 2012-05-11
  • 1970-01-01
  • 2019-09-21
相关资源
最近更新 更多