Answers:
截至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曲线及其下方的区域:
右边的条是阈值概率,在该阈值概率处获得曲线上的点。
请注意,对于随机分类器,无论类别不平衡,ROC AUC都将接近0.5。但是,PR AUC非常棘手(请参阅精确召回曲线中的“基线”)。
获得的精确召回曲线后qpPrecisionRecall
,例如:
pr <- qpPrecisionRecall(measurements, goldstandard)
您可以通过执行以下操作来计算其AUC:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
帮助页面qpPrecisionRecall
提供有关数据结构期望参数的详细信息。