Es ist leicht, einen Paketberechnungsbereich unter ROC zu finden, aber gibt es ein Paket, das den Bereich unter der Präzisionsrückrufkurve berechnet?
Es ist leicht, einen Paketberechnungsbereich unter ROC zu finden, aber gibt es ein Paket, das den Bereich unter der Präzisionsrückrufkurve berechnet?
Antworten:
Ab Juli 2016 eignet sich das Paket PRROC hervorragend für die Berechnung von ROC AUC und PR AUC.
Angenommen, Sie haben bereits einen Vektor von Wahrscheinlichkeiten (genannt probs
), die mit Ihrem Modell berechnet wurden, und die wahren Klassenbezeichnungen befinden sich in Ihrem Datenrahmen, da df$label
(0 und 1) dieser Code funktionieren sollte:
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: Das einzig beunruhigende ist, dass Sie verwenden, scores.class0 = fg
wenn fg
für Label 1 und nicht 0 berechnet wird.
Hier sind die Beispiel-ROC- und PR-Kurven mit den Bereichen darunter:
Die Balken rechts sind die Schwellenwahrscheinlichkeiten, bei denen ein Punkt auf der Kurve erhalten wird.
Beachten Sie, dass für einen zufälligen Klassifikator die ROC-AUC unabhängig vom Klassenungleichgewicht nahe bei 0,5 liegt. Die PR AUC ist jedoch schwierig (siehe Was ist "Grundlinie" in der Präzisionsrückrufkurve ).
Sobald Sie eine präzise Rückrufkurve erhalten haben qpPrecisionRecall
, z. B .:
pr <- qpPrecisionRecall(measurements, goldstandard)
Sie können die AUC folgendermaßen berechnen:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
Auf der Hilfeseite von qpPrecisionRecall
erfahren Sie, welche Datenstruktur in ihren Argumenten erwartet wird.
AUPRC()
ist eine Funktion im PerfMeas
Paket, die viel besser ist als die pr.curve()
Funktion im PRROC
Paket, wenn die Daten sehr groß sind.
pr.curve()
ist ein Albtraum und dauert ewig, wenn Sie Vektoren mit Millionen von Einträgen haben. PerfMeas
dauert im Vergleich Sekunden. PRROC
ist in R geschrieben und PerfMeas
ist in C. geschrieben