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 = fg
kapanfg
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 qpPrecisionRecall
memberi Anda detail tentang struktur data apa yang diharapkan dalam argumennya.
AUPRC()
adalah fungsi dalam PerfMeas
paket yang jauh lebih baik daripada pr.curve()
fungsi dalam PRROC
paket ketika data sangat besar.
pr.curve()
adalah mimpi buruk dan membutuhkan waktu lama untuk diselesaikan ketika Anda memiliki vektor dengan jutaan entri. PerfMeas
Dibutuhkan detik sebagai perbandingan. PRROC
ditulis dalam R dan PerfMeas
ditulis dalam C.