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 20:03]
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 205: Línea 210:
  
 ====== 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]]
  
 +
 +====== Infinitos intervalos ======
 ¿Y si hubiera infinitos intervalos? Que podríamos sacar la probabilidad exacta para el resultado que nos ha dado. ¿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.1707073436.txt.gz · Última modificación: 2024/02/04 20:03 por admin