21 votos

Cálculo de AUPR en R

Es fácil encontrar un paquete que calcule el área bajo ROC, pero ¿existe algún paquete que calcule el área bajo la curva precisión-recuerdo?

21voto

Poma Puntos 83

A partir de julio de 2016, el paquete PRROC funciona muy bien para calcular tanto el AUC ROC como el AUC PR.

Suponiendo que ya dispone de un vector de probabilidades (denominado probs ) calculadas con su modelo y las etiquetas de clase verdaderas están en su marco de datos como 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 utilices scores.class0 = fg cuando fg se calcula para la etiqueta 1 y no para la 0.

A continuación se muestran las curvas ROC y PR de ejemplo con las áreas bajo ellas:

ROC Curve with AUC

PR Curve with AUC

Las barras de la derecha son las probabilidades umbral a las que se obtiene un punto en la curva.

Obsérvese que para un clasificador aleatorio, el AUC del ROC se aproximará a 0,5 independientemente del desequilibrio de clases. Sin embargo, el AUC de PR es delicado (véase ¿Qué es la "línea de base" en la curva de precisión y recuperación? ).

4voto

DNN Puntos 6

AUPRC() es una función en PerfMeas que es mucho mejor que el paquete pr.curve() función en PRROC cuando los datos son muy voluminosos. pr.curve() es una pesadilla y tarda una eternidad en terminar cuando tienes vectores con millones de entradas. PerfMeas tarda segundos en comparación. PRROC se escribe en R y PerfMeas está escrito en C.

2voto

DavLink Puntos 101

Un poco de google devuelve un paquete bioc, qpgraph ( qpPrecisionRecall ), y una manivela, minet ( auc.pr ). Sin embargo, no tengo experiencia con ellos. Ambos han sido concebidos para tratar redes biológicas.

2voto

KBulgrien Puntos 11

Una vez que tenga una curva de precisión y recuperación de qpPrecisionRecall por ejemplo:

pr <- qpPrecisionRecall(measurements, goldstandard)

puede calcular su AUC de la siguiente manera:

f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value

la página de ayuda de qpPrecisionRecall te da detalles sobre qué estructura de datos espera en sus argumentos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X