回答:
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
は、引数でデータ構造が期待するものの詳細が表示されます。