Jawaban:
Per Juli 2016, paket PRROC bekerja sangat baik untuk menghitung ROC AUC dan PR AUC.
Dengan asumsi Anda sudah memiliki vektor probabilitas (disebut probs) yang dihitung dengan model Anda dan label kelas yang sebenarnya ada dalam bingkai data Anda karena df$label(0 dan 1) kode ini harus berfungsi:
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: Satu-satunya hal yang membingungkan adalah Anda gunakan scores.class0 = fgkapanfg dihitung untuk label 1 dan bukan 0.
Berikut adalah contoh kurva ROC dan PR dengan area di bawahnya:
Batangan di sebelah kanan adalah probabilitas ambang di mana titik pada kurva diperoleh.
Perhatikan bahwa untuk classifier acak, ROC AUC akan mendekati 0,5 terlepas dari ketidakseimbangan kelas. Namun, PR AUC itu rumit (lihat Apa itu "garis dasar" dalam kurva recall presisi ).
Setelah Anda mendapatkan kurva recall presisi qpPrecisionRecall, misalnya:
pr <- qpPrecisionRecall(measurements, goldstandard)
Anda dapat menghitung AUC dengan melakukan ini:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
halaman bantuan qpPrecisionRecallmemberi Anda detail tentang struktur data apa yang diharapkan dalam argumennya.
AUPRC()adalah fungsi dalam PerfMeaspaket yang jauh lebih baik daripada pr.curve()fungsi dalam PRROCpaket ketika data sangat besar.
pr.curve()adalah mimpi buruk dan membutuhkan waktu lama untuk diselesaikan ketika Anda memiliki vektor dengan jutaan entri. PerfMeasDibutuhkan detik sebagai perbandingan. PRROCditulis dalam R dan PerfMeasditulis dalam C.