clase:iabd:pia:2eval:tema08.metricas_derivadas
Diferencias
Muestra las diferencias entre dos versiones de la página.
| — | clase:iabd:pia:2eval:tema08.metricas_derivadas [2025/11/03 11:37] (actual) – creado - editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 8.c Métricas rendimiento general de clasificación ====== | ||
| + | En este apartado vamos a ampliar las métricas que podemos usar con la clasificación binaria. Las métricas básicas ya las vimos en [[tema08.metricas_clasificacion]]. Pero ahora vamos a ver nuevas métricas que intentan resumir en un único número el rendimiento general de la red neuronal. | ||
| + | |||
| + | Las métricas que vamos a ver están en [[https:// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | Las métricas que ya las hemos explicado en el tema anterior son: | ||
| + | * Métricas básicas (Sensibilidad, | ||
| + | * Métricas derivadas según el teorema de bayes (PPV,NPV, FDR y FOR) | ||
| + | |||
| + | Y ahora vamos a explicar las siguiente métricas: | ||
| + | |||
| + | * **Métricas independientes de la prevalencia: | ||
| + | * [[# | ||
| + | * [[#Balanced Accuracy]] | ||
| + | * [[# | ||
| + | * [[# | ||
| + | |||
| + | * **Métricas de rendimiento global:** Usan la prevalencia además de la sensibilidad y especificidad. | ||
| + | * [[# | ||
| + | * [[#Matthews correlation coefficient (MCC)]] | ||
| + | * [[# | ||
| + | |||
| + | * **Métricas para datos desbalaceados: | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[#PR-AUC]] | ||
| + | |||
| + | |||
| + | <note important> | ||
| + | |||
| + | <note tip> | ||
| + | En esta página van a salir la media aritmética, | ||
| + | </ | ||
| + | |||
| + | ==== Normalización ==== | ||
| + | Hay indices como [[#Matthews correlation coefficient (MCC)]] que tiene un rango de -1 a 1. Eso nos puede despistar al comparar valores. Así que en estos casos se creará crear un nuevo índice llamado // | ||
| + | |||
| + | En el caso de rangos de -1 a 1 simplemente habrá que sumar 1 al índice en cuestión y dividirlo entre dos. | ||
| + | |||
| + | $$ | ||
| + | MCC \; Normalizado=nMCC=\frac{MCC+1}{2} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | ==== Fórmulas ==== | ||
| + | Antes de explicar cada fórmula, ponemos ya, a modo de resumen, todas las fórmulas. | ||
| + | |||
| + | ^ Métricas independientes de la prevalencia | ||
| + | ^ Nombre | ||
| + | | [[# | ||
| + | | [[#Balanced Accuracy]] | ||
| + | | [[# | ||
| + | | [[# | ||
| + | |||
| + | ^ Métricas de rendimiento global | ||
| + | ^ Nombre | ||
| + | | [[# | ||
| + | | [[#Matthews correlation coefficient (MCC)|nMCC]] | ||
| + | | [[# | ||
| + | |||
| + | ^ Métricas para datos desbalaceados | ||
| + | ^ Nombre | ||
| + | | [[# | ||
| + | | [[# | ||
| + | | [[# | ||
| + | | [[# | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Informedness ===== | ||
| + | Este índice pretende resumir los valores de sensibilidad y especificidad (también se puede llamar Indice Youden). Su fórmula es: | ||
| + | |||
| + | $$ | ||
| + | Informedness=Sensibilidad+Especificidad-1 | ||
| + | $$ | ||
| + | |||
| + | Como vemos, es la suma de la sensibilidad más la especificidad menos 1. Eso hace que su rango sea de -1 a 1. En estos caso como ya hemos comentado en ese caso calcularemos el $Informedness \; normalizado$ o $nInformedness$ para que tenga un valor de 0 a 1 | ||
| + | |||
| + | $$ | ||
| + | Informedness \; Normalizado=nInformedness=\frac{Informedness+1}{2}=\frac{Sensibilidad+Especificidad}{2} | ||
| + | $$ | ||
| + | |||
| + | Es decir que el $nInformedness$ es simplemente la media aritmética de sensibilidad y especificidad. El cual no es un mal índice si desconocemos totalmente la prevalencia que nos vamos a encontrar. | ||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * {{ : | ||
| + | |||
| + | <note tip> | ||
| + | Para elegir cual es el mejor threshold posible a veces se usa el threshold que genera el mayor valor de Informedness | ||
| + | |||
| + | $$ | ||
| + | Threshold \; que \; máximiza \{ sensibilidad(threhold)+especificidad(threhold)-1 \} \;\; threshold \in [0,1] | ||
| + | $$ | ||
| + | |||
| + | Más información: | ||
| + | * [[https:// | ||
| + | </ | ||
| + | |||
| + | ===== Balanced Accuracy ===== | ||
| + | Realmente esta no es una nueva métrica sino que es la misma que [[# | ||
| + | |||
| + | Si la fórmula de la $Accuracy$ en función de la prevalencia es: | ||
| + | $$ | ||
| + | Accuracy=Especificidad+(Sensibilidad-Especificidad) \cdot Prevalencia | ||
| + | $$ | ||
| + | |||
| + | Y suponiendo que la prevalencia está balanceada, es decir que $Prevalencia=0, | ||
| + | |||
| + | $$ | ||
| + | Accuracy=Especificidad+(Sensibilidad-Especificidad) \cdot \frac{1}{2}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{2 \cdot Especificidad}{2}+\frac{Sensibilidad-Especificidad}{2}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{2 \cdot Especificidad+Sensibilidad-Especificidad}{2}= | ||
| + | $$ | ||
| + | |||
| + | |||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad+Especificidad}{2}=Balanced \; Accuracy | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Balanced \; Accuracy=\frac{Sensibilidad+Especificidad}{2} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | Por eso se llama $Balanced \; Accuracy$ porque es suponiendo que la prevalencia es $0,5$. Pero si nos fijamos esta fórmula es exactamente la misma que la de $nInformedness$ | ||
| + | |||
| + | $$ | ||
| + | Balanced \; Accuracy=nInformedness=\frac{Sensibilidad+Especificidad}{2} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Prevalence threshold (PT) ===== | ||
| + | El $Prevalence \; threshold \; (PT)$ es una métrica un poco extraña ya que lo que nos está diciendo es un valor de la prevalencia. | ||
| + | |||
| + | $$ | ||
| + | Prevalence \; threshold \; (PT)=\frac{\sqrt{Sensibilidad \cdot (1-Especificidad)}-(1-Especificidad)}{Sensibilidad-(1-Especificidad)}=\frac{\sqrt{1-Especificidad}}{\sqrt{Sensibilidad}+\sqrt{1-Especificidad}} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | ¿Y un valor de prevalencia es una métrica? Vamos a explicarlo con la siguiente gráfica: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | En esta gráfica estamos viendo el valor de la precisión (VPP) en función de la prevalencia. En la gráfica de la izquierda para una $Sensibilidad=0.99$ y $Especificidad=0.99$ mientras que en la segunda gráfica para $Sensibilidad=0.01$ y $Especificidad=0.01$. Además en cada gráfica se ve el valor de una prevalencia que corresponde exactamente con el de Prevalence threshold (PT), en la gráfica izquierda el valor de $Prevalence \; threshold \; (PT)=0.99$ y en la gráfica de la derecha el valor de $Prevalence \; threshold \; (PT)=0.91$. Por ultimo en ambos casos hay una recta que va desde el punto (0,1) al punto (1,0) cuya ecuación es $y=1-Prevalencia$. | ||
| + | |||
| + | Una vez hemos explicado la información que sale en cada una de las gráficas, expliquemos que es el $Prevalence \; threshold \; (PT)$, es simplemente el valor de umbral donde se cortan las curvas de precisión y la recta que va de una esquina a otra. Para demostrarlo simplemente debemos igualar ambas curvas y despejar la prevalencia. | ||
| + | |||
| + | $$ | ||
| + | Precisión=\frac{Sensibilidad \cdot Prevalencia}{Sensibilidad \cdot Prevalencia+(1-Expecificidad) \cdot (1-Prevalencia)} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | y=1-Prevalencia | ||
| + | $$ | ||
| + | |||
| + | Si igualamos ambas ecuaciones: | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \cdot Prevalencia}{Sensibilidad \cdot Prevalencia+(1-Expecificidad) \cdot (1-Prevalencia)}=1-Prevalencia | ||
| + | $$ | ||
| + | |||
| + | Y si despejamos la prevalencia se obtiene: | ||
| + | |||
| + | $$ | ||
| + | Prevalencia=\frac{\sqrt{Sensibilidad \cdot (1-Especificidad)}-(1-Especificidad)}{Sensibilidad-(1-Especificidad)}=\frac{\sqrt{1-Especificidad}}{\sqrt{Sensibilidad}+\sqrt{1-Especificidad}} | ||
| + | $$ | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \cdot Prevalencia}{Sensibilidad \cdot Prevalencia+(1-Especificidad) \cdot (1-Prevalencia)}=1-Prevalencia | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia=(1-Prevalencia)[Sensibilidad \cdot Prevalencia+(1-Especificidad) \cdot (1-Prevalencia)] | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia=Sensibilidad \cdot Prevalencia+(1-Especificidad) \cdot (1-Prevalencia) | ||
| + | \\ | ||
| + | -Sensibilidad \cdot Prevalencia^2-(1-Especificidad) \cdot (1-Prevalencia) \cdot Prevalencia | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia+(1-Especificidad) \cdot (1-Prevalencia)-Sensibilidad \cdot Prevalencia^2 | ||
| + | \\ | ||
| + | -(1-Especificidad) \cdot (1-Prevalencia) \cdot Prevalencia-Sensibilidad \cdot Prevalencia=0 | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia+1-Prevalencia-Especificidad+Especificidad \cdot Prevalencia-Sensibilidad \cdot Prevalencia^2 | ||
| + | \\ | ||
| + | -(1-Especificidad) \cdot (1-Prevalencia) \cdot Prevalencia-Sensibilidad \cdot Prevalencia=0 | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia+1-Prevalencia-Especificidad+Especificidad \cdot Prevalencia-Sensibilidad \cdot Prevalencia^2 | ||
| + | \\ | ||
| + | -(1-Prevalencia-Especificidad+Especificidad \cdot Prevalencia) \cdot Prevalencia-Sensibilidad \cdot Prevalencia=0 | ||
| + | $$ | ||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia+1-Prevalencia-Especificidad+Especificidad \cdot Prevalencia-Sensibilidad \cdot Prevalencia^2 | ||
| + | \\ | ||
| + | -Prevalencia+Prevalencia^2+Especificidad \cdot Prevalencia-Especificidad \cdot Prevalencia^2 -Sensibilidad \cdot Prevalencia=0 | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | |||
| + | $$ | ||
| + | 1-2 \cdot Prevalencia-Especificidad+2 \cdot Especificidad \cdot Prevalencia-Sensibilidad \cdot Prevalencia^2 | ||
| + | \\ | ||
| + | +Prevalencia^2-Especificidad \cdot Prevalencia^2 =0 | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | |||
| + | $$ | ||
| + | (1-Sensibilidad-Especificidad) \cdot Prevalencia^2+2 \cdot (Especificidad-1) \cdot Prevalencia+(1-Especificidad)=0 | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | |||
| + | $$ | ||
| + | ax^2+bx+c=0 | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | x=\frac{-b \pm \sqrt{b^2-4ac}}{2a} | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | |||
| + | $$ | ||
| + | Prevalencia=\frac{-2 \cdot (Especificidad-1) \pm \sqrt{(2 \cdot (Especificidad-1))^2-4 \cdot (1-Sensibilidad-Especificidad) \cdot (1-Especificidad)}}{2 \cdot (1-Sensibilidad-Especificidad)} | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | $$ | ||
| + | (2 \cdot (Especificidad-1))^2=4 \cdot (Especificidad-1)^2=4 \cdot (Especificidad^2+1-2 \cdot Especificidad) | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | $$ | ||
| + | 4 \cdot (1-Sensibilidad-Especificidad) \cdot (1-Especificidad)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | 4 \cdot (1-Sensibilidad-Especificidad-Especificidad+Sensibilidad \cdot Especificidad+Especificidad^2)= | ||
| + | $$ | ||
| + | $$ | ||
| + | 4 \cdot (1-Sensibilidad-2 \cdot Especificidad+Sensibilidad \cdot Especificidad+Especificidad^2) | ||
| + | $$ | ||
| + | |||
| + | |||
| + | | ||
| + | |||
| + | $$ | ||
| + | 4 \cdot (Especificidad^2+1-2 \cdot Especificidad)-4 \cdot (1-Sensibilidad-2 \cdot Especificidad+Sensibilidad \cdot Especificidad+Especificidad^2)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | 4 \cdot (Especificidad^2+1-2 \cdot Especificidad-1+Sensibilidad+2 \cdot Especificidad-Sensibilidad \cdot Especificidad-Especificidad^2)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | 4 \cdot (Sensibilidad-Sensibilidad \cdot Especificidad)=4 \cdot Sensibilidad \cdot (1-Especificidad) | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | $$ | ||
| + | Prevalencia=\frac{-2 \cdot (Especificidad-1) \pm \sqrt{4 \cdot Sensibilidad \cdot (1-Especificidad)}}{2 \cdot (1-Sensibilidad-Especificidad)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{-2 \cdot (Especificidad-1) \pm 2 \cdot \sqrt{Sensibilidad \cdot (1-Especificidad)}}{2 \cdot (1-Sensibilidad-Especificidad)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{(1-Especificidad) \pm \sqrt{Sensibilidad \cdot (1-Especificidad)}}{1-Sensibilidad-Especificidad}= | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | |||
| + | $$ | ||
| + | \frac{(1-Especificidad) - \sqrt{Sensibilidad \cdot (1-Especificidad)}}{1-Sensibilidad-Especificidad} | ||
| + | $$ | ||
| + | |||
| + | | ||
| + | |||
| + | $$ | ||
| + | \frac{-(1-Especificidad) + \sqrt{Sensibilidad \cdot (1-Especificidad)}}{-(1-Sensibilidad-Especificidad)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{\sqrt{Sensibilidad \cdot (1-Especificidad)}-(1-Especificidad)}{Sensibilidad-(1-Especificidad)} | ||
| + | $$ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | $$ | ||
| + | Prevalence \; threshold \; (PT)=\frac{\sqrt{Sensibilidad \cdot (1-Especificidad)}-(1-Especificidad)}{Sensibilidad-(1-Especificidad)}=\frac{\sqrt{1-Especificidad}}{\sqrt{Sensibilidad}+\sqrt{1-Especificidad}} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{\sqrt{Sensibilidad \cdot (1-Especificidad)}-(1-Especificidad)}{Sensibilidad-(1-Especificidad)} \cdot \frac{1}{1}= | ||
| + | $$ | ||
| + | |||
| + | |||
| + | $$ | ||
| + | \frac{\sqrt{Sensibilidad \cdot (1-Especificidad)}-(1-Especificidad)}{Sensibilidad-(1-Especificidad)} \cdot \frac{\sqrt{Sensibilidad}+\sqrt{1-Especificidad}}{\sqrt{Sensibilidad}+\sqrt{1-Especificidad}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{[\sqrt{Sensibilidad \cdot (1-Especificidad)}-(1-Especificidad)] \cdot (\sqrt{Sensibilidad}+\sqrt{1-Especificidad})}{[Sensibilidad-(1-Especificidad)] \cdot (\sqrt{Sensibilidad}+\sqrt{1-Especificidad})}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \sqrt{1-Especificidad}-(1-Especificidad)\sqrt{Sensibilidad}+(1-Especificidad)\sqrt{Sensibilidad}-(1-Especificidad)\sqrt{1-Especificidad}}{Sensibilidad \sqrt{Sensibilidad}-(1-Especificidad)\sqrt{Sensibilidad}+Sensibilidad\sqrt{1-Especificidad}-(1-Especificidad)\sqrt{1-Especificidad}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \sqrt{1-Especificidad}-(1-Especificidad)\sqrt{Sensibilidad}+(1-Especificidad)\sqrt{Sensibilidad}-(1-Especificidad)\sqrt{1-Especificidad}}{Sensibilidad \sqrt{Sensibilidad}-(1-Especificidad)\sqrt{Sensibilidad}+Sensibilidad\sqrt{1-Especificidad}-(1-Especificidad)\sqrt{1-Especificidad}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \sqrt{1-Especificidad}-(1-Especificidad)\sqrt{1-Especificidad}}{Sensibilidad \sqrt{Sensibilidad}-(1-Especificidad)\sqrt{Sensibilidad}+Sensibilidad\sqrt{1-Especificidad}-(1-Especificidad)\sqrt{1-Especificidad}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{(Sensibilidad-(1-Especificidad)) \sqrt{1-Especificidad}}{Sensibilidad \sqrt{Sensibilidad}-(1-Especificidad)\sqrt{Sensibilidad}+Sensibilidad\sqrt{1-Especificidad}-(1-Especificidad)\sqrt{1-Especificidad}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{(Sensibilidad-(1-Especificidad)) \sqrt{1-Especificidad}}{Sensibilidad(\sqrt{Sensibilidad}+\sqrt{1-Especificidad})-(1-Especificidad)(\sqrt{Sensibilidad}+\sqrt{1-Especificidad})}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{(Sensibilidad-(1-Especificidad)) \sqrt{1-Especificidad}}{[Sensibilidad-(1-Especificidad)](\sqrt{Sensibilidad}+\sqrt{1-Especificidad})}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{\sqrt{1-Especificidad}}{\sqrt{Sensibilidad}+\sqrt{1-Especificidad}} | ||
| + | $$ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Ahora bien, ¿Que tiene de especial esa prevalencia? | ||
| + | * Gráfica izquierda: Antes de la prevalencia 0.09, aumentar un poquito la prevalencia, | ||
| + | * Gráfica izquierda: | ||
| + | |||
| + | Es decir que $Prevalence \; threshold \; (PT)$ es el punto en el que cambia la // | ||
| + | |||
| + | Y como vemos para la gráfica de la izquierda, que es una buena red neuronal, el valor de $Prevalence \; threshold \; (PT)$ es pequeño y para la gráfica de la derecha, que es una mala red neuronal, el valor de $Prevalence \; threshold \; (PT)$ es alto. Pero como nos gustan métricas cuyo valor sea alto cuanto mejor es la red, nosotros vamos a trabajar con $1-Prevalence \; threshold$ | ||
| + | |||
| + | Con lo que la gráfica con la nueva métrica queda ahora así: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Es decir que para: | ||
| + | * $Sensibilidad=0.99 \; {\text y} \; Especificidad=0.99 \; \; \; \Rightarrow \; \; \; 1-PT=0.91$ | ||
| + | * $Sensibilidad=0.01 \; {\text y} \; Especificidad=0.01 \; \; \; \Rightarrow \; \; \; 1-PT=0.09$ | ||
| + | |||
| + | Podemos ver más ejemplos para diversas sensibilidades y especificidades en la siguiente figura: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | Una característica que tiene esta métrica es que no es simétrica. No da lo mismo si intercambiamos los valores de sensibilidad y especificidad | ||
| + | ^ Sensibilidad | ||
| + | | 0,90 | 0,30 | 0,53 | | ||
| + | | 0,30 | 0,90 | 0,63 | | ||
| + | |||
| + | ^ Sensibilidad | ||
| + | | 0,70 | 0,50 | 0,54 | | ||
| + | | 0,50 | 0,70 | 0,56 | | ||
| + | |||
| + | ^ Sensibilidad | ||
| + | | 0,90 | 0,70 | 0,63 | | ||
| + | | 0,70 | 0,90 | 0,73 | | ||
| + | |||
| + | ===== ROC-AUC ===== | ||
| + | La métrica ROC-AUC es el valor del area bajo la curva ROC. La palabra AUC viene de traducir | ||
| + | |||
| + | Vamos primero a explicar como se calcvula la curva ROC. Lo primero es que cuando predecimos que ciertos valores son Positivos o Negativos, lo hacemos en base a un umbral del resultado de la red neuronal (también llamado '' | ||
| + | |||
| + | La siguiente imagen muestra la distribución de valores que hemos definido como presuntamente Positivos y los presuntamente Negativos. Si superan ese umbral se convierten en Falsos Positivos o Falsos Negativos. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | En las siguientes gráficas vamos a ver como afecta a nuestro modelo el variar el umbral. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Vamos a explicar cada columna de la imagen anterior: | ||
| + | * 1º Columna: Se muestra la distribución de los scores Positivos y los scores Negativos que ha hecho el modelo. Pero según el umbral podrán ser True Positive (TP), True Negative (TN),False Positive (FP) y False Negative (FN) | ||
| + | * 2º Columna: Se muestra como evolucionan | ||
| + | * Se cuenta cuantos Positivos hay bajo el umbral que serán los False Positive (FP) | ||
| + | * Se cuenta cuantos Positivos hay sobre el umbral que serán los True Positive (TP) | ||
| + | * Se cuenta cuantos Negativos hay bajo el umbral que serán los True Negative (TN) | ||
| + | * Se cuenta cuantos Negativos hay sobre el umbral que serán los False Negative (FN) | ||
| + | * 3º Columna: Se calculan las métricas de //True Positive Rate (TPR)// y //False Positive Rate (FPR)// según las siguientes fórmulas: | ||
| + | |||
| + | |||
| + | $$ | ||
| + | \begin{array} | ||
| + | \\ | ||
| + | True \: Positive \: Rate \: (TPR)& | ||
| + | \\ | ||
| + | False \: Positive \: Rate \: (FPR)& | ||
| + | \end{array} | ||
| + | $$ | ||
| + | |||
| + | * 4º Columna: Muestra el //True Positive Rate (TPR)// frente a //False Positive Rate (FPR)//. Es decir que cada punto la '' | ||
| + | |||
| + | Cada una de las filas de la imagen son predicciones distintas, siendo: | ||
| + | * 1º Fila: Una predicción perfecta. | ||
| + | * 2º Fila: Una predicción buena | ||
| + | * 3º Fila: Una predicción mala en la que falla lo mismo que acierta. Sería como hacerlo aleatorio con un 50% de probabilidades de acertar. | ||
| + | * 4º Fila: Una predicción nefasta que falla la mayoría de las veces. | ||
| + | * 5º Fila: Una predicción lamentable que nunca acierta. | ||
| + | |||
| + | Entonces, ¿Que es la ROC-AUC? **Es el área de la curva ROC** es decir el área rosa de las gráficas de la última columna. Si nos fijamos cuanto mejor es la predicción, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | ==== Significado de ROC-AUC ==== | ||
| + | Pero ahora viene lo importante, ¿Que está midiendo el Area bajo la curva ROC o " | ||
| + | |||
| + | Pongamos un pequeño ejemplo: | ||
| + | Imaginemos que tenemos una red neuronal que detecta en base a una imagen de RX de Torax si tenemos neumonía (Positivo) o si no tenemos neumonía (Negativo): | ||
| + | * Elegimos aleatóriamente una imagen que tiene SI neumonía y predecimos con la red neuronal si tiene o no neumonía , la red neuronal nos retornará un resultado , por ejemplo $Y_{score-true}=0, | ||
| + | * Elegimos aleatóriamente otra imagen que tiene NO neumonía y predecimos con la red neuronal si tiene o no neumonía , la red neuronal nos retornará un resultado , por ejemplo $Y_{score-false}=0, | ||
| + | |||
| + | Vemos que $Y_{score-true}> | ||
| + | |||
| + | Por lo tanto: | ||
| + | |||
| + | $$ | ||
| + | P(Y_{score-true}> | ||
| + | $$ | ||
| + | |||
| + | |||
| + | Vale, pero ¿Y que utilidad tiene eso? ¿Para que quiero saber $P(Y_{score-true}> | ||
| + | Sigamos con el ejemplo de una red neuronal que detecta en base a una imagen de RX de Torax si tenemos neumonía (Positivo) o si no tenemos neumonía (Negativo). | ||
| + | |||
| + | * Ejemplo 1: | ||
| + | La red neuronal ha dado los siguientes resultado: | ||
| + | <sxh python> | ||
| + | y_true=[0, | ||
| + | y_score=[0.34, | ||
| + | </ | ||
| + | |||
| + | ^ Score con neumonía=$Y_{score-true}$ | ||
| + | | 0,78 | 0,34 | Si | | ||
| + | | 0,78 | 0,67 | Si | | ||
| + | | 0,78 | 0,51 | Si | | ||
| + | | 0,92 | 0,34 | Si | | ||
| + | | 0,92 | 0,67 | Si | | ||
| + | | 0,92 | 0,51 | Si | | ||
| + | | 0,75 | 0,34 | Si | | ||
| + | | 0,75 | 0,67 | Si | | ||
| + | | 0,75 | 0,51 | Si | | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Hay un total 9 posibilidades, | ||
| + | |||
| + | $$ | ||
| + | P(Score \; con \; neumonía > Score \; sin \; neumonía)=P(Y_{score-true}> | ||
| + | $$ | ||
| + | |||
| + | |||
| + | |||
| + | * Ejemplo 2: | ||
| + | <sxh python> | ||
| + | y_true=[0, | ||
| + | y_score=[0.78, | ||
| + | </ | ||
| + | ^ Score con neumonía=$Y_{score-true}$ | ||
| + | | 0,34 | 0,78 | No | | ||
| + | | 0,34 | 0,92 | No | | ||
| + | | 0,34 | 0,75 | No | | ||
| + | | 0,67 | 0,78 | No | | ||
| + | | 0,67 | 0,92 | No | | ||
| + | | 0,67 | 0,75 | No | | ||
| + | | 0,51 | 0,78 | No | | ||
| + | | 0,51 | 0,92 | No | | ||
| + | | 0,51 | 0,75 | No | | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Hay un total 9 posibilidades, | ||
| + | |||
| + | $$ | ||
| + | P(Score \; con \; neumonía > Score \; sin \; neumonía)=P(Y_{score-true}> | ||
| + | $$ | ||
| + | |||
| + | |||
| + | |||
| + | * Ejemplo 3: | ||
| + | <sxh python> | ||
| + | y_true=[0, | ||
| + | y_score=[0.4, | ||
| + | </ | ||
| + | En este caso | ||
| + | |||
| + | ^ Score con neumonía=$Y_{score-true}$ | ||
| + | | 0,7 | 0,4 | Si | | ||
| + | | 0,7 | 0,6 | Si | | ||
| + | | 0,7 | 0,3 | Si | | ||
| + | | 0,2 | 0,4 | No | | ||
| + | | 0,2 | 0,6 | No | | ||
| + | | 0,2 | 0,3 | No | | ||
| + | | 0,8 | 0,4 | Si | | ||
| + | | 0,8 | 0,6 | Si | | ||
| + | | 0,8 | 0,3 | Si | | ||
| + | |||
| + | |||
| + | |||
| + | Hay un total 9 posibilidades, | ||
| + | |||
| + | $$ | ||
| + | P(Score \; con \; neumonía > Score \; sin \; neumonía)=P(Y_{score-true}> | ||
| + | $$ | ||
| + | |||
| + | Es decir: | ||
| + | * Si $P(Y_{score-true}> | ||
| + | * Si $P(Y_{score-true}> | ||
| + | * Si $P(Y_{score-true}> | ||
| + | |||
| + | Por todo ello nos interesa un valor lo más cercano a 1 en ROC-AUC y eso significará que la red neuronal es más capaz de distinguir lo que tienen neumonía de los que no la tienen. Y todo ello de forma independiente del umbral que elijamos. | ||
| + | |||
| + | ¿Y tiene alguna otra utilidad ROC-AUC? Pues según [[https:// | ||
| + | |||
| + | Pero como en las anteriores métricas que estamos viendo es una métrica que solo se basa en la sensibilidad y la especificidad. | ||
| + | |||
| + | |||
| + | En keras podemos usar la métrica de ROC-AUC de la siguiente forma: | ||
| + | <sxh python> | ||
| + | metrics=[tf.keras.metrics.AUC()] | ||
| + | metrics=[" | ||
| + | </ | ||
| + | |||
| + | y usarla como | ||
| + | <sxh python> | ||
| + | history.history[' | ||
| + | history.history[' | ||
| + | </ | ||
| + | |||
| + | Con sklearn podemos usar la métrica de ROC-AUC de la siguiente forma: | ||
| + | <sxh python> | ||
| + | from sklearn.metrics import roc_auc_score | ||
| + | |||
| + | y_true = np.array([0, | ||
| + | y_score = np.array([0.1, | ||
| + | |||
| + | roc_auc=roc_auc_score(y_true, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Explicación de este tipo de gráficas ==== | ||
| + | Acabamos de ver como funciona ROC-AUC pero existe otra métrica similar llamada [[#pr-auc]] ambas métricas comparten el que se calcula el área bajo la curva. | ||
| + | |||
| + | Así que vamos a explicar el significado de este tipo de métricas. Para ello vamos a poner un ejemplo cotidiano. | ||
| + | |||
| + | Imaginemos que queremos irnos de vacaciones a dos destinos turísticos distintos. Y queremos saber cual de los dos es un mejor destino. | ||
| + | (Los destinos son nuestros modelos de IA que queremos comparar). Tenemos la posibilidad de ir más o menos días y eso lo decidimos nosotros (El número de días es como nuestro umbral). Según el número de días que nos vayamos tenemos dos métricas que evalúan cada destino turístico. | ||
| + | * El dinero que me gasto por irme esos días. | ||
| + | * La felicidad que da por irme esos días. | ||
| + | |||
| + | ¿Podríamos ahora hacer una gráfica en la que para cada número de días que me voy se calculara "El dinero que me gasto" y "La felicidad que me da"? | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * {{ : | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * {{ : | ||
| + | * Cálculo del mejor Threshold: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Accuracy ===== | ||
| + | Accuracy (Exactitud) mide la proporción de predicciones correctas sobre el total de predicciones realizadas. Por lo que su fórmula es: | ||
| + | |||
| + | $$ | ||
| + | Accuracy=\frac{TP+TN}{TP+FN+FP+TN} | ||
| + | $$ | ||
| + | |||
| + | Y también se puede expresar usando Especificidad, | ||
| + | |||
| + | $$ | ||
| + | Accuracy=Especificidad+(Sensibilidad-Especificidad) \cdot Prevalencia | ||
| + | $$ | ||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | $$ | ||
| + | N=Total \; de \; predicciones=TP+FN+FP+TN | ||
| + | $$ | ||
| + | $$ | ||
| + | E=Nº \; de \; enfermos=TP+FN | ||
| + | $$ | ||
| + | $$ | ||
| + | S=Nº \; de \; sanos=FP+TN | ||
| + | $$ | ||
| + | $$ | ||
| + | N=E+S | ||
| + | $$ | ||
| + | $$ | ||
| + | Prevalencia=\frac{E}{N} \; \; \; \; \; \Rightarrow \; \; \; \; \; E=Prevalencia \cdot N | ||
| + | $$ | ||
| + | $$ | ||
| + | 1-Prevalencia=\frac{S}{N} \; \; \; \; \; \Rightarrow \; \; \; \; \; S=(1-Prevalencia) \cdot N | ||
| + | $$ | ||
| + | $$ | ||
| + | Sensibilidad=\frac{TP}{TP+FN}=\frac{TP}{E} \; \; \; \; \; \Rightarrow \; \; \; \; \; TP=Sensibilidad \cdot E=Sensibilidad \cdot Prevalencia \cdot N | ||
| + | $$ | ||
| + | $$ | ||
| + | Especificidad=\frac{TN}{FP+TN}=\frac{TN}{E} \; \; \; \; \; \Rightarrow \; \; \; \; \; TN=Especificidad \cdot S=Especificidad \cdot (1-Prevalencia) \cdot N | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Accuracy=\frac{TP+TN}{N}=\frac{TP+TN}{E+S}= | ||
| + | $$ | ||
| + | $$ | ||
| + | \frac{Sensibilidad \cdot Prevalencia \cdot N+Especificidad \cdot (1-Prevalencia) \cdot N}{Prevalencia \cdot N+(1-Prevalencia) \cdot N}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \cdot Prevalencia+Especificidad \cdot (1-Prevalencia)}{Prevalencia+(1-Prevalencia)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \cdot Prevalencia+Especificidad \cdot (1-Prevalencia)}{Prevalencia-Prevalencia+1}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia+Especificidad \cdot (1-Prevalencia)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia+Especificidad-Especificidad \cdot Prevalencia= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Accuracy=Especificidad+(Sensibilidad-Especificidad) \cdot Prevalencia | ||
| + | $$ | ||
| + | |||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | Esta métrica es la más sencilla de todas ya que simplemente es el " | ||
| + | |||
| + | Como ya hemos comentado, lo bueno que es intrínsecamente nuestro modelo se defiende por las métricas de sensibilidad y especificidad. Sin embargo, la prevalencia modifica el resultado final y es con lo que se calcula el VPP y VPN. Pues bien, lo que queremos es tener un número (en este caso la métrica de Accuracy) y que nos diga cómo es de buena nuestra red neuronal bajo las distintas prevalencias, | ||
| + | |||
| + | En la siguiente figura vemos como se comparta bajo distintos valores de sensibilidad, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Si nos fijamos en cada una de las gráficas, vemos que siempre es una linea recta. Mirando también en la fórmula podemos verlo como una ecuación de primer grado que depende de la prevalencia. El valor de accuracy es una línea recta desde la especificidad hasta la sensibilidad. ¿Es un buen resumen de nuestra red? Pues si tenemos baja prevalencia, | ||
| + | |||
| + | Pero veamos los siguientes ejemplo de matrices de confusión para ver lo poco representativo que es esta métrica: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Matthews Correlation Coefficient (MCC) ===== | ||
| + | El $Matthews \; Correlation \; Coefficient \; (MCC)$ es simplemente el [[https:// | ||
| + | |||
| + | Su fórmula es: | ||
| + | |||
| + | $$ | ||
| + | MCC=\frac{TN \cdot TP-FN \cdot FP}{\sqrt{ (TP+FN)(FP+TN) \cdot (FN+TN)(TP+FP)}} | ||
| + | $$ | ||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | $$ | ||
| + | Coeficiente \; de \; correlación \; de \; Pearson \; para \; una \; muestra=\frac{\sum (x_i-\overline{x})(y_i-\overline{y})}{\sqrt{\sum (x_i-\overline{x})^2}\sqrt{\sum (y_i-\overline{y})^2}} | ||
| + | $$ | ||
| + | |||
| + | Pero se puede simplificar la formula a (véase todos los pasos en [[clase: | ||
| + | |||
| + | $$ | ||
| + | Coeficiente \; de \; correlación \; de \; Pearson \; para \; una \; muestra=\frac{ \sum (x_i y_i) - n \cdot \overline{x} \cdot \overline{y}}{ \sqrt{\sum x_i^2 - n \cdot \overline{x}^2 }\sqrt{\sum y_i^2 - n \cdot \overline{y}^2} } | ||
| + | $$ | ||
| + | |||
| + | |||
| + | Pero para crear en MMC: | ||
| + | * $x_i$: La lista de los valores verdaderos. Que sabemos que valen 0 o 1 | ||
| + | * $y_i$: La lista de los valores predichos. Que sabemos que valen 0 o 1 | ||
| + | |||
| + | Por lo tanto: | ||
| + | $$ | ||
| + | n=TP+FN+FP+TN | ||
| + | $$ | ||
| + | $$ | ||
| + | \sum (x_i y_i)=TP | ||
| + | $$ | ||
| + | $$ | ||
| + | \sum x_i^2=Nº \; Enfermos=TP+FN | ||
| + | $$ | ||
| + | $$ | ||
| + | \sum y_i^2=Nº \; Predichos \; positivos=TP+FP | ||
| + | $$ | ||
| + | $$ | ||
| + | \overline{x}=\frac{Nº \; Enfermos}{n}=\frac{TP+FN}{n}=\frac{TP+FN}{TP+FN+FP+TN} | ||
| + | $$ | ||
| + | $$ | ||
| + | \overline{y}=\frac{Nº \; Predichos \; positivos}{n}=\frac{TP+FP}{n}=\frac{TP+FP}{TP+FN+FP+TN} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | |||
| + | * Y subtituyendo: | ||
| + | |||
| + | $$ | ||
| + | \frac{ \sum (x_i y_i) - n \cdot \overline{x} \cdot \overline{y}}{ \sqrt{\sum x_i^2 - n \cdot \overline{x}^2 }\sqrt{\sum y_i^2 - n \cdot \overline{y}^2} }= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TP-n(\frac{TP+FN}{n})(\frac{TP+FP}{n})}{\sqrt{(TP+FN)-n(\frac{(TP+FN)^2}{n^2})}\sqrt{(TP+FP)-n(\frac{(TP+FP)^2}{n^2})}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{\frac{n^2TP}{n^2}-\frac{n(TP+FN)(TP+FP)}{n^2}}{\sqrt{\frac{n^2(TP+FN)}{n^2}-\frac{n(TP+FN)^2}{n^2}}\sqrt{\frac{n^2(TP+FP)}{n^2}-\frac{n(TP+FP)^2}{n^2}}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{\frac{n^2TP-n(TP+FN)(TP+FP)}{n^2}}{\frac{\sqrt{n^2(TP+FN)-n(TP+FN)^2}}{\sqrt{n^2}}\frac{\sqrt{n^2(TP+FP)-n(TP+FP)^2}}{\sqrt{n^2}}}= | ||
| + | $$ | ||
| + | |||
| + | |||
| + | $$ | ||
| + | \frac{\frac{n^2TP-n(TP+FN)(TP+FP)}{n^2}}{\frac{\sqrt{n^2(TP+FN)-n(TP+FN)^2}}{n}\frac{\sqrt{n^2(TP+FP)-n(TP+FP)^2}}{n}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{\frac{n^2TP-n(TP+FN)(TP+FP)}{n^2}}{\frac{\sqrt{n^2(TP+FN)-n(TP+FN)^2} \cdot \sqrt{n^2(TP+FP)-n(TP+FP)^2}}{n^2}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{n^2TP-n(TP+FN)(TP+FP)}{\sqrt{n^2(TP+FN)-n(TP+FN)^2}\sqrt{n^2(TP+FP)-n(TP+FP)^2}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{n \cdot (nTP-(TP+FN)(TP+FP))}{\sqrt{n^2 \cdot (n(TP+FN)-(TP+FN)^2) \cdot (n(TP+FP)-(TP+FP)^2)}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{n \cdot (nTP-(TP+FN)(TP+FP))}{n \cdot \sqrt{(n(TP+FN)-(TP+FN)^2) \cdot (n(TP+FP)-(TP+FP)^2)}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{nTP-(TP+FN)(TP+FP)}{\sqrt{(n(TP+FN)-(TP+FN)^2) \cdot (n(TP+FP)-(TP+FP)^2)}} | ||
| + | $$ | ||
| + | |||
| + | * Ahora vamos a desarrollar y simplificar únicamente el numerador: | ||
| + | |||
| + | $$ | ||
| + | nTP-(TP+FN)(TP+FP)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | (TP+FN+FP+TN)TP-(TP+FN)(TP+FP)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | TP \cdot TP+FN \cdot TP+FP \cdot TP+TN \cdot TP-TP \cdot TP-FN \cdot TP-TP \cdot FP-FN \cdot FP= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | TN \cdot TP-FN \cdot FP | ||
| + | $$ | ||
| + | |||
| + | * Pasemos ahora a desarrollando y simplificar la parte izquierda del denominador | ||
| + | |||
| + | $$ | ||
| + | n(TP+FN)-(TP+FN)^2= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | (TP+FN+FP+TN)(TP+FN)-(TP+FN)^2= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | TP \cdot TP + FN \cdot TP+ FP \cdot TP+ TN \cdot TP + | ||
| + | \\ | ||
| + | TP \cdot FN + FN \cdot FN + FP \cdot FN + TN \cdot FN - | ||
| + | \\ | ||
| + | TP \cdot TP-FN \cdot FN-TP \cdot FN-TP \cdot FN= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | FP \cdot TP+ TN \cdot TP + FP \cdot FN + TN \cdot FN = | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | TP(FP+TN)+FN(FP+TN)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | (FP+TN)(TP+FN) | ||
| + | $$ | ||
| + | |||
| + | * Y por último la parte derecha del denominador | ||
| + | |||
| + | $$ | ||
| + | n(TP+FP)-(TP+FP)^2= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | (TP+FN+FP+TN)(TP+FP)-(TP+FP)^2= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | TP \cdot TP + FN \cdot TP + FP \cdot TP + TN \cdot TP + | ||
| + | \\ | ||
| + | TP \cdot FP + FN \cdot FP + FP \cdot FP + TN \cdot FP - | ||
| + | \\ | ||
| + | TP \cdot TP-FP \cdot FP-TP \cdot FP-TP \cdot FP= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | FN \cdot TP + TN \cdot TP + FN \cdot FP + TN \cdot FP= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | TP(FN+TN)+FP(FN+TN)= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | (FN+TN)(TP+FP) | ||
| + | $$ | ||
| + | |||
| + | |||
| + | * Y juntando las 3 partes (numerador, izquierda denominador y derecha denominador) se obtiene ya fórmula exacta del MCC | ||
| + | |||
| + | $$ | ||
| + | \frac{nTP-(TP+FN)(TP+FP)}{\sqrt{(n(TP+FN)-(TP+FN)^2) \cdot (n(TP+FP)-(TP+FP)^2)}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TN \cdot TP-FN \cdot FP}{\sqrt{ (FP+TN)(TP+FN) \cdot (FN+TN)(TP+FP)}}=MCC | ||
| + | $$ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | La formula según la prevalencia es: | ||
| + | |||
| + | $$ | ||
| + | MCC=\frac{Sensibilidad+Especificidad-1}{\sqrt{ \frac{Prevalencia}{1-Prevalencia} Sensibilidad - Especificidad +1} \cdot \sqrt{ \frac{1-Prevalencia}{Prevalencia} Especificidad - Sensibilidad +1}} | ||
| + | $$ | ||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | |||
| + | |||
| + | $$ | ||
| + | MCC=\frac{Sensibilidad+Especificidad-1}{\sqrt{ \frac{Prevalencia}{1-Prevalencia} Sensibilidad - Especificidad +1} \cdot \sqrt{ \frac{1-Prevalencia}{Prevalencia} Especificidad - Sensibilidad +1}} | ||
| + | $$ | ||
| + | |||
| + | * Para simplificar la demostración para a hacer los siguientes cambios de variables y simplificaciones: | ||
| + | $$ | ||
| + | \\ | ||
| + | E=Enfermos=TP+FN | ||
| + | \\ | ||
| + | S=Sanos=FP+TN | ||
| + | \\ | ||
| + | Prevalencia=\frac{Enfermos}{Enfermos+Sanos}=\frac{E}{E+S} | ||
| + | \\ | ||
| + | 1-Prevalencia=\frac{Sanos}{Enfermos+Sanos}=\frac{S}{E+S} | ||
| + | \\ | ||
| + | \frac{Prevalencia}{1-Prevalencia}=\frac{E}{E+S} : \frac{S}{E+S}=\frac{E}{S} | ||
| + | \\ | ||
| + | \frac{1-Prevalencia}{Prevalencia}=\frac{S}{E+S} : \frac{E}{E+S} =\frac{S}{E} | ||
| + | $$ | ||
| + | |||
| + | * Ahora vamos a desarrollar y simplificar únicamente el numerador: | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad+Especificidad-1=\frac{TP}{E}+\frac{TN}{S}-1= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{S \cdot TP}{E \cdot S}+\frac{E \cdot TN}{E \cdot S}-\frac{E \cdot S}{E \cdot S}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{S \cdot TP + E \cdot TN - E \cdot S}{E \cdot S}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TP(FP+TN) + TN(TP+FN) | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TP \cdot FP \; + \; TP \cdot TN \; + \; TN \cdot TP \; + \; TN \cdot FN \; - \; TP \cdot FP \; - \; TP \cdot TN \; - \; FN \cdot FP \; - \; FN \cdot TN}{E \cdot S}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TP \cdot TN \; - \; FN \cdot FP}{E \cdot S}= | ||
| + | $$ | ||
| + | |||
| + | |||
| + | * Pasemos ahora a desarrollando y simplificar el contenido de la raíz izquierda del denominador. | ||
| + | |||
| + | $$ | ||
| + | \frac{Prevalencia}{1-Prevalencia} Sensibilidad - Especificidad +1= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{E}{S} \cdot \frac{TP}{E}-\frac{TN}{S}+1= | ||
| + | $$ | ||
| + | $$ | ||
| + | \frac{TP}{S}-\frac{TN}{S}+\frac{S}{S}=\frac{TP}{S}-\frac{TN}{S}+\frac{FP+TN}{S}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TP-TN+FP+TN}{S}=\frac{TP+FP}{S}=\frac{E \cdot (TP+FP)}{E \cdot S}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{(TP+FN) \cdot (TP+FP)}{E \cdot S}= | ||
| + | $$ | ||
| + | |||
| + | * Pasemos ahora a desarrollando y simplificar el contenido de la raíz derecha del denominador. | ||
| + | |||
| + | $$ | ||
| + | \frac{1-Prevalencia}{Prevalencia} Especificidad - Sensibilidad +1 | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{S}{E} \cdot \frac{TN}{S}-\frac{TP}{E}+1= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TN}{E}-\frac{TP}{E}+\frac{E}{E}=\frac{TN}{E}-\frac{TP}{E}+\frac{TP+FN}{E}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TN-TP+TP+FN}{E}=\frac{TN+FN}{E}=\frac{S \cdot (TN+FN)}{E \cdot S} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{(FP+TN) \cdot (TN+FN)}{E \cdot S}= | ||
| + | $$ | ||
| + | |||
| + | * Y juntando las 3 partes (numerador, contenido raíz izquierda denominador y contenido raíz derecha denominador) se obtiene: | ||
| + | |||
| + | $$ | ||
| + | \frac{\frac{TP \cdot TN \; - \; FN \cdot FP}{E \cdot S}}{\sqrt{ \frac{(TP+FN) \cdot (TP+FP)}{E \cdot S}} \cdot \sqrt{ \frac{(FP+TN) \cdot (TN+FN)}{E \cdot S}}}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TN \cdot TP \; - \; FN \cdot FP}{\sqrt{ (TP+FN)(FP+TN) \cdot (FN+TN)(TP+FP) | ||
| + | $$ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | El MMC tiene un valor entre -1 a 1. Siendo: | ||
| + | * $1$ : El clasificador funciona perfectamente y es cuando hay una completa correlación entre lo predicho y lo verdadero. | ||
| + | * $0$ : El clasificador acierta aleatoriamente y es cuando hay una nula correlación entre lo predicho y lo verdadero. | ||
| + | * $-1$ : El clasificador acierta peor que aleatoriamente, | ||
| + | |||
| + | En la siguiente imagen podemos ver distintos valores del Coeficiente de correlación de Pearson: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Es decir que el MMC solo mide la relación lineal entre los valores verdaderos '' | ||
| + | * Si esa relación es lineal directa, el MMC valdrá 1 | ||
| + | * Si no hay una relación lineal, el MMC valdrá 0 | ||
| + | * Si la relación es lineal inversa, el MMC valdrá -1. | ||
| + | |||
| + | Como en otro casos, al ser el MMC un valor de -1 a 1, lo vamos a normalizar para que su valor sea de 0 a 1 y de esa forma sea más sencillo de comparar con otras métricas. A esta nueva métrica la llamaremos $MMC \; normalizado$ o $nMMC$ | ||
| + | |||
| + | $$ | ||
| + | MMC \; normalizado=nMMC=\frac{MMC+1}{2} | ||
| + | $$ | ||
| + | |||
| + | Veamos en la siguiente figura los mismos ejemplos que en $Accuracy$ y los vamos a comparar | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | Podemos hacer uso de la métrica con la función '' | ||
| + | |||
| + | Ejemplo de uso: | ||
| + | <sxh python> | ||
| + | from sklearn.metrics import matthews_corrcoef | ||
| + | |||
| + | y_true = [1, | ||
| + | y_pred = [1, | ||
| + | print(" | ||
| + | |||
| + | y_true = [1, | ||
| + | y_pred = [1, | ||
| + | print(" | ||
| + | |||
| + | y_true = [1, | ||
| + | y_pred = [0, | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | |||
| + | <sxh base> | ||
| + | Valor para una predicción que acierta siempre = 1.0 | ||
| + | Valor para una predicción que acierta la mitad= | ||
| + | Valor para una predicción que nunca acierta | ||
| + | </ | ||
| + | |||
| + | y por último vamos a hacer una prueba si el MCC y el Coeficiente de correlación de Pearson dan el mismo resultado. | ||
| + | |||
| + | <sxh python> | ||
| + | import numpy as np | ||
| + | import tensorflow | ||
| + | from sklearn.metrics import matthews_corrcoef | ||
| + | from scipy.stats import pearsonr | ||
| + | |||
| + | |||
| + | np.random.seed(7) | ||
| + | y_true=np.random.choice([0, | ||
| + | y_pred=np.random.choice([0, | ||
| + | |||
| + | mcc=matthews_corrcoef(y_true, | ||
| + | pearson, | ||
| + | print(f" | ||
| + | print(f" | ||
| + | </ | ||
| + | |||
| + | Y podemos comprobar que ambas métricas dan el mismo resultado. | ||
| + | |||
| + | <sxh base> | ||
| + | MCC : | ||
| + | Pearson: | ||
| + | </ | ||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * {{ : | ||
| + | * [[https:// | ||
| + | |||
| + | ===== Markedness ===== | ||
| + | Este índice pretende resumir los valores del VPP (precisión) y VPN. Su fórmula es: | ||
| + | |||
| + | $$ | ||
| + | Markedness=VPP+VPN-1 | ||
| + | $$ | ||
| + | |||
| + | Como vemos, es la suma de la precisión más la VPN menos 1. Eso hace que su rango sea de -1 a 1. En estos caso como ya hemos comentado en ese caso calcularemos el $Markedness \; normalizado$ o $nMarkedness$ para que tenga un valor de 0 a 1 | ||
| + | |||
| + | $$ | ||
| + | Markedness \; Normalizado=nMarkedness=\frac{Markedness+1}{2}=\frac{VPP+VPN}{2} | ||
| + | $$ | ||
| + | |||
| + | Es decir que el $nMarkedness$ es simplemente la media aritmética de VPP y VPN. Este índice será útil si sabemos la prevalencia y los datos están más o menos balanceados. | ||
| + | |||
| + | Explicar que es lo que mide, es sencillo ya que es la media aritmética entre VPP y VPN. | ||
| + | |||
| + | |||
| + | Veamos en la siguiente figura los mismos ejemplos que en $Accuracy$ y los vamos a comparar | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Para terminar vamos a comparar $nMCC$ y $nMarkedness$ | ||
| + | |||
| + | {{: | ||
| + | ===== Jaccard ===== | ||
| + | El índice Jaccard es simplemente el porcentaje de TP respecto a los TP,FP y FN. Pero en vez de ser un porcentaje de 0 a 100 va de 0 a 1. | ||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{TP}{TP+FP+FN} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{P(Positivo \cap Enfermo)}{P(Positivo \cup Enfermo)}= | ||
| + | $$ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | $$ | ||
| + | \frac{P(Positivo|Enfermo) \cdot P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo \cap Enfermo)}=\frac{P(Positivo|Enfermo) \cdot P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo) \cdot P(Enfermo)} | ||
| + | $$ | ||
| + | |||
| + | * Sabiendo que: | ||
| + | |||
| + | $$ | ||
| + | |||
| + | \begin{array} | ||
| + | \\ | ||
| + | P(Enfermo)& | ||
| + | \\ | ||
| + | |||
| + | |||
| + | |||
| + | P(Sano)& | ||
| + | \\ | ||
| + | P(Positivo)& | ||
| + | \\ | ||
| + | P(Negativo)& | ||
| + | \\ | ||
| + | P(Positivo|Enfermo)& | ||
| + | \end{array} | ||
| + | $$ | ||
| + | |||
| + | * Entonces: | ||
| + | |||
| + | $$ | ||
| + | \frac{P(Positivo|Enfermo) \cdot P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo) \cdot P(Enfermo)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \left ( \frac{TP}{TP+FN} \cdot \frac{TP+FN}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP}{TP+FN+FP+TN}+\frac{TP+FN}{TP+FN+FP+TN}-\frac{TP}{TP+FN} \cdot \frac{TP+FN}{TP+FN+FP+TN} \right )= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \left ( \frac{TP}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP}{TP+FN+FP+TN}+\frac{TP+FN}{TP+FN+FP+TN}-\frac{TP}{TP+FN+FP+TN} \right )= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \left ( \frac{TP}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP+TP+FN-TP}{TP+FN+FP+TN} \right )=\left ( \frac{TP}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP+FN}{TP+FN+FP+TN} \right )= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{TP}{TP+FP+FN}=Indice \; Jaccard | ||
| + | $$ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | La fórmula también se puede expresar usando a $Sensibilidad$ y la $Precision$ | ||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{Precision \cdot Sensibilidad}{Precision+Sensibilidad-Precision \cdot Sensibilidad} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | * Sabemos que: | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad=\frac{TP}{TP+FN} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Precision=\frac{TP}{TP+FP} | ||
| + | $$ | ||
| + | |||
| + | * Despejando $FN$ y $FP$ se obtiene: | ||
| + | |||
| + | $$ | ||
| + | FN=TP \cdot \frac{1-Sensibilidad}{Sensibilidad} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | FP=TP \cdot \frac{1-Precision}{Precision} | ||
| + | $$ | ||
| + | |||
| + | * Ahora substituyendo $FN$ y $FP$ en el índice Jacard se obtiene | ||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{TP}{TP+FP+FN} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | =\frac{TP}{TP+TP \cdot \frac{1-Precision}{Precision}+TP \cdot \frac{1-Sensibilidad}{Sensibilidad}} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | =\frac{1}{1+\frac{1-Precision}{Precision}+\frac{1-Sensibilidad}{Sensibilidad}} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | =\frac{1}{\frac{Precision \cdot Sensibilidad+Sensibilidad \cdot (1-Precision)+Precision \cdot (1-Sensibilidad)}{Precision \cdot Sensibilidad}} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | =\frac{Precision \cdot Sensibilidad}{Precision \cdot Sensibilidad+Sensibilidad \cdot (1-Precision)+Precision \cdot (1-Sensibilidad)} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | =\frac{Precision \cdot Sensibilidad}{Precision \cdot Sensibilidad+Sensibilidad- | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{Precision \cdot Sensibilidad}{Precision+Sensibilidad-Precision \cdot Sensibilidad} | ||
| + | $$ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Por último se puede expresar en función de $Sensibilidad$ , $Especificidad$ y $Prevalencia$: | ||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{Sensibilidad \cdot Prevalencia}{(1-Especificidad) \cdot (1-Prevalencia)+Prevalencia} | ||
| + | $$ | ||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | |||
| + | * Usando el teorema de bayes podemos definir P(Positivo) de la siguiente forma: | ||
| + | $$ | ||
| + | P(Positivo)=\frac{P(Positivo|Enfermo) \cdot P(Enfermo)}{P(Enfermo|Positivo)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{P(Positivo|Enfermo) \cdot P(Enfermo)}{1} \div \frac{P(Positivo|Enfermo) \cdot P(Enfermo)}{P(Positivo|Enfermo) \cdot P(Enfermo)+P(Positivo|Sano)*P(Sano)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Sensibilidad \cdot Prevalencia+(1-Especificidad) \cdot (1-Prevalencia) | ||
| + | $$ | ||
| + | |||
| + | |||
| + | * Y ahora usamos la formula de P(Positivo) en la definición del Indice Jaccard | ||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{P(Positivo|Enfermo) \cdot P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo) \cdot P(Enfermo)}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \cdot Prevalencia}{Sensibilidad \cdot Prevalencia+(1-Especificidad) \cdot (1-Prevalencia)+Prevalencia-Sensibilidad \cdot Prevalencia}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{Sensibilidad \cdot Prevalencia}{(1-Especificidad) \cdot (1-Prevalencia)+Prevalencia} | ||
| + | $$ | ||
| + | |||
| + | * Por lo tanto | ||
| + | |||
| + | $$ | ||
| + | Indice \; Jaccard=\frac{Sensibilidad \cdot Prevalencia}{(1-Especificidad) \cdot (1-Prevalencia)+Prevalencia} | ||
| + | $$ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== F1-score ===== | ||
| + | La métrica del $F_1{\text -}score$ se suele explicar inicialmente como la [[https:// | ||
| + | |||
| + | * La formula con la media armónica es la siguiente: | ||
| + | |||
| + | $$F_1{\text -}score=\frac{2}{\frac{1}{Sensibilidad}+\frac{1}{Precision}}$$ | ||
| + | |||
| + | * La fórmula se puede simplificar: | ||
| + | |||
| + | $$F_1{\text -}score=\frac{2}{\frac{1}{Sensibilidad}+\frac{1}{Precision}}= | ||
| + | $$=\frac{2}{\frac{Precision+Sensibilidad}{Sensibilidad \cdot Precision}} | ||
| + | $$F_1{\text -}score=\frac { 2 \cdot Sensibilidad \cdot Precision}{Sensibilidad + Precision}$$ | ||
| + | |||
| + | * En función de la matriz de confusión se puede expresar como: | ||
| + | |||
| + | $$F_1{\text -}score=\frac{2}{\frac{1}{Sensibilidad}+\frac{1}{Precision}}=\frac{2}{\frac{1}{\frac{TP}{TP+FN}}+\frac{1}{\frac{TP}{TP+FP}}}=$$ | ||
| + | $$=\frac{2}{\frac{TP+FN}{TP}+\frac{TP+FP}{TP}}=\frac{2}{\frac{TP+FN}{TP}+\frac{TP+FP}{TP}}=\frac{2}{\frac{TP+FN+TP+FP}{TP}}=$$ | ||
| + | $$=\frac{2}{1}: | ||
| + | $$F_1{\text -}score=\frac{TP}{\frac{(TP+FP)+(TP+FN)}{2}}$$ | ||
| + | |||
| + | * Por último de puede definir en función de la Sensibilidad, | ||
| + | |||
| + | $$F_1{\text -}score=\frac{2*Sensibilidad*Prevalencia}{Prevalencia*(Sensibilidad+Especificidad)+(1-Especificidad)}$$ | ||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | La primera vez que se habló del $F_1{\text -}score$ fue en el libro {{ : | ||
| + | |||
| + | $$ | ||
| + | E=1-F_1{\text -}score | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | E=\frac{|Positivos \; \Delta \; Enfermos|}{|Positivos|+|Enfermos|}=\frac{|Positivos \cup Enfermos|-|Positivos \cap Enfermos|}{|Positivos|+|Enfermos|} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | $$ | ||
| + | F_1{\text -}score=1-E=1-\frac{|Positivos \cup Enfermos|-|Positivos \cap Enfermos|}{|Positivos|+|Enfermos|}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{|Positivos|+|Enfermos|}{|Positivos|+|Enfermos|}-\frac{|Positivos \cup Enfermos|-|Positivos \cap Enfermos|}{|Positivos|+|Enfermos|}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{(|Positivos|+|Enfermos|-|Positivos \cup Enfermos|)+|Positivos \cap Enfermos|}{|Positivos|+|Enfermos|}= | ||
| + | $$ | ||
| + | |||
| + | * Sabiendo que $P(A \cap B)=P(A)+P(B)-P(A \cup B)$ (véase [[clase: | ||
| + | |||
| + | $$ | ||
| + | \frac{|Positivos \cap Enfermos|+|Positivos \cap Enfermos|}{|Positivos|+|Enfermos|}= | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | \frac{2 \cdot |Positivos \cap Enfermos|}{|Positivos|+|Enfermos|}=\frac{|Positivos \cap Enfermos|}{\frac{|Positivos|+|Enfermos|}{2}} | ||
| + | $$ | ||
| + | |||
| + | * Sabiendo que | ||
| + | |||
| + | $$ | ||
| + | \begin{array} | ||
| + | \\ | ||
| + | |Positivos \cap Enfermos|& | ||
| + | \\ | ||
| + | |Positivos|& | ||
| + | \\ | ||
| + | |Enfermos|& | ||
| + | \\ | ||
| + | \\ | ||
| + | {\Large \frac{|Positivos \cap Enfermos|}{\frac{|Positivos|+|Enfermos|}{2}}}& | ||
| + | \end{array} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | $$ | ||
| + | F1\text{-}score=\frac{TP}{\frac{(TP+FP)+(TP+FN)}{2}} | ||
| + | $$ | ||
| + | |||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | Vamos ahora a explicar la fórmula según la teoría de conjuntos: | ||
| + | |||
| + | $$ | ||
| + | \frac{|Positivos \cap Enfermos|}{\frac{|Positivos|+|Enfermos|}{2}} | ||
| + | $$ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | El conjunto de los positivos son aquellos que el modelo de IA ha predicho que son positivos, mientras que el conjunto de los enfermos son los que realmente están enfermos. Si pensamos un poco nos gustaría que ambos conjuntos fueran iguales, es decir si decimos que un paciente el positivo que también esté enfermo pero si está enfermo que también sea positivo. | ||
| + | |||
| + | Veamos ahora los datos de los 3 casos de una forma numérica. | ||
| + | |||
| + | ^ Caso ^ Nº Enfermos | ||
| + | ^ A | 10 | 10 | 3 | | ||
| + | ^ B | 10 | 10 | 0 | | ||
| + | ^ C | 10 | 10 | 10 | | ||
| + | |||
| + | ¿que caso es mejor? Realmente el Caso C en que ambos conjuntos son iguales. El peor de los casos será el Caso B, en el que no hay ningún elemento en común , mientras que un caso intermedio es el Caso A, en el que 3 pacientes que son positivos y enfermos. | ||
| + | |||
| + | ¿Y que hace la división? Simplemente normalizar el valor para que de un resultado de 0 a 1. Y ese factor por el que se divide es la media del tamaño de ambos conjuntos. Por eso en formula el denominador es la media aritmética entre el tamaño del conjunto de los enfermos (Nº de enfermos) y el tamaño del conjunto de los positivos (Nº de positivos). Y por eso me parece un error cuando ese **2** se coloca arriba multiplicando a $TP$ porque no deja claro el significado de la fórmula. | ||
| + | |||
| + | Por lo tanto, el $F_1{\text -}score$ nos está diciendo simplemente como de parecidos son el conjunto de los positivos y de los enfermos. Si el $F_1{\text -}score$ vale 1 significa que ambos conjuntos son iguales por lo que siempre que el modelo de IA diga que un paciente es positivo estará también enfermo, mientras que si $F_1{\text -}score$ vale 0 es que son totalmente distintos los conjuntos. Por lo que cuando el modelo de IA diga que un paciente es positivo nunca estará enfermo. | ||
| + | |||
| + | Para terminar, esta métrica se está centrando únicamente en los positivos y enfermos. Por lo que no nos será útil si nos interesa los sanos/ | ||
| + | |||
| + | Volvamos a la media armónica, ¿tiene algún tipo de importancia que en la fórmula se esté usando la media armónica? y ¿que se insista en que dicha medía da un valor inferior a la aritmética cuando los valores de sensibilidad y precisión son distintos? La respuesta a ambas preguntas es que NO. | ||
| + | |||
| + | |||
| + | |||
| + | <note tip> | ||
| + | < | ||
| + | < | ||
| + | |||
| + | $$F_1{\text -}score=\frac{2}{\frac{1}{Sensibilidad}+\frac{1}{Precision}}=$$ | ||
| + | $$\frac{2}{\frac{1}{Sensibilidad}+\frac{1}{\frac{Sensibilidad*Prevalencia}{Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)}}}=$$ | ||
| + | $$\frac{2}{\frac{1}{Sensibilidad}+{\frac{Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)}{Sensibilidad*Prevalencia}}}=$$ | ||
| + | $$\frac{2}{\frac{1}{\frac{Sensibilidad*Prevalencia}{Prevalencia}}+{\frac{Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)}{Sensibilidad*Prevalencia}}}=$$ | ||
| + | $$\frac{2}{{\frac{Prevalencia}{Sensibilidad*Prevalencia}}+{\frac{Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)}{Sensibilidad*Prevalencia}}}=$$ | ||
| + | $$\frac{2}{{\frac{Prevalencia+Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)}{Sensibilidad*Prevalencia}}}=$$ | ||
| + | $$\frac{2*Sensibilidad*Prevalencia}{Prevalencia+Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)}=$$ | ||
| + | $$\frac{2*Sensibilidad*Prevalencia}{Prevalencia+Sensibilidad*Prevalencia+1-Prevalencia-Especificidad+Especificidad*Prevalencia}=$$ | ||
| + | $$\frac{2*Sensibilidad*Prevalencia}{Prevalencia*(1+Sensibilidad-1+Especificidad)+1-Especificidad}=$$ | ||
| + | $$F_1{\text -}score=\frac{2*Sensibilidad*Prevalencia}{Prevalencia*(Sensibilidad+Especificidad)+(1-Especificidad)}$$ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Más informnación: | ||
| + | * {{ : | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ===== Fowlkes-Mallows (FM) ===== | ||
| + | Es la media geométrica entre la sensibilidad y la precisión | ||
| + | |||
| + | $$ | ||
| + | Fowlkes-Mallows=\sqrt{Sensibilidad*Precisión} | ||
| + | $$ | ||
| + | |||
| + | $$ | ||
| + | Fowlkes-Mallows=\sqrt{\frac{TP}{TP+FN}*\frac{TP}{TP+FP}}=\sqrt{\frac{TP^2}{(TP+FN)*(TP+FP)}}=\frac{TP}{\sqrt{(TP+FN)*(TP+FP)}} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Más información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * {{: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * | ||
| + | |||
| + | ===== PR-AUC ===== | ||
| + | La métrica PR-AUC es el Area bajo la curva Precisión-Especificidad (llamada en inglés Precision-Recall o PR) que se usa cuando los datos tienen una baja prevalencia. La forma de calcularlo es similar al ROC-AUC pero en vez de usar la $Sensibilidad$ y $1-Especificidad$, | ||
| + | |||
| + | $$ | ||
| + | \begin{array} | ||
| + | \\ | ||
| + | Sensibilidad &=& \frac{TP}{TP+FN} &=& TPR &=& Recall | ||
| + | \\ | ||
| + | Precisión | ||
| + | \end{array} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | Pero sigue la misma idea de calcular esas 2 métricas para cada valor del umbral y enfrentarla una contra otra. | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | A esta métrica también se le llama $Preción \; media$ ya que realmente está calculado la media de las precisiones para todos los umbrales. | ||
| + | |||
| + | |||
| + | El métrica de ROC-AUC no tenía en cuenta la prevalencia ya que no se usaba en la fórmula. Por otro lado PR-AUC, si que tiene en cuenta la prevalencia ya que usa la precisión pero por otro lado no tiene en cuenta los $TN$. Lo que la hace válida como métrica para datos desbalanceados. | ||
| + | |||
| + | Con sklearn podemos usar la métrica de PR-AUC de la siguiente forma: | ||
| + | <sxh python> | ||
| + | from sklearn.metrics import average_precision_score | ||
| + | |||
| + | y_true = np.array([0, | ||
| + | y_score = np.array([0.1, | ||
| + | |||
| + | pr_auc = average_precision_score(y_true, | ||
| + | </ | ||
| + | |||
| + | |||
| + | Más información: | ||
| + | * [[https:// | ||
| + | * {{ : | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | ===== Ejercicios ===== | ||
| + | |||
| + | ==== Ejercicio 1.A ==== | ||
| + | Tenemos el modelo del tema anterior que guardaste a disco. | ||
| + | |||
| + | Carga ese modelo y usando los datos de **test**, calcula las métricas independientes de la prevalencia | ||
| + | * Informedness Normalizado | ||
| + | * Balanced Accuracy | ||
| + | * 1-Prevalence threshold (PT) | ||
| + | * ROC-AUC | ||
| + | |||
| + | Crea la función '' | ||
| + | |||
| + | <sxh base> | ||
| + | Métrica | ||
| + | ------------------------ | ||
| + | Informedness Normalizado | ||
| + | Balanced Accuracy | ||
| + | 1-Prevalence Threshold | ||
| + | ROC-AUC | ||
| + | </ | ||
| + | ==== Ejercicio 1.B ==== | ||
| + | Usando los datos de **test**, calcula ahora las métricas de rendimiento global | ||
| + | * Accuracy | ||
| + | * Matthews correlation coefficient Normalizado (nMCC) | ||
| + | * Markedness | ||
| + | |||
| + | La prevalencia a usar será la de los datos. | ||
| + | |||
| + | Crea la función '' | ||
| + | |||
| + | <sxh base> | ||
| + | Métrica | ||
| + | --------------- | ||
| + | Accuracy | ||
| + | MCC Normalizado | ||
| + | Markedness | ||
| + | </ | ||
| + | |||
| + | ==== Ejercicio 1.C ==== | ||
| + | Usando los datos de **test**, calcula ahora las métricas para datos desbalaceados | ||
| + | * Jaccard | ||
| + | * F1-score | ||
| + | * Fowlkes-Mallows (FM) | ||
| + | * PR-AUC | ||
| + | |||
| + | La prevalencia a usar será la de los datos. | ||
| + | |||
| + | Crea la función '' | ||
| + | |||
| + | <sxh base> | ||
| + | Métrica | ||
| + | --------------- | ||
| + | Jaccard | ||
| + | F1-score | ||
| + | Fowlkes Mallows | ||
| + | PR-AUC | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Ejercicio 2.A: Prevalencia ==== | ||
| + | Porque no vamos a mostrar las siguientes métricas en una gráfica en función de la prevalencia | ||
| + | * Informedness Normalizado | ||
| + | * Balanced Accuracy | ||
| + | * 1-Prevalence threshold (PT) | ||
| + | * ROC-AUC | ||
| + | |||
| + | |||
| + | ==== Ejercicio 2.B ==== | ||
| + | Usando los datos de **Test**, muestra las siguientes métricas en función de la prevalencia '' | ||
| + | * Accuracy | ||
| + | * Matthews correlation coefficient Normalizado (nMCC) | ||
| + | * Markedness | ||
| + | |||
| + | Además muestra una línea vertical con la prevalencia de los datos. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ==== Ejercicio 2.C ==== | ||
| + | Usando los datos de **Test**, muestra las siguientes métricas en función de la prevalencia '' | ||
| + | * Jaccard | ||
| + | * F1-score | ||
| + | * Fowlkes-Mallows (FM) | ||
| + | * PR-AUC | ||
| + | |||
| + | Además muestra una línea vertical con la prevalencia de los datos. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ¿Porqué no ha variado PR-AUC? | ||
| + | |||
| + | ==== Ejercicio 2.D ==== | ||
| + | Usando los datos de **Test**, muestra las siguientes métricas en función de la prevalencia '' | ||
| + | * Jaccard | ||
| + | * F1-score | ||
| + | * Fowlkes-Mallows (FM) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
