Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:iabd:pia:2eval:tema07.metricas_derivadas [2024/12/04 14:18] admin [Prevalence threshold (PT)] |
— (actual) | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ====== 7.f 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 [[tema07.metricas]]. 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]] | ||
- | |||
- | |||
- | La siguiente pregunta es ¿Que métrica debemos elegir? En el apartado siguiente [[tema07-seleccion-metricas]] vamos a explicar que métrica elegir en cada caso. | ||
- | |||
- | ==== 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} | ||
- | $$ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== 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 Informednessnormalizado o nInformedness para que tenga un valor de 0 a 1 | ||
- | |||
- | $$ | ||
- | Informedness \; Normalizado=\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=Sensibilidad*Prevalencia+Especificidad*(1-Prevalencia) | ||
- | $$ | ||
- | |||
- | Y suponiendo que la prevalencia está balanceada, es decir que Prevalencia=0,5 | ||
- | |||
- | $$ | ||
- | Accuracy=Sensibilidad*0, | ||
- | |||
- | $$ | ||
- | $$ | ||
- | \frac{Sensibilidad}{2}+\frac{Especificidad}{2}=\frac{Sensibilidad+Especificidad}{2}=Balanced \; Accuracy | ||
- | $$ | ||
- | |||
- | $$ | ||
- | Balanced \; Accuracy=\frac{Sensibilidad+Especificidad}{2} | ||
- | $$ | ||
- | |||
- | |||
- | Por eso se llama BalancedAccuracy 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 Prevalencethreshold(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(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 Prevalencethreshold(PT)=0.99 y en la gráfica de la derecha el valor de Prevalencethreshold(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 Prevalencethreshold(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*Prevalencia}{Sensibilidad*Prevalencia+(1-Expecificidad)*(1-Prevalencia)} | ||
- | $$ | ||
- | |||
- | $$ | ||
- | y=1-Prevalencia | ||
- | $$ | ||
- | |||
- | Si igualamos ambas ecuaciones: | ||
- | |||
- | $$ | ||
- | \frac{Sensibilidad*Prevalencia}{Sensibilidad*Prevalencia+(1-Expecificidad)*(1-Prevalencia)}=1-Prevalencia | ||
- | $$ | ||
- | |||
- | Y si despejamos la prevalencia se obtiene: | ||
- | |||
- | $$ | ||
- | Prevalencia=\frac{\sqrt{Sensibilidad(1-Especificidad)}-(1-Especificidad)}{Sensibilidad-(1-Especificidad)}=\frac{\sqrt{1-Especificidad}}{\sqrt{Sensibilidad}+\sqrt{1-Especificidad}} | ||
- | $$ | ||
- | |||
- | <note tip> | ||
- | **Despejar la prevalencia paso a paso:** | ||
- | |||
- | |||
- | $$ | ||
- | \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)} | ||
- | $$ | ||
- | |||
- | |||
- | </ | ||
- | |||
- | 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 Prevalencethreshold(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 Prevalencethreshold(PT) es pequeño y para la gráfica de la derecha, que es una mala red neuronal, el valor de Prevalencethreshold(PT) es alto. Pero como nos gustan métricas cuyo valor sea alto cuanto mejor es la red, nosotros vamos a trabajar con 1−Prevalencethreshold | ||
- | |||
- | Con lo que la gráfica con la nueva métrica queda ahora así: | ||
- | |||
- | {{: | ||
- | |||
- | Es decir que para: | ||
- | * Sensibilidad=0.99yEspecificidad=0.99⇒1−PT=0.91 | ||
- | * Sensibilidad=0.01yEspecificidad=0.01⇒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 Yscore−true=0,73. | ||
- | * 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 Yscore−false=0,34. | ||
- | |||
- | Vemos que Yscore−true>Yscore−false, | ||
- | |||
- | Por lo tanto: | ||
- | |||
- | $$ | ||
- | P(Y_{score-true}> | ||
- | $$ | ||
- | |||
- | |||
- | Vale, pero ¿Y que utilidad tiene eso? ¿Para que quiero saber P(Yscore−true>Yscore−false)? | ||
- | 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=Yscore−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=Yscore−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=Yscore−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(Yscore−true>Yscore−false)=ROC-AUC=1 significa que podemos distinguir perfectamente una imagen con neumonía de otra sin neumonía, ya que hay un umbral a partir del cual podemos distinguirlo | ||
- | * Si P(Yscore−true>Yscore−false)=ROC-AUC=0 es imposible (realmente si que podemos imaginando que los resultado con neumonía son los inferiores pero imaginemos que no lo hacemos). Y no hay un umbral que permita distinguirlos | ||
- | * Si P(Yscore−true>Yscore−false)=ROC-AUC=0.67 a veces no vamos a podes distinguir si tiene neumonía o si no lo tiene. | ||
- | |||
- | 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 | ||
- | |||
- | roc_auc=roc_auc_score(y_true, | ||
- | </ | ||
- | |||
- | |||
- | 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 | ||
- | $$ | ||
- | |||
- | 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, | ||
- | |||
- | {{: | ||
- | |||
- | 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, | ||
- | |||
- | |||
- | <note tip> | ||
- | **Demostración de la fórmula usando Especificidad, | ||
- | |||
- | $$ | ||
- | 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 | ||
- | $$ | ||
- | |||
- | |||
- | |||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== Matthews Correlation Coefficient (MCC) ===== | ||
- | El MatthewsCorrelationCoefficient(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)}} | ||
- | $$ | ||
- | |||
- | 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}} | ||
- | $$ | ||
- | |||
- | |||
- | 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 MMCnormalizado o nMMC | ||
- | |||
- | $$ | ||
- | MMC \; normalizado=nMMC=\frac{MMC+1}{2} | ||
- | $$ | ||
- | |||
- | |||
- | |||
- | |||
- | < | ||
- | **Demostración de la fórmula**: La fórmula del [[https:// | ||
- | |||
- | $$ | ||
- | 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: | ||
- | * xi: La lista de los valores verdaderos. Que sabemos que valen 0 o 1 | ||
- | * yi: 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 | ||
- | $$ | ||
- | |||
- | </ | ||
- | |||
- | < | ||
- | **Demostración fórmula en función Sensibilidad , Especificidad y Prevalencia** | ||
- | |||
- | |||
- | $$ | ||
- | 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) | ||
- | $$ | ||
- | |||
- | </ | ||
- | |||
- | |||
- | 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 | ||
- | </ | ||
- | |||
- | |||
- | 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 Markednessnormalizado 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. | ||
- | |||
- | ===== 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} | ||
- | $$ | ||
- | |||
- | |||
- | < | ||
- | **Demostración de la fórmula**: La formula realmente se define como un cociente de probabilidades: | ||
- | |||
- | $$ | ||
- | 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 | ||
- | $$ | ||
- | |||
- | </ | ||
- | |||
- | |||
- | |||
- | < | ||
- | **Demostración fórmula en función Sensibilidad , Especificidad y Prevalencia** | ||
- | |||
- | * 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 F1-score se suele explicar inicialmente como la [[https:// | ||
- | |||
- | * La formula con la media armónica es la siguiente: | ||
- | |||
- | F1-score=21Sensibilidad+1Precision | ||
- | |||
- | * La fórmula se puede simplificar: | ||
- | |||
- | F1-score=21Sensibilidad+1Precision=2PrecisionSensibilidad⋅Precision+SensibilidadPrecision⋅Sensibilidad= | ||
- | =2Precision+SensibilidadSensibilidad⋅Precision=21:Precision+SensibilidadSensibilidad⋅Precision= | ||
- | F1-score=2⋅Sensibilidad⋅PrecisionSensibilidad+Precision | ||
- | |||
- | * En función de la matriz de confusión se puede expresar como: | ||
- | |||
- | F1-score=21Sensibilidad+1Precision=21TPTP+FN+1TPTP+FP= | ||
- | =2TP+FNTP+TP+FPTP=2TP+FNTP+TP+FPTP=2TP+FN+TP+FPTP= | ||
- | =21:TP+FN+TP+FPTP=2⋅TPTP+FN+TP+FP= | ||
- | F1-score=TP(TP+FP)+(TP+FN)2 | ||
- | |||
- | * Por último de puede definir en función de la Sensibilidad, | ||
- | |||
- | F1-score=2∗Sensibilidad∗PrevalenciaPrevalencia∗(Sensibilidad+Especificidad)+(1−Especificidad) | ||
- | |||
- | < | ||
- | **Origen de la fórmula**: La primera vez que se habló del F1-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∩B)=P(A)+P(B)−P(A∪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 F1-score nos está diciendo simplemente como de parecidos son el conjunto de los positivos y de los enfermos. Si el F1-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 F1-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. | ||
- | |||
- | |||
- | |||
- | < | ||
- | **Demostración fórmula en función Sensibilidad , Especificidad y Prevalencia** | ||
- | |||
- | F1-score=21Sensibilidad+1Precision= | ||
- | 21Sensibilidad+1Sensibilidad∗PrevalenciaSensibilidad∗Prevalencia+(1−Especificidad)∗(1−Prevalencia)= | ||
- | 21Sensibilidad+Sensibilidad∗Prevalencia+(1−Especificidad)∗(1−Prevalencia)Sensibilidad∗Prevalencia= | ||
- | 21Sensibilidad∗PrevalenciaPrevalencia+Sensibilidad∗Prevalencia+(1−Especificidad)∗(1−Prevalencia)Sensibilidad∗Prevalencia= | ||
- | 2PrevalenciaSensibilidad∗Prevalencia+Sensibilidad∗Prevalencia+(1−Especificidad)∗(1−Prevalencia)Sensibilidad∗Prevalencia= | ||
- | 2Prevalencia+Sensibilidad∗Prevalencia+(1−Especificidad)∗(1−Prevalencia)Sensibilidad∗Prevalencia= | ||
- | 2∗Sensibilidad∗PrevalenciaPrevalencia+Sensibilidad∗Prevalencia+(1−Especificidad)∗(1−Prevalencia)= | ||
- | 2∗Sensibilidad∗PrevalenciaPrevalencia+Sensibilidad∗Prevalencia+1−Prevalencia−Especificidad+Especificidad∗Prevalencia= | ||
- | 2∗Sensibilidad∗PrevalenciaPrevalencia∗(1+Sensibilidad−1+Especificidad)+1−Especificidad= | ||
- | F1-score=2∗Sensibilidad∗PrevalenciaPrevalencia∗(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. Y además está relacionado con el F1-score ya que el F1-score se calcula justamente con la Sensibilidad y Precisión | ||
- | |||
- | Más información: | ||
- | * [[https:// | ||
- | * {{ : | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | |||