在R中计算AUPR


14

在ROC下很容易找到包装计算面积,但是有一个包装在精确召回曲线下计算面积吗?


ROCRpROC-真的很好!
弗拉基米尔·乔帕钦

它们当然是,但是AFAIK都无法计算精确调用曲线下的面积。

Answers:


13

截至2016年7月,PRROC软件包非常适合计算ROC AUC和PR AUC。

假设您已经probs使用模型计算出了一个概率向量(称为),并且数据类别中的真实类标签为df$label(0和1),则此代码应该起作用:

install.packages("PRROC")

require(PRROC)
fg <- probs[df$label == 1]
bg <- probs[df$label == 0]

# ROC Curve    
roc <- roc.curve(scores.class0 = fg, scores.class1 = bg, curve = T)
plot(roc)

# PR Curve
pr <- pr.curve(scores.class0 = fg, scores.class1 = bg, curve = T)
plot(pr)

PS:唯一令人不安的是你使用scores.class0 = fg的时候fg计算的标签1也不是0。

以下是示例ROC和PR曲线及其下方的区域:

带有AUC的ROC曲线

带有AUC的PR曲线

右边的条是阈值概率,在该阈值概率处获得曲线上的点。

请注意,对于随机分类器,无论类别不平衡,ROC AUC都将接近0.5。但是,PR AUC非常棘手(请参阅精确召回曲线中的“基线”)。


请参阅上面答案中链接的PRROC文档。
阿伦

2

稍作谷歌搜索将返回一个bioc软件包qpgraphqpPrecisionRecall)和一个颅骨软件包minetauc.pr)。不过,我没有与他们的经验。两者都被设计来处理生物网络。


这个Mint看起来不错,但是它需要一些外部适配器才能从常规数据中进行适当输入:-(

2

获得的精确召回曲线后qpPrecisionRecall,例如:

pr <- qpPrecisionRecall(measurements, goldstandard)

您可以通过执行以下操作来计算其AUC:

f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value

帮助页面qpPrecisionRecall提供有关数据结构期望参数的详细信息。


1
PR曲线是否不需要更多花哨的集成?请参阅:mnd.ly/oWQQw1

1

AUPRC()PerfMeas包中的函数,它比数据很大时的包中的pr.curve()函数好得多PRROCpr.curve()是一场噩梦,当您拥有包含数百万个条目的向量时,它将永远完成。PerfMeas比较需要几秒钟。PRROC用R PerfMeas编写,用C编写。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.