Precisión versus área bajo la curva ROC

16

Construí una curva ROC para un sistema de diagnóstico. El área bajo la curva se estimó entonces no paramétricamente como AUC = 0,89. Cuando intenté calcular la precisión en el umbral óptimo (el punto más cercano al punto (0, 1)), ¡obtuve la precisión del sistema de diagnóstico de 0,8, que es menor que el AUC! Cuando verifiqué la precisión en otra configuración de umbral que está muy lejos del umbral óptimo, obtuve una precisión igual a 0,92. ¿Es posible obtener la precisión de un sistema de diagnóstico en el mejor ajuste de umbral más bajo que la precisión en otro umbral y también más bajo que el área bajo la curva? Ver la imagen adjunta por favor.

ingrese la descripción de la imagen aquí

Ali Sultan
fuente
1
¿Podría indicar cuántas muestras había en su análisis? Apuesto a que estaba muy desequilibrado. Además, el AUC y la precisión no se traducen así (cuando dice que la precisión es inferior a AUC), en absoluto.
Firebug
1
269469 son negativos y 37731 son positivos; Este podría ser el problema aquí según las respuestas a continuación (el desequilibrio de clase).
Ali Sultan
tenga en cuenta que el problema no es el desequilibrio de clase per se, es la elección de la medida de evaluación. En general, es más razonable en este escenario, o podría implementar una precisión equilibrada. AUC
Firebug
Una última cosa, si siente que una respuesta respondió a su pregunta, podría considerar "aceptar" la respuesta (la marca de verificación verde). Esto no es obligatorio, pero ayuda a la persona que respondió y también a la organización del sitio (la pregunta cuenta como no contestada hasta que lo haga), y tal vez a las personas que harían la misma pregunta en el futuro.
Firebug

Respuestas:

8

=FPFP+TNTPTP+FN=TP+TNTP+FN+FP+TN

Para decirlo de otra manera, dado que tiene muchas más muestras negativas, si el clasificador predice 0 todo el tiempo, seguirá obteniendo una alta precisión con FPR y TPR cerca de 0.

Lo que llama ajuste de umbral óptimo (el punto más cercano al punto (0, 1)) es solo una de las muchas definiciones de umbral óptimo: no necesariamente optimiza la precisión.

ingrese la descripción de la imagen aquí

Franck Dernoncourt
fuente
10

FPRTPRACC

TPR=True positivePositive cases

FPR=False positiveNegative cases

ACC=TPRPositive cases+(1FPR)Negative casesPositive cases+Negative cases

Entonces, ACCTPRFPR

ACC=TPR+1FPR2

NN+

ACC(NN+)1FPR
ACCFPR

Vea este ejemplo, los negativos superan a los positivos 1000: 1.

data = c(rnorm(10L), rnorm(10000L)+1)
lab = c(rep(1, 10L), rep(-1, 10000L))
plot(data, lab, col = lab + 3)
tresh = c(-10, data[lab == 1], 10)
do.call(function(x) abline(v = x, col = "gray"), list(tresh))

pred = lapply(tresh, function (x) ifelse(data <= x, 1, -1))
res = data.frame(
  acc = sapply(pred, function(x) sum(x == lab)/length(lab)),
  tpr = sapply(pred, function(x) sum(lab == x & x == 1)/sum(lab == 1)),
  fpr = sapply(pred, function(x) sum(lab != x & x == 1)/sum(lab != 1))
)

res[order(res$acc),]

#> res[order(res$acc),]
#           acc tpr    fpr
#12 0.000999001 1.0 1.0000
#11 0.189110889 1.0 0.8117
#9  0.500099900 0.9 0.5003
#2  0.757742258 0.8 0.2423
#5  0.763136863 0.7 0.2368
#4  0.792007992 0.6 0.2078
#10 0.807292707 0.5 0.1924
#3  0.884215784 0.4 0.1153
#7  0.890709291 0.3 0.1087
#6  0.903096903 0.2 0.0962
#8  0.971428571 0.1 0.0277
#1  0.999000999 0.0 0.0000

Ver, cuando fpres 0 acces máximo.

Y aquí está el ROC, con precisión anotada.

plot(sort(res$fpr), sort(res$tpr), type = "S", ylab = "TPR", xlab = "FPR")
text(sort(res$fpr), sort(res$tpr), pos = 4L, lab = round(res$acc[order(res$fpr)], 3L))
abline(a = 0, b = 1)
abline(a = 1, b = -1)

ingrese la descripción de la imagen aquí


AUC es

1-sum(res$fpr[-12]*0.1)
#[1] 0.74608

La conclusión es que puede optimizar la precisión de una manera que resulte en un modelo falso ( tpr= 0 en mi ejemplo). Esto se debe a que la precisión no es una buena métrica, la dicotomización del resultado debe dejarse en manos del responsable de la toma de decisiones.

Se dice que el umbral óptimo es el TPR=1FPR porque de esa manera ambos errores tienen el mismo peso, incluso si la precisión no es óptima.

Cuando tiene clases desequilibradas, la optimización de la precisión puede ser trivial (por ejemplo, predecir a todos como la clase mayoritaria).


AUC

Y lo más importante de todo: ¿por qué AUC es más alto para un clasificador que es menos preciso que para uno que es más preciso?

Firebug
fuente