Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:experimentos:probabilidad_metricas

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:experimentos:probabilidad_metricas [2024/02/04 19:50]
admin [Generalizando los intervalos]
clase:iabd:pia:experimentos:probabilidad_metricas [2024/02/07 08:30] (actual)
admin [Infinitos intervalos]
Línea 8: Línea 8:
 Para calcular las métricas tenemos 2 arrays: Para calcular las métricas tenemos 2 arrays:
   * $ Y_{real}= \{ y_{real} \in \mathbb{N} \mid y_{real} \in \{0,1\} \; \}    $ Array con los valores reales o verdaderos.    * $ Y_{real}= \{ y_{real} \in \mathbb{N} \mid y_{real} \in \{0,1\} \; \}    $ Array con los valores reales o verdaderos. 
-  * $ Y_{predicho}=\{ y_{predicho} \in \mathbb{R} \mid y_{predicho}\in[0,1[  \; \} $ Array con los valores predichos por la red neuronal. +  * $ Y_{predicho}=\{ y_{predicho} \in \mathbb{R} \mid y_{predicho}\in[0,1[  \; \} $ Array con los valores predichos por la red neuronal. 
 + 
 +y ahora los juntamos en un único conjunto 
 + 
   * $ Y= \{ (y_{real},y_{predicho}) | y_{real} \in Y_{real} , y_{predicho} \in Y_{predicho} \} $ Parejas de datos reales y predichos.   * $ Y= \{ (y_{real},y_{predicho}) | y_{real} \in Y_{real} , y_{predicho} \in Y_{predicho} \} $ Parejas de datos reales y predichos.
  
Línea 28: Línea 31:
 $FP=|\{ (y_{real},y_{predicho}) \in Y | y_{real} = 0 \; \wedge \; y_{predicho} \in [0.5,1[ \}|$ $FP=|\{ (y_{real},y_{predicho}) \in Y | y_{real} = 0 \; \wedge \; y_{predicho} \in [0.5,1[ \}|$
  
-$TN=|\{ (y_{real},y_{predicho}) \in Y | y_{real} = 1 \; \wedge \; y_{predicho} \in [0,0.5[ \}|$+$FN=|\{ (y_{real},y_{predicho}) \in Y | y_{real} = 1 \; \wedge \; y_{predicho} \in [0,0.5[ \}|$
  
-$TN=|\{ (y_{real},y_{predicho}) \in Y | y_{real} = 1 \; \wedge \; y_{predicho} \in [0.5,1[ \}|$+$TP=|\{ (y_{real},y_{predicho}) \in Y | y_{real} = 1 \; \wedge \; y_{predicho} \in [0.5,1[ \}|$
  
 La matriz de confusión es la siguiente: La matriz de confusión es la siguiente:
Línea 52: Línea 55:
  
 | ^^  Predicción  ^^  Métricas  ^^ | ^^  Predicción  ^^  Métricas  ^^
-| ^^  PN,$ y_{predicho} \in [0,0.5[$  ^  PP,$ y_{predicho}\in [0.5,1[$  ^  Predicho negativa  ^ Predicho positiva ^+| ^^  PN,$ y_{predicho} \in [0,0.5[$  ^  PP,$ y_{predicho}\in [0.5,1[$  ^  Predicho [0,0.5[  ^ Predicho [0.5,1[ ^
 ^  Realidad  ^  N,$y_{real}=0$  |  TN  |  FP  |  $TNR=\frac{TN}{N}$  |  $FPR=\frac{FP}{N}$  | ^  Realidad  ^  N,$y_{real}=0$  |  TN  |  FP  |  $TNR=\frac{TN}{N}$  |  $FPR=\frac{FP}{N}$  |
 ^ ::: ^  P,$y_{real}=1$  |  FN  |  TP  |  $FNR=\frac{FN}{P}$  |  $TPR=\frac{TP}{P}$  | ^ ::: ^  P,$y_{real}=1$  |  FN  |  TP  |  $FNR=\frac{FN}{P}$  |  $TPR=\frac{TP}{P}$  |
Línea 105: Línea 108:
  
  
-Pero usando Bayes podemos calcular la precisión usando la prevalencia que queramos:+Pero usando Bayes podemos calcular los valores predictivos positivos y negativos usando la prevalencia que queramos:
  
 $$P(Positivo|Predicho \; positivo)=\frac{P(Predicho \; positivo|Positivo)*P(Positivo)}{P(Predicho \; positivo|Positivo)*P(Positivo)+P(Predicho \; positivo|Negativo)*P(Negativo)}  $$ $$P(Positivo|Predicho \; positivo)=\frac{P(Predicho \; positivo|Positivo)*P(Positivo)}{P(Predicho \; positivo|Positivo)*P(Positivo)+P(Predicho \; positivo|Negativo)*P(Negativo)}  $$
  
-<note important> +$$P(Positivo|Predicho \; negativo)=\frac{P(Predicho \; negativo|Positivo)*P(Positivo)}{P(Predicho \; negativo|Positivo)*P(Positivo)+P(Predicho \; negativo|Negativo)*P(Negativo)}  $$ 
-Habría que poner las 3 formulas restantes de las 3 métricas que quedan, pero no se indican por ahorrar trabajo. + 
-</note>+$$P(Negativo|Predicho \; negativo)=\frac{P(Predicho \; negativo|Negativo)*P(Negativo)}{P(Predicho \; negativo|Negativo)*P(Negativo)+P(Predicho \; negativo|Positivo)*P(Positivo)}  $$ 
 + 
 +$$P(Negativo|Predicho \; positivo)=\frac{P(Predicho \; positivo|Negativo)*P(Negativo)}{P(Predicho \; positivo|Negativo)*P(Negativo)+P(Predicho \; positivo|Positivo)*P(Positivo)}  $$
  
 ====== Simplificando las fórmulas ====== ====== Simplificando las fórmulas ======
Línea 117: Línea 122:
  
  
-$I=\{ \;\; \{[0,0.5[\}\;,\;\{[0.5,1[\}\;\; \}$+$I=\{ \;\; [0,0.5[\;,\;[0.5,1[\;\; \}$
  
 Por lo tanto ahora habrá menos fórmulas. Por lo tanto ahora habrá menos fórmulas.
Línea 202: Línea 207:
 $$P(Positivo|Predicho_i)=\frac{P(Predicho_i|Positivo)*P(Positivo)}{P(Predicho_i|Positivo)*P(Positivo)+P(Predicho_i|Negativo)*P(Negativo)}  $$ $$P(Positivo|Predicho_i)=\frac{P(Predicho_i|Positivo)*P(Positivo)}{P(Predicho_i|Positivo)*P(Positivo)+P(Predicho_i|Negativo)*P(Negativo)}  $$
 \\ \\
-$$P(Negativo|Predicho_i)=\frac{P(Predicho_i|Negativo)*P(Negativo)}{P(Predicho_i|Negativo)*P(Negativo)+P(Predicho_i|Positivo)*P(Positivo)}  $$+$$P(Negativo|Predicho_i)=\frac{P(Predicho_i|Negativo)*P(Negativo)}{P(Predicho_i|Negativo)*P(Negativo)+P(Predicho_i|Positivo)*P(Positivo)}=1-P(Positivo|Predicho_i)  $$
  
 ====== Generalizando los intervalos ====== ====== Generalizando los intervalos ======
-y ahora viene lo interesante, ¿que pasaría si en vez de haber un único umbral hubiera 10 umbrales?+__**y ahora viene lo interesante, ¿que pasaría si en vez de haber un único umbral hubiera 10 umbrales?**__
  
-$I=\{ \;\;\{[0,0.1[\}\;,\;\{[0.1,0.2[\}\;,\;\{[0.2,0.3]\}\;,\;\{[0.3,0.4]\}\;,\;\{[0.4,0.5]\}\;,\;\{[0.5,0.6]\}\;,\;\{[0.6,0.7]\}\;,\;\{[0.7,0.8]\}\;,\;\{[0.8,0.9]\}\;,\;\{[0.9,1]\} \;\;\}$+$I=\{ \;\;[0,0.1[\;,\;[0.1,0.2[\;,\;[0.2,0.3[\;,\;[0.3,0.4[\;,\;[0.4,0.5[\;,\;[0.5,0.6[\;,\;[0.6,0.7[\;,\;[0.7,0.8[\;,\;[0.8,0.9[\;,\;[0.9,1\;\;\}$
  
 +En el siguiente código en Python se puede ver el resultado de usar las fórmulas:[[https://colab.research.google.com/drive/1uO1no11lYzlhj0OMJl7H6jdgTMsDerq-?usp=sharing|main.ipynb]]
  
-$$P(Positivo|Predicho_i)=\frac{P(Predicho_i|Positivo)*P(Positivo)}{P(Predicho_i|Positivo)*P(Positivo)+P(Predicho_i|Negativo)*P(Negativo)}  $$ 
-\\ 
-$$P(Negativo|Predicho_i)=\frac{P(Predicho_i|Negativo)*P(Negativo)}{P(Predicho_i|Negativo)*P(Negativo)+P(Predicho_i|Positivo)*P(Positivo)}  $$ 
  
 +====== Infinitos intervalos ======
 +¿Y si hubiera infinitos intervalos? Que podríamos sacar la probabilidad exacta para el resultado que nos ha dado.
 +
 +¿como sacarlo para infinitos intervalos? Pues calculando la función de densidad de probabilidad.
 +
 +Sabemos que la función de coste para las redes neuronales es $Binary \: Cross \: Entropy$:
 +
 +$$Binary \: Cross \: Entropy(y_{real},y_{predicho}) = - (y_{real} \cdot log(y_{predicho}) + (1-y_{real}) \cdot log(1-y_{predicho})) $$ 
 +
 +Los valores de $y_{real}$ son 0 o 1, mientras que los valores de $y_{predicho}$ es un número real entre 0 y 1
 +
 +Veamos ahora gráficamente como es la fórmula según si $y_{real}=0$ o $y_{real}=1$
 +
 +$$
 +Binary \: Cross \: Entropy(y_{real},y_{predicho}) =\left\{\begin{matrix}
 +-log(1-y_{predicho}) & si & y_{real}=0   \\
 +-log(y_{predicho}) & si & y_{real}=1   \\
 +\end{matrix}\right. 
 +$$
 +
 +{{:clase:iabd:pia:2eval:binary_crossentropy.png?nolink|}}
 +
 +====== Ejemplos ======
 +
 +  * Evolución de la red de "las imágenes de números " en 16 épocas:
 +{{ :clase:iabd:pia:experimentos:evolucion_red_digits.png?nolink&600 |}}
 +  * Evolución de la red de "cancer" en 16 épocas:
 +{{ :clase:iabd:pia:experimentos:evolucion_red_cancer.png?nolink&600 |}}
  
clase/iabd/pia/experimentos/probabilidad_metricas.1707072655.txt.gz · Última modificación: 2024/02/04 19:50 por admin