Es fácil encontrar un área de cálculo de paquetes bajo ROC, pero ¿hay un paquete que calcule el área bajo la curva de recuperación de precisión?
Es fácil encontrar un área de cálculo de paquetes bajo ROC, pero ¿hay un paquete que calcule el área bajo la curva de recuperación de precisión?
Respuestas:
A partir de julio de 2016, el paquete PRROC funciona muy bien para calcular tanto ROC AUC como PR AUC.
Suponiendo que ya tiene un vector de probabilidades (llamado probs
) calculado con su modelo y las etiquetas de clase verdaderas están en su marco de datos ya que df$label
(0 y 1) este código debería funcionar:
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)
PD: Lo único desconcertante es que se usa scores.class0 = fg
cuando fg
se calcula para la etiqueta 1 y no para 0.
Aquí están las curvas ROC y PR de ejemplo con las áreas debajo de ellas:
Las barras a la derecha son las probabilidades de umbral en las que se obtiene un punto en la curva.
Tenga en cuenta que para un clasificador aleatorio, ROC AUC estará cerca de 0.5 independientemente del desequilibrio de clase. Sin embargo, el PR AUC es complicado (ver ¿Qué es la "línea de base" en la curva de recuperación de precisión )?
Una vez que tenga una curva de recuperación de precisión qpPrecisionRecall
, por ejemplo:
pr <- qpPrecisionRecall(measurements, goldstandard)
puedes calcular su AUC haciendo esto:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
la página de ayuda de qpPrecisionRecall
le brinda detalles sobre qué estructura de datos espera en sus argumentos.
AUPRC()
es una función en el PerfMeas
paquete que es mucho mejor que la pr.curve()
función en el PRROC
paquete cuando los datos son muy grandes.
pr.curve()
es una pesadilla y lleva mucho tiempo terminar cuando tienes vectores con millones de entradas. PerfMeas
Toma segundos en comparación. PRROC
está escrito en R y PerfMeas
está escrito en C.