====== 8.d Selección de métricas ======
Ahora que vemos visto todas las métricas vamos a explicar cuando usar cada una de ellas.
Las 4 métricas básicas nos da información específicas de aspectos distintos de nuestro modelo:
$$
\begin{array}
\\
Precisión&=&P(Enfermo|Positivo)
\\
VPN&=&P(Sano|Negativo)
\\
Sensibilidad&=&P(Positivo|Enfermo)
\\
Especificidad&=&P(Negativo|Sano)
\end{array}
$$
Pero con las métricas de este tema lo que queremos es resumir en un único número el rendimiento de nuestro modelo. Sin embargo tenemos 11 métricas distintas que pretenden resumir en único número el rendimiento de nuestro modelo:[[.tema08.metricas_derivadas#Informedness]], [[.tema08.metricas_derivadas#Balanced Accuracy]], [[.tema08.metricas_derivadas#Prevalence threshold (PT)]], [[.tema08.metricas_derivadas#ROC-AUC]], [[.tema08.metricas_derivadas#Accuracy]], [[.tema08.metricas_derivadas#Matthews correlation coefficient (MCC)]], [[.tema08.metricas_derivadas#Markedness]], [[.tema08.metricas_derivadas#Jaccard]], [[.tema08.metricas_derivadas#F1-score]], [[.tema08.metricas_derivadas#Fowlkes-Mallows (FM)]] y [[.tema08.metricas_derivadas#PR-AUC]]
¿Qué métrica elegir? La métrica a elegir depende de lo queramos saber (o no sabemos) de nuestro modelo.
{{:clase:iabd:pia:2eval:diagrama_de_flujo_seleccion_de_metricas.png|}}
===== Métricas independientes de la prevalencia =====
Con las métricas independientes de la prevalencia lo que pretendemos es tener un único valor que resuma nuestro modelo pero sin tener en cuenta la prevalencia de nuestros datos. Eso son condiciona a que solo podemos usar métricas que usen únicamente la sensibilidad ( o 1-sensibilida) y especificidad (o 1-especificidad) en la fórmula. El resto de métricas no podremos usarlas ya para calcular su valor tenemos que saber la prevalencia.
* [[.tema08.metricas_derivadas#Informedness]]
* [[.tema08.metricas_derivadas#Balanced Accuracy]]
* [[.tema08.metricas_derivadas#Prevalence threshold (PT)]]
* [[.tema08.metricas_derivadas#ROC-AUC]]
Pero, ¿Cómo es posible que no sepamos la prevalencia? Si la podemos calcular con:
$$
Prevalencia=\frac{TP+FN}{TP+FN+FP+TN}
$$
Vale, esa es la prevalencia de nuestro datos pero puede ser que en la realizad haya otra prevalencia que no sepamos. También puede pasar que haya distintas prevalencias.
Imaginemos un modelo de IA que en base a una foto detecta si una persona está infectada de la malaria. En cada país la prevalencia es muy distinta. Podemos verlo en el siguiente mapa mundial:
{{:clase:iabd:pia:2eval:incidencia-malaria-mundo.png?600|}}
¿Qué prevalencia usamos para evaluar como de bueno es nuestro modelo? Si no sabemos en que país va a usarse el modelo de IA no podremos saber la prevalencia de los datos. En este caso tenemos que restringirnos a usar únicamente a métricas que no dependan de la prevalencia.
Pero , por ejemplo si supiéramos que nuestro modelo lo vamos a usar e Argelia si que ya sabríamos la prevalencia y entonces no usaríamos estas métricas. Porque estas métricas son unas métricas muy pobres al no tener en cuenta la prevalencia. Así que solo las usamos cuando no tenemos ni idea de la prevalencia.
La siguiente pregunta es ¿Cuál de las 3 métricas usamos? Recordar que son solo 3 métricas ya que $Informedness \; normalizado$ es exactamente igual a $Balanced Accuracy$
La siguiente gráfica nos puede ayudar a resolver el problema:
{{:clase:iabd:pia:2eval:comparacion_metricas_sin_prevalencia.png|}}
Lo primero que hay que notar es que las métricas se portan distinto según el valor de $Informedness \; normalizado$.
* Si $Informedness \; normalizado<0.5$ se comportan de una forma.
* Si $Informedness \; normalizado>0.5$ se comportan de otra forma.
* Si $Informedness \; normalizado=0$ se comporta de una forma "média entre las 2".
Tambien se puede hace el mismo cálculo con el valor de $Informedness=Sensibilidad+Expecificidad-1$ pero en este caso el umbral de cambio sería en $0$. Esta última fórmula es la que se suele usar en la literatura científica.
Todo ésto se puede ver mejor en la gráfica de
{{:clase:iabd:pia:2eval:vpp_vpn_vs_prevalencia.png?200|}}
Según el valor de $Informedness \; normalizado$ las 2 curvas de $VPP$ y $VPN$ son cóncavas o convexas o rectas.
* Si $Informedness \; normalizado<0.5$ las curvas de VPP y VPN son convexas
* Si $Informedness \; normalizado>0.5$ las curvas de VPP y VPN son cóncavas
* Si $Informedness \; normalizado=0$ las curvas de VPP y VPN son lineas rectas.
Esta diferencia es importante porque normalmente no tenemos valores de sensibilidad y especificidad tan bajos como para que $Informedness \; normalizado \leq 0.5$ así que solo nos interesan las gráficas que cumplen $Informedness \; normalizado>0.5$. Es decir que no nos interesa ver como se comportan en redes muy malas.
Vemos que las gráficas están pintadas de 2 colores, azules y grises. Las gráficas grises con aquellas cuyo $Informedness \; normalizado \leq 0.5$ y no son interesan ya que tienen un rendimiento demasiado malo. Por otro lado, las gráficas azules son las que nos interesan así que vamos a centrarnos en ellas.
Por ello vamos a volver a pintar la imagen solo con las gráficas que nos interesan:
{{:clase:iabd:pia:2eval:comparacion_metricas_sin_prevalencia_restringida.png|}}
Veamos que cosas vemos en las gráficas:
* Como era de esperar las 3 métricas son independientes de la prevalencia.
* $ROC{\text -}AUC$ es la métrica que tiene siempre mayor valor de las 3 métricas
* $1-PR$ es la métrica que casi siempre tiene menor valor de las 3 métricas
* Por último $nInformedness$ tiene un valor intermedio.
Vale, pero ¿cual deberíamos usar?. Recordemos el $f1{\text -}score$ que nos gustaba porque en caso de que fueran valores distintos la media geométrica era menor que la aritmética. Pues si $nInformedness$ es la media aritmética de $Sensibilida$ y $Especificidad$. ¿Queremos usar $ROC{\text -}AUC$ que siempre da una valor superior a la media de ? Sinceramente **NO**. Por ello no recomiendo usar $ROC{\text -}AUC$
Pues hay otra característica de $1-PR$ y resulta que no es simétrica. Es decir que no tiene el mismo valor si $Sensibilida=a \; {\text y} \; Especificidad=b$ que si $Sensibilida=b \; {\text y} \; Especificidad=a$. Y para casos de $Informedness \; normalizado>0.5$ se da que $1-PR$ tiende a dar mayores valores si la $Especificidad$ es mayor que la sensibilidad y menores al contrario. Por ello es una métrica que tampoco me parece buena ya que en estos casos quiero una media simétrica respecto a los valores de $Sensibilidad$ y $Especificidad$. Aunque podría ser interesante si interesa elegir aquel modelo de IA que tenga una mayor $Especificidad$.
Así que la conclusión es que en general la mejor media para Métricas independientes de la prevalencia es:$Informedness \; normalizado$
$$Informedness \; normalizado=\frac{Sensibilidad+Especificidad}{2}$$
===== Métricas de rendimiento global =====
Con las métricas de rendimiento global lo que pretendemos es obtener también un único número para medir el rendimiento pero también teniendo en cuenta la prevalencia de los datos. Es decir que las métricas que vamos a usar no solo vamos a usar la sensibilidad sino también la especificidad. Y estas son:
* [[.tema08.metricas_derivadas#Accuracy]]
* [[.tema08.metricas_derivadas#Matthews correlation coefficient (MCC)]]
* [[.tema08.metricas_derivadas#Markedness]]
En la siguiente figura podemos ver las 3 métricas para distintas especificidades, sensibilidades y prevalencias.
{{:clase:iabd:pia:2eval:comparacion_metricas_generales.png|}}
La primera métrica que vamos a descartar es la $Accuracy$, que como ya vimos es una métrica que es una linea recta entre especificidad y sensibilidad en función de la prevalencia por lo que en valores extremos de prevalencia , su valor es la especificidad o sensibilidad. Por ello "no vale" como un //resumen// de los tres valores (sensibilidad, especificidad, prevalencia).
Las dos métricas que nos quedan son $nMCC$ y $Markedness$, ¿Cuál elegimos? Pues vemos como comentamos con el $ROC-AUC$ no gustan las métricas que dan valores mayores que la media.
Para ver si $nMCC$ da valores mayores que la media , vamos a ver en las siguientes gráficas cual es la probabilidad de que $nMCC$ sea mayor $nMarkedness$ ya que $nMarkedness$ es la media del ''VPP'' y ''VPN''.
{{:clase:iabd:pia:2eval:diff_nmcc_nmarkedness.png|}}
En esta figura hemos mostrado la relación entre $nMCC$ y $nMarkedness$:
* En la primera fila se muestra la relación entre $nMCC$ y $nMarkedness$ pero para todos los valores de sensibilidad y especificidad es decir el rango $[0-1]$. Como podemos ver no hay una gran correlación entre ellas. Además que $P(nMCC>nMarkedness)=P(nMCCnMarkedness)=P(nMCCnMarkedness)=0.73$; lo cual es muy elevado y eso no nos gusta. Es decir que una probabilidad tan alta implica que en general $nMCC$ es mayor que $nMarkedness$ con lo que no nos interesa usar $nMCC$.
En la siguiente gráfica vamos a ver como evoluciona el valor de $P(nMCC>nMarkedness)$ para valores cada vez mayores de sensibilidad y especificidad.
{{:clase:iabd:pia:2eval:prob_nMCC_mayor_nMarkedness_para_distintas_sen_y_esp.png|}}
Como vemos cuanto mejor es el modelo, mas probabilidad hay que $nMCC$ sea mayor que $nMarkedness$ (excepto para modelos malisimos)
Notar que la gráfica no muestra el resultado cuando nuestra red neuronal tiene valores de esa sensibilidad y especificidad sino cuando nuestro modelo tiene valores mayores o igual al valor del eje X.
Por ello mi recomendación es quedarnos con $nMarkedness$ con el extra de que además es más sencilla de interpretar al ser la media aritmética entre $VPP$ y $VPN$.
Así que la conclusión es que en general la mejor media para Métricas de rendimiento global es:$nMarkedness$
$$nMarkedness=\frac{VPP+VPN}{2}$$
===== Métricas para datos desbalaceados =====
El último grupo de métricas que vamos a ver son las métrica para datos desbalanceados. Datos desbalanceados significa con prevalencias muy pequeñas o muy grandes aunque nos vamos a limitar a hablar cuando la prevalencia tiene un valor muy pequeño.
Se podría hacer el mismo análisis en vez de para prevalencias muy pequeñas , para prevalencias muy grandes y crear métricas simétricas pero no se hace nunca porque es más sencillo intercambiar el significado de los positivos de los negativos y seguir usando las mismas métricas de prevalencias muy pequeñas.
¿Y que entendemos por prevalencias muy pequeñas? Veamos un ejemplo de prevalencia muy pequeña. El cancer de mama tiene una prevalencia de unos 144 casos de cada 100.000 (fuente: {{ :clase:iabd:pia:2eval:infografia_cancer_de_mama.pdf |Cancer de mama es España}}) . Es decir que la prevalencia es:
$$
Prevalencia=\frac{Enfermos}{Casos \; Totales}=\frac{144}{100.000}=0,0014
$$
Eso es lo que queremos decir con una prevalencia muy pequeña, pero en otros problemas podría ser aun mucho más pequeña.
Ahora que sabemos lo que es una prevalencia muy pequeña (datos desbalanceados) nos debemos preguntar ¿porqué necesitamos nuevas métricas para prevalencias muy pequeñas (es decir métricas para datos desbalanceados)?
Para responder esta pregunta vamos a suponer un modelo ideal pero con una prevalencia tan tan pequeña que va a ser cero.
Un modelo ideal va a tener:
$$
\begin{array}
\\
Sensibilidad&=&1
\\
Especificidad&=&1
\end{array}
$$
Pero como hemos dicho:
$$
Prevalencia=0
$$
Ahora calculemos los valores de $VPP$ y $VPN$
$$
Precisión=VPP=\frac{Sensibilidad*Prevalencia}{Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)}=\frac{1*0}{1*0+(1-1)*(1-0)}=0
$$
$$
VPN=\frac{Especificidad*(1-Prevalencia)}{Especificidad*(1-Prevalencia)+(1-sensibilidad)*Prevalencia}=\frac{1*(1-0)}{1*(1-0)+(1-1)*0}=1
$$
Por último vamos a ver los valores de $Accuracy$, $nMCC$ y $nMarkedness$
$$
Accuracy=Especificidad+(Sensibilidad-Especificidad) \cdot Prevalencia=1+(1-1)*0=1
$$
$$
MCC=\frac{Sensibilidad+Especificidad-1}{\sqrt{ \frac{Prevalencia}{1-Prevalencia} Sensibilidad - Especificidad +1} \cdot \sqrt{ \frac{1-Prevalencia}{Prevalencia} Especificidad - Sensibilidad +1}}=\frac{1+1-1}{\sqrt{\frac{0}{1} \cdot 1-1+1}*\sqrt{ \frac{1}{0} \cdot 1-1+1 }}=\frac{1}{\infty}=0
$$
$$
MMC \; normalizado=nMMC=\frac{MMC+1}{2}=\frac{0+1}{2}=0,5
$$
$$
Markedness \; Normalizado=nMarkedness=\frac{Markedness+1}{2}=\frac{VPP+VPN}{2}=\frac{0+1}{2}=0,5
$$
Resumiendo, para un modelo "ideal" con $Sensibilidad=1$ y $Especificidad=1$ y $Prevalencia=0$ nuestras métricas de rendimiento global son:
$$
\begin{array}
\\
Precisión=VPP&=&0
\\
VPN&=&1
\\
Accuracy&=&1
\\
nMMC&=&0,5
\\
nMarkedness&=&0,5
\end{array}
$$
¿No veis que son un poco raros los resultados? La $Accuracy$ nos dice que es un modelo perfecto al ser la $Prevalencia=0$ y $Especificidad=1$ pero $VPP$ sale malísimo, mientras que $nMCC$ y $nMarkedness$ nos dice que nuestro modelo no es mejor que al azar, por último el $VPN$ es perfecto. Son resultados que no tienen mucho sentido, aunque matemáticamente son todos correctos.
¿Qué ha ocurrido? ¿Qué va mal? Pues resulta que en casos de datos desbalanceados (prevalencia muy pequeña) lo que más prima son los los verdaderos negativos mientras que el resto de los valores de la matriz de confusión es como que tienden a cero.
Sin embargo y aquí es lo importante; **no nos importa los verdaderos negativos** porque lo fácil para el modelo es predecir que siempre es negativo y acertará prácticamente siempre porque hay muy pocos positivos, pero eso no es lo que nos interesa. Así que nos interesan nuevas métricas que para calcularlas no se usen los verdaderos negativo.
Resumiendo:
* $TP$: Habrá muy poco pero si los hay, queremos que los detecte
* $FN$: Siempre nos interesa tener en cuenta los errores y por lo tanto que tengan un valor pequeño
* $FP$: Siempre nos interesa tener en cuenta los errores y por lo tanto que tengan un valor pequeño
* $TN$: No nos interesa su valor porque seguro que es muy alto y eso //contamina// el resultado de las métricas del rendimiento global
Pues justamente eso es lo que hacen las métricas para datos desbalaceados ( No tienen en cuenta los verdaderos negativos $TN$)
* [[.tema08.metricas_derivadas#Jaccard]]
* [[.tema08.metricas_derivadas#F1-score]]
* [[.tema08.metricas_derivadas#Fowlkes-Mallows (FM)]]
* [[.tema08.metricas_derivadas#PR-AUC]]
Una métrica para datos desbalanceados es una métrica que no use en el cálculo los verdaderos negativos $TN$. Es decir es una métrica que ignora totalmente ese valor.
Y como hemos visto eso tiene sentido ya que el valor de los verdaderos negativos $TN$ será
desproporcionadamente alto respecto a los demás y desvirtuará el resultado de cualquier métrica que use los verdaderos negativos.
Y ahora que hemos explicado que necesitamos estas métricas, ¿Cuál debemos usar? Empecemos viendo las fórmulas de las 3 primeras métricas:
$$
\begin{array}
\\
Indice \; Jaccard&=&\frac{TP}{TP+FN+FP}
\\
F_1{\text -}score&=&\frac{TP}{\frac{(TP+FN)+(TP+FP)}{2}}
\\
Fowlkes-Mallows&=&\frac{TP}{\sqrt{(TP+FN)*(TP+FP)}}
\end{array}
$$
Las tres métricas tienen en común el numerador que es $TP$ y en el denominador también tienen en común que solo usan $TP$ , $FN$ y $FP$. Sin embargo difieren entre ellos en como calculan el denominador.
¿Cual usar? analicemos como se comportan en la siguiente figura.
{{:clase:iabd:pia:2eval:comparacion_metricas_desbalaceados_sin_pr_auc_alta_especificidad_muy_baja_prevalenica.png|}}
Esta figura muestra los resultados de las tres métricas pero teniendo en cuenta 2 factores:
* La especificidad es muy alta: Eso es normal ya que la mayoría de resultados es verdaderos negativos.
* La prevalencia es muy baja: Tambien es normal ya que es lo importante en este caso.
Analicemos como se comportan:
* Las métricas de $F_1{\text -}score$ y $FM$ son muy parecidas aunque cuando difieren, $F_1{\text -}score$ es la más baja
* $Jaccard$ es la más diferente pero siempre da valores más bajos.
Aunque realmente las 3 tienen valores //semejantes// en el sentido de que no se cruzan sus curvas en ninguna circunstancia (A diferencia de otras métricas vistas anteriormente).
Pero vamos ahora a ver las tres métricas viendo como se comportan usando directamente la matriz de confusión y viendo a que dan más importancia.
Sin embargo aun nos falta el PR-AUC. Que vamos a analizar a continuación.