Il est facile de trouver une zone de calcul de package sous ROC, mais existe-t-il un package qui calcule la zone sous une courbe de rappel de précision?
Il est facile de trouver une zone de calcul de package sous ROC, mais existe-t-il un package qui calcule la zone sous une courbe de rappel de précision?
Réponses:
Depuis juillet 2016, le package PRROC fonctionne très bien pour calculer à la fois ROC AUC et PR AUC.
En supposant que vous disposez déjà d'un vecteur de probabilités (appelé probs
) calculé avec votre modèle et que les véritables étiquettes de classe sont dans votre bloc de données car df$label
(0 et 1) ce code devrait fonctionner:
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: La seule chose déconcertante est que vous utilisez scores.class0 = fg
quand fg
est calculé pour l'étiquette 1 et non 0.
Voici les exemples de courbes ROC et PR avec les zones en dessous:
Les barres à droite sont les probabilités de seuil auxquelles un point de la courbe est obtenu.
Notez que pour un classificateur aléatoire, ROC AUC sera proche de 0,5 quel que soit le déséquilibre de classe. Cependant, l'ASC PR est délicate (voir Qu'est - ce que la "ligne de base" dans la courbe de rappel de précision ).
Une fois que vous avez obtenu une courbe de rappel de précision qpPrecisionRecall
, par exemple:
pr <- qpPrecisionRecall(measurements, goldstandard)
vous pouvez calculer son ASC en procédant comme suit:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
la page d'aide de qpPrecisionRecall
vous donne des détails sur ce que la structure de données attend dans ses arguments.
AUPRC()
est une fonction du PerfMeas
package qui est bien meilleure que la pr.curve()
fonction du PRROC
package lorsque les données sont très volumineuses.
pr.curve()
est un cauchemar et prend une éternité pour se terminer lorsque vous avez des vecteurs avec des millions d'entrées. PerfMeas
prend quelques secondes en comparaison. PRROC
s'écrit en R et PerfMeas
s'écrit en C.