¡Esta es una revisión vieja del documento!
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:
Precisión=P(Enfermo|Positivo)VPN=P(Sano|Negativo)Sensibilidad=P(Positivo|Enfermo)Especificidad=P(Negativo|Sano)
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:Informedness, Balanced Accuracy, Prevalence threshold (PT), ROC-AUC, Accuracy, Matthews correlation coefficient (MCC), Markedness, Jaccard, F1-score, Fowlkes-Mallows (FM) y PR-AUC
¿Qué métrica elegir? La métrica a elegir depende de lo queramos saber (o no sabemos) de nuestro modelo.
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.
Pero, ¿Cómo es posible que no sepamos la prevalencia? Si la podemos calcular con: Prevalencia=TP+FNTP+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:
¿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 Informednessnormalizado es exactamente igual a BalancedAccuracy
La siguiente gráfica nos puede ayudar a resolver el problema:
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
Según el valor de Informednessnormalizado las 2 curvas de VPP y VPN son cóncavas o convexas o rectas.
Esta diferencia es importante porque normalmente no tenemos valores de sensibilidad y especificidad tan bajos como para que Informednessnormalizado≤0.5 así que solo nos interesan las gráficas que cumplen Informednessnormalizado>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 Informednessnormalizado≤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:
Veamos que cosas vemos en las gráficas:
Vale, pero ¿cual deberíamos usar?. Recordemos el f1-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-AUC que siempre da una valor superior a la media de ? Sinceramente NO. Por ello no recomiendo usar ROC-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=ayEspecificidad=b que si Sensibilida=byEspecificidad=a. Y para casos de Informednessnormalizado>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:Informednessnormalizado Informednessnormalizado=Sensibilidad+Especificidad2
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.
En la siguiente figura podemos ver las 3 métricas para distintas especificidades, sensibilidades y prevalencias.
Al igual que con las anteriores métricas, no nos interesan aquellas con nInformedness menor o igual a 0,5 porque son modelos demasiado malos. Por lo que mostremos ahora la figura con las gráficas que nos intersan.
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 , descarta uno de los dos valores (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 MCC y Markedness, ¿Cuál elegimos? Pues vemos alguna características:
Por ello mi recomendación es quedarnos con aquella que sea más sencilla de interpretar y además que sea igual o menos que la media aritmética, y obviamente la ganadora es Markedness.
Además que más fácil explicar le media aritmética entre VPP y VPN que explicar el MCC.
Así que la conclusión es que en general la mejor media para Métricas de rendimiento global es:Markedness
Markedness=VPP+VPN2
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.
¿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: Cancer de mama es España) . Es decir que la prevalencia es:
Prevalencia=EnfermosCasosTotales=144100.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: Sensibilidad=1Especificidad=1
Pero como hemos dicho: Prevalencia=0
Ahora calculemos los valores de VPP y VPN
Precisión=VPP=Sensibilidad∗PrevalenciaSensibilidad∗Prevalencia+(1−Especificidad)∗(1−Prevalencia)=1∗01∗0+(1−1)∗(1−0)=0
VPN=Especificidad∗(1−Prevalencia)Especificidad∗(1−Prevalencia)+(1−sensibilidad)∗Prevalencia=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)⋅Prevalencia=1+(1−1)∗0=1
MCC=Sensibilidad+Especificidad−1√Prevalencia1−PrevalenciaSensibilidad−Especificidad+1⋅√1−PrevalenciaPrevalenciaEspecificidad−Sensibilidad+1=1+1−1√01⋅1−1+1∗√10⋅1−1+1=1∞=0
MMCnormalizado=nMMC=MMC+12=0+12=0,5
MarkednessNormalizado=nMarkedness=Markedness+12=VPP+VPN2=0+12=0,5
Resumiendo, para un modelo "ideal" con Sensibilidad=1 y Especificidad=1 y Prevalencia=0 nuestras métricas de rendimiento global son: Accuracy=1nMMC=0,5nMarkedness=0,5
¿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. 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) no nos importa los verdaderos negativos TN porque lo fácil es decir para el modelo 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 TN.
Resumiendo:
Pues justamente eso es lo que hacen las métricas para datos desbalaceados ( No tienen en cuenta los verdaderos negativos TN)
Y ahora que hemos explicado que necesitamos nuevas métricas, ¿Cuál debemos usar? Empecemos viendo las fórmulas de las 3 primeras métricas:
IndiceJaccard=TPTP+FN+FPF1-score=TP(TP+FN)+(TP+FP)2Fowlkes−Mallows=TP√(TP+FN)∗(TP+FP)
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.