Es ist leicht, einen Paketberechnungsbereich unter ROC zu finden, aber gibt es ein Paket, das den Bereich unter der Präzisionsrückrufkurve berechnet?
14
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, dadf$label
(0 und 1) dieser Code funktionieren sollte:PS: Das einzig beunruhigende ist, dass Sie verwenden,
scores.class0 = fg
wennfg
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 ).
quelle
Ein bisschen googeln liefert ein Bioc-Paket, qpgraph (
qpPrecisionRecall
), und ein Cran- Paket , minet (auc.pr
). Ich habe jedoch keine Erfahrung mit ihnen. Beide wurden entwickelt, um mit biologischen Netzwerken umzugehen.quelle
Sobald Sie eine präzise Rückrufkurve erhalten haben
qpPrecisionRecall
, z. B .:Sie können die AUC folgendermaßen berechnen:
Auf der Hilfeseite von
qpPrecisionRecall
erfahren Sie, welche Datenstruktur in ihren Argumenten erwartet wird.quelle
AUPRC()
ist eine Funktion imPerfMeas
Paket, die viel besser ist als diepr.curve()
Funktion imPRROC
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 undPerfMeas
ist in C. geschriebenquelle