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?
14
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 quedf$label
(0 y 1) este código debería funcionar:PD: Lo único desconcertante es que se usa
scores.class0 = fg
cuandofg
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 )?
fuente
Un pequeño google devuelve un paquete bioc, qpgraph (
qpPrecisionRecall
), y uno cran, minet (auc.pr
). Sin embargo, no tengo experiencia con ellos. Ambos han sido diseñados para tratar con redes biológicas.fuente
Una vez que tenga una curva de recuperación de precisión
qpPrecisionRecall
, por ejemplo:puedes calcular su AUC haciendo esto:
la página de ayuda de
qpPrecisionRecall
le brinda detalles sobre qué estructura de datos espera en sus argumentos.fuente
AUPRC()
es una función en elPerfMeas
paquete que es mucho mejor que lapr.curve()
función en elPRROC
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 yPerfMeas
está escrito en C.fuente