Yanıtlar:
Temmuz 2016'dan itibaren PRROC paketi hem ROC AUC hem de PR AUC hesaplamak için harika çalışıyor.
probs
Modelinizle hesaplanmış bir olasılık vektörünüz (denir ) olduğunu ve gerçek sınıf etiketlerinin veri çerçevenizde df$label
(0 ve 1) olduğu varsayılırsa , bu kodun çalışması gerekir:
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)
Not: Yalnızca Kaygılı şey kullanmaktır scores.class0 = fg
zaman fg
0 etiket 1 için hesaplanan ve değildir.
Aşağıda, altındaki alanlarla örnek ROC ve PR eğrileri verilmiştir:
Sağdaki çubuklar, eğri üzerinde bir nokta elde edilen eşik olasılıklarıdır.
Rastgele bir sınıflandırıcı için, sınıf dengesizliğine bakılmaksızın ROC AUC değerinin 0,5'e yakın olacağını unutmayın. Ancak, PR AUC zor (bkz . Hassas hatırlama eğrisinde "taban çizgisi" nedir ).
Hassas bir geri çağırma eğrisine sahip olduğunuzda qpPrecisionRecall
, örneğin:
pr <- qpPrecisionRecall(measurements, goldstandard)
bunu yaparak AUC'sini hesaplayabilirsiniz:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
yardım sayfası qpPrecisionRecall
, argümanlarında hangi veri yapısının beklediğiyle ilgili ayrıntılar verir.
AUPRC()
bir fonksiyonudur PerfMeas
çok daha iyi olduğu bir paket pr.curve()
fonksiyon PRROC
verileri çok büyük olduğunda paket.
pr.curve()
bir kabus ve milyonlarca girişe sahip vektörleriniz olduğunda bitirmek sonsuza dek sürüyor. PerfMeas
karşılaştırıldığında saniye sürer. PRROC
R PerfMeas
ile yazılır ve C ile yazılır.