29 votos

Regla de puntuación adecuada cuando hay que tomar una decisión (por ejemplo, correo spam frente a correo jamón).

Frank Harrell, entre otros, insiste en utilizar reglas de puntuación adecuadas para evaluar a los clasificadores. Esto tiene sentido. Si tenemos 500 $0$ s con $P(1)\in[0.45, 0.49]$ y 500 $1$ s con $P(1)\in[0.51, 0.55]$ podemos obtener un clasificador perfecto fijando nuestro umbral en $0.50$ . Sin embargo, ¿es realmente un clasificador mejor que uno que da la $0$ s todo $P(1)\in[0.05, 0.07]$ y el $1$ s todo $P(1)\in[0.93,0.95]$ excepto uno que tiene $P(1)=0.04?$

La puntuación Brier dice que el segundo clasificador aplasta al primero, aunque el segundo no pueda alcanzar una precisión perfecta.

set.seed(2020)
N <- 500
spam_1 <- runif(N, 0.45, 0.49) # category 0
ham_1 <- runif(N, 0.51, 0.55) # category 1
brier_score_1 <- sum((spam_1)^2) + sum((ham_1-1)^2)
spam_2 <- runif(N, 0.05, 0.07) # category 0 
ham_2 <- c(0.04, runif(N-1, 0.93, 0.95)) # category 1
brier_score_2 <- sum((spam_2)^2) + sum((ham_2-1)^2)
brier_score_1 # turns out to be 221.3765
brier_score_2 # turns out to be 4.550592

Sin embargo, si optamos por el segundo clasificador, acabaremos llamando "spam" a un correo electrónico "jamón" y enviándolo a la carpeta de correo no deseado. Dependiendo del contenido del correo, esto podría ser una mala noticia. Con el primer clasificador, si utilizamos un umbral de $0.50$ Siempre clasificamos el spam como spam y el jamón como jamón. El segundo clasificador no tiene un umbral que pueda dar la precisión de clasificación perfecta que sería tan maravillosa para el filtrado de correo electrónico.

Reconozco que no conozco el funcionamiento interno de un filtro de spam, pero sospecho que hay que tomar la difícil decisión de enviar un correo electrónico a la carpeta de spam o dejarlo pasar a la bandeja de entrada. $^{\dagger}$ Aunque el ejemplo concreto de filtrado de correo electrónico no funcione así, hay situaciones en las que hay que tomar decisiones.

Como usuario de un clasificador que tiene que tomar una decisión, ¿cuál es la ventaja de utilizar una regla de puntuación adecuada frente a encontrar el umbral óptimo y luego evaluar el rendimiento cuando clasificamos según ese umbral? Claro, podemos valorar la sensibilidad o la especificidad en lugar de sólo la precisión, pero no obtenemos nada de eso de una regla de puntuación adecuada. Me imagino la siguiente conversación con un directivo.

Yo : "Así que propongo que usemos el segundo modelo, por su puntuación Brier mucho más baja".

Jefe : "¿Así que quiere optar por el modelo que [mete la pata] más a menudo? SEGURIDAD!"

Puedo ver el argumento de que el modelo con la puntuación Brier más baja (buena) pero con menor precisión (mala) podría tener un mejor rendimiento (en términos de precisión de clasificación) a largo plazo y no debería ser penalizado tan duramente por un punto de casualidad que el otro modelo obtiene a pesar de su rendimiento generalmente peor, pero sigue pareciendo una respuesta insatisfactoria para dar a un gerente si estamos haciendo pruebas fuera de la muestra y viendo cómo estos modelos funcionan con datos a los que no fueron expuestos durante el entrenamiento.

$^{\dagger}$ Una alternativa sería algún tipo de tirada de dados basada en la probabilidad determinada por el clasificador. Digamos que obtenemos $P(spam)=0.23$ . A continuación, dibuje una observación $X$ de $\text{Bernoulli}(0.23)$ y enviarlo a la carpeta de spam si $X=1$ . En algún momento, sin embargo, se toma una decisión sobre dónde enviar el correo electrónico, no "el 23% lo envía a la carpeta de spam, el 77% lo deja pasar a la bandeja de entrada".

27voto

icelava Puntos 548

Supongo que soy uno de los "entre otros" así que voy a intervenir.

La versión resumida: Me temo que su ejemplo es un poco un hombre de paja, y no creo que podamos aprender mucho de él.

En el primer caso, sí, puede fijar el umbral de sus predicciones en 0,50 para obtener una clasificación perfecta. Cierto. Pero también vemos que tu modelo es bastante pobre. Tomemos el elemento 127 del grupo spam y comparémoslo con el elemento 484 del grupo jamón. Las probabilidades de que sean spam son de 0,49 y 0,51. (Esto se debe a que elegí la mayor predicción en el grupo de spam y la menor predicción en el grupo de jamón).

