在 ROC 下很容易找到一个包计算面积,但是有没有一个包可以计算精度-召回曲线下的面积?
在 R 中计算 AUPR
机器算法验证
r
精确召回
2022-01-25 15:53:22
4个回答
截至 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
whenfg
为标签 1 而不是 0 计算。
以下是示例 ROC 和 PR 曲线及其下方的面积:
右边的条是获得曲线上一个点的阈值概率。
请注意,对于随机分类器,ROC AUC 将接近 0.5,而与类不平衡无关。但是,PR AUC 很棘手(请参阅精确召回曲线中的“基线”是什么)。
一旦您从 中获得精确召回曲线qpPrecisionRecall
,例如:
pr <- qpPrecisionRecall(measurements, goldstandard)
您可以通过以下方式计算其 AUC:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
的帮助页面qpPrecisionRecall
为您提供有关其参数中期望的数据结构的详细信息。
AUPRC()
是包中的一个函数,在数据很大的时候比包中的函数PerfMeas
要好很多。
当您拥有包含数百万个条目的向量时,这是一场噩梦,并且需要永远完成。相比之下需要几秒钟。用 R编写,用 C 编写。pr.curve()
PRROC
pr.curve()
PerfMeas
PRROC
PerfMeas
其它你可能感兴趣的问题