Es decir, para el modelo son casi indistinguibles en cuanto a su probabilidad de ser spam. Pero no lo son. En conozca que el primero está prácticamente seguro de ser spam, y el segundo de ser jamón. "Prácticamente seguro" como en "observamos 1000 casos, y el punto de corte siempre trabajado". Decir que las dos instancias tienen prácticamente la misma probabilidad de ser spam es una clara indicación de que nuestro modelo no sabe realmente lo que está haciendo.

Por lo tanto, en este caso, la conversación no debería ser si deberíamos optar por el modelo 1 o por el 2, o si deberíamos decidir entre los dos modelos basándonos en la precisión o en la puntuación Brier. Más bien, deberíamos alimentar las predicciones de ambos modelos con cualquier tercer modelo estándar, como una regresión logística estándar. Esto transformará las predicciones del modelo 1 en predicciones extremadamente seguras que son esencialmente 0 y 1 y, por tanto, reflejan mucho mejor la estructura de los datos. La puntuación Brier de este será mucho menor, del orden de cero. Y del mismo modo, las predicciones del modelo 2 se transformarán en predicciones casi igual de buenas, pero un poco peores, con una puntuación Brier algo superior. Ahora, la puntuación Brier de los dos metamodelos reflejará correctamente que debe preferirse el basado en el (meta)modelo 1.


Y, por supuesto, es probable que la decisión final tenga que utilizar algún tipo de umbral. Dependiendo de los costes de los errores de tipo I y II, el umbral óptimo de coste podría ser distinto de 0,5 (excepto, por supuesto, en el ejemplo que nos ocupa). Después de todo, como usted escribe, puede ser mucho más costoso clasificar erróneamente el jamón como spam que viceversa. Pero como yo escribo en otro lugar una decisión óptima en términos de costes también podría incluir más de un umbral. Es muy posible que una probabilidad de spam prevista muy baja haga que el correo se envíe directamente a su bandeja de entrada, mientras que una probabilidad prevista muy alta podría hacer que se filtrara en el servidor de correo sin que usted lo viera nunca - pero las probabilidades intermedias podrían significar que se insertara un [SOSPECHO DE SPAM] en el asunto, y el correo seguiría enviándose a su bandeja de entrada. La exactitud como medida de evaluación falla en este caso, a menos que empecemos a considerar la exactitud por separado para los múltiples cubos, pero al final, todos los correos "intermedios" se clasificarán como uno u otro, y ¿no deberían haberse enviado al cubo correcto en primer lugar? Por otro lado, unas reglas de puntuación adecuadas pueden ayudarle a calibrar sus predicciones probabilísticas.


Para ser sincero, no creo que los ejemplos deterministas como el que pones aquí sean muy útiles. Si conozca lo que está sucediendo, entonces no estaríamos haciendo clasificación/predicción probabilística en primer lugar, después de todo. Así que yo abogaría por probabilístico ejemplos. He aquí uno de ellos. Generaré 1.000 probabilidades subyacentes verdaderas distribuidas uniformemente en $[0,1]$ y, a continuación, generar reales de acuerdo con esta probabilidad. Ahora no tenemos la separación perfecta que estoy argumentando empaña el ejemplo anterior.

set.seed(2020)
nn <- 1000
true_probabilities <- runif(nn)
actuals <- runif(nn)<true_probabilities

library(beanplot)
beanplot(true_probabilities~actuals, 
    horizontal=TRUE,what=c(0,1,0,0),border=NA,col="lightgray",las=1,
    xlab="True probability")
points(true_probabilities,actuals+1+runif(nn,-0.3,0.3),pch=19,cex=0.6)

beanplot

Ahora, si disponemos de las probabilidades reales, podemos utilizar umbrales basados en los costes como en el caso anterior. Pero normalmente no conocer estas probabilidades reales, pero puede que tengamos que decidir entre modelos que compiten entre sí y que dan como resultado dichas probabilidades. Yo diría que vale la pena buscar un modelo que se acerque lo más posible a esas probabilidades verdaderas, porque, por ejemplo, si tenemos un conocimiento sesgado de las probabilidades verdaderas, cualquier recurso que invirtamos en la búsqueda de un modelo que se acerque lo más posible a esas probabilidades verdaderas será inútil. cambiando el proceso (por ejemplo, en aplicaciones médicas: cribado, inoculación, propagación de cambios en el estilo de vida, ...) o en comprenderlo mejor pueden estar mal asignados. Dicho de otro modo: trabajar con precisión y un umbral significa que no nos importa en absoluto si predecimos una probabilidad $\hat{p}_1$ o $\hat{p}_2$ siempre que esté por encima del umbral, $\hat{p}_i>t$ (y viceversa a continuación $t$ ), por lo que no tenemos ningún incentivo para comprender e investigar los casos de los que no estamos seguros, con tal de llevarlos al lado correcto del umbral.

Veamos un par de probabilidades de predicción mal calibradas. En concreto, para las probabilidades verdaderas $p$ podemos considerar las transformadas de potencia $\hat{p}_x:=p^x$ para algún exponente $x>0$ . Se trata de una transformación monótona, por lo que cualquier umbral que queramos utilizar basado en $p$ también puede transformarse para utilizarse con $\hat{p}_x$ . O, a partir de $\hat{p}_x$ y sin saber $p$ podemos optimice umbrales $\hat{t}_x$ para obtener exactamente las mismas precisiones para $(\hat{p}_x,\hat{t}_x)$ en cuanto a $(\hat{p}_y,\hat{t}_y)$ debido a la monotonicidad. Esto significa que la precisión no sirve de nada en nuestra búsqueda de las probabilidades verdaderas, que corresponden a $x=1$ ¡! Sin embargo (redoble de tambores), las reglas de puntuación adecuadas como la Brier o la puntuación de registro se optimizarán en efecto en la expectativa por el correcto $x=1$ .

brier_score <- function(probs,actuals) mean(c((1-probs)[actuals]^2,probs[!actuals]^2))
log_score <- function(probs,actuals) mean(c(-log(probs[actuals]),-log((1-probs)[!actuals])))

exponents <- 10^seq(-1,1,by=0.1)
brier_scores <- log_scores <- rep(NA,length(exponents))
for ( ii in seq_along(exponents) ) {
    brier_scores[ii] <- brier_score(true_probabilities^exponents[ii],actuals)
    log_scores[ii] <- log_score(true_probabilities^exponents[ii],actuals)
}
plot(exponents,brier_scores,log="x",type="o",xlab="Exponent",main="Brier score",ylab="")
plot(exponents,log_scores,log="x",type="o",xlab="Exponent",main="Log score",ylab="")

scores

9voto

John Richardson Puntos 1197

Creo que merece la pena distinguir entre evaluación de resultados y criterios de selección de modelos.

En la evaluación del rendimiento, lo que se busca es conocer el rendimiento probable del sistema en funcionamiento, a partir de los datos de que se dispone actualmente. Al evaluar el rendimiento, hay que utilizar la métrica adecuada para cada tarea. Por ejemplo, si se trata de un problema de clasificación (es decir, hay que tomar una decisión de "sí" o "no") y los costes de los falsos positivos y los falsos negativos son los mismos, la precisión de la clasificación es un criterio de evaluación adecuado. Obviamente, probablemente querrá evaluar la incertidumbre de la estimación del rendimiento, quizás utilizando la replicación bootstrap.

En cambio, para un criterio de selección de modelos, en el que queremos elegir entre métodos competidores, la precisión puede no ser un buen criterio, aunque sea la principal magnitud de interés. El problema es que la precisión es frágil: si se repitiera el experimento, pero con una muestra diferente de datos de entrenamiento, se podría obtener un límite de decisión ligeramente distinto que diera una precisión muy diferente en los mismos datos de prueba. En este caso, como los márgenes del primer clasificador son bastante pequeños, es más probable que el límite de decisión se desplace si se entrena con una muestra de datos diferente a la del segundo. Del mismo modo, si el clasificador se evalúa con un conjunto diferente de datos de prueba, es más probable que el primer clasificador cometa errores que el segundo. Como los márgenes son pequeños, los nuevos datos de prueba sólo tienen que ser ligeramente diferentes de los antiguos cerca del límite de decisión para que se produzca una clasificación errónea. Por tanto, la puntuación Brier recompensa al segundo clasificador por su mayor estabilidad. Esto es importante, ya que queremos un clasificador que funcione bien en funcionamiento, no sólo en este conjunto de pruebas concreto.

Yo utilizo bastante la máquina de vectores soporte por mínimos cuadrados (y la regresión logística kernel), y se necesita un criterio de selección del modelo para ajustar los hiperparámetros. Lo obvio es utilizar la precisión de validación cruzada como criterio de selección para los problemas en los que la precisión es la cantidad de interés principal. Sin embargo, generalmente es mejor utilizar la puntuación Brier de validación cruzada (o el criterio PRESS equivalente en mi caso), que es menos frágil. Se puede obtener una mayor precisión del modelo final utilizando una regla de puntuación adecuada como criterio de selección del modelo.

Lo aprendí participando en un "Desafío de predicción del rendimiento" organizado por una conferencia, en el que no sólo había que proporcionar las predicciones, sino también una estimación de la precisión (precisión equilibrada en este caso) que tendría el modelo en los datos de prueba. Los retos de este tipo son un buen lugar para descubrir lo que realmente funciona y lo que no, ya que no hay hombres de paja ni "sesgo del operador" en la evaluación. El documento es el siguiente aquí FWIW (preimpresión aquí ).

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