Processing math: 100%

Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema07-apendices

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:2eval:tema07-apendices [2024/10/12 12:33]
admin [Creación de los gráficos del descenso de gradiente]
— (actual)
Línea 1: Línea 1:
-====== 7.g Apéndices ====== 
- 
-===== Tipos de funciones de coste ===== 
- 
- 
-==== Huber ==== 
-La función de coste Huber es un compromiso entre MAE y MSE, ese compromiso se define con un parámetro llamado delta δ 
-La siguiente gráfica compara MAE, MSE y distintos valores de delta. 
- 
-{{ :clase:iabd:pia:2eval:funcion_coste_huber.png?direct&600 |}} 
- 
- 
-  * Si delta tiene en valor cercano a 1, tenderá a parecerse a MAE 
-  * Si delta tiene un valor elevado, tenderá a parecerse a MSE 
- 
-<note tip>Como decíamos con MAE y MSE. ¿queremos que los valores extremos se tengan en cuenta. Pues con el parámetro delta podemos hacer un ajuste mas fino</note> 
- 
- 
- 
-Su uso en Keras es: 
-<sxh python> 
-model.compile(loss=tf.keras.losses.Huber(delta=3)) 
-</sxh> 
- 
-<note> 
-Pensando en la gráfica de Huber he pensado si MAE=|yˆy|1 y MSE=|yˆy|2, en vez de usar Huber, ¿No podríamos usar como función de coste algo también intermedio como MSE=|yˆy|1.5 
- 
-Y he creado una gráfica similar para ver los resultados y no están mal 
- 
-{{ :clase:iabd:pia:2eval:funcion_coste_exponenciales.png?direct&500 |}} 
- 
-He mirado un poco por internet para ver si alguien los usaba y no he encontrado nada, supongo que será porque hacer el cálculo de una potencia con decimales es bastante costoso en tiempo. 
-</note> 
- 
-Mas información: 
-  * [[https://keras.io/api/losses/regression_losses/#huber-class|Huber class]] 
-  * [[https://www.machinecurve.com/index.php/2019/10/12/using-huber-loss-in-keras/|Using Huber loss with TensorFlow 2 and Keras]] 
-  * [[https://en.wikipedia.org/wiki/Huber_loss|Huber loss en Wikipedia]] 
- 
- 
-===== Backpropagation ===== 
-El Backpropagation es el algoritmo que optimiza el entrenamiento de la red. Calcular el gradiente (o derivada) de toda la red es muy costoso. Se basa en la idea de que los parámetros de una capa no dependen de la capa anterior. 
- 
- 
-Si volvemos a ver nuestra red neuronal de ejemplo, podemos calcular los pesos de la neurona 5 sin que influya en como van a ser los pesos de las neuronas 2, 3 y 4. Es decir que empezamos con las neuronas de las capas más hacía la salida y una vez calculados sus pesos , calculamos los parámetros de las capa anterior (más hacia la entrada) , y eso significa ir hacia atrás o //backpropagation//. 
- 
-{{ :clase:iabd:pia:2eval:backpropagation_1.gif?direct |}} 
- 
-{{ :clase:iabd:pia:2eval:backpropagation_2.gif?direct |}} 
- 
-{{ :clase:iabd:pia:2eval:backpropagation_3.mp4?700 |}} 
- 
-Con backpropagation acabamos de ver el orden en el que se calculan los parámetros de cada neurona y a continuación vamos a ver con el descenso de gradiente como calculamos los parámetros de una neurona. 
- 
-Junto con el backpropagation  aparece otro concepto llamado //regla de la cadena// o //chain rule// que se usa para junto al backpropagation para hacer menos cálculos. Está relacionado con el cálculo de derivadas. 
- 
-En los siguientes videos está explicado perfectamente el backpropagation y la //chain rule//: 
-  * [[https://www.youtube.com/watch?v=eNIqz_noix8|¿Qué es una Red Neuronal? Parte 3 : Backpropagation | DotCSV]]: Video 
-  * [[https://www.youtube.com/watch?v=M5QHwkkHgAA|¿Qué es una Red Neuronal? Parte 3.5 : Las Matemáticas de Backpropagation | DotCSV]]: Video 
- 
- 
-===== Métricas ===== 
-Las métricas que ya las hemos explicado en el tema de métricas son: 
-    * Métricas básicas (Sensibilidad, Especificidad, FNR y FPR) 
-    * Métricas derivadas según el teorema de bayes (PPV,NPV, FDR y FOR) 
- 
-Veamos ahora más métricas que existen 
- 
-==== Indice Jaccard ==== 
-Este índice es la división entre 2 probabilidades: 
- 
-$$ 
-Indice \; Jaccard=\frac{P(Positivo \cap Enfermo)}{P(Positivo \cup Enfermo)}=\frac{TP}{TP+FP+FN} 
-$$ 
- 
-  * Se deduce de la siguiente forma: 
- 
-$$ 
-\frac{P(Positivo \cap Enfermo)}{P(Positivo \cup Enfermo)}= 
-$$ 
- 
-$$ 
-\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo \cap Enfermo)}=\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo)*P(Enfermo)} 
-$$ 
- 
-  * Sabiendo que: 
- 
-$$ 
- 
-\begin{array} 
-\\ 
-P(Enfermo)&=&\frac{TP+FN}{TP+FN+FP+TN} 
-\\ 
- 
- 
- 
-P(Sano)&=&\frac{FP+TN}{TP+FN+FP+TN} 
-\\ 
-P(Positivo)&=&\frac{TP+FP}{TP+FN+FP+TN} 
-\\ 
-P(Negativo)&=&\frac{FN+TN}{TP+FN+FP+TN} 
-\\ 
-P(Positivo|Enfermo)&=&\frac{TP}{TP+FN} 
-\end{array} 
-$$ 
- 
-  * Entonces: 
- 
-$$ 
-\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo)*P(Enfermo)}= 
-$$ 
- 
-$$ 
-\left ( \frac{TP}{TP+FN}*\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}*\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 
-$$ 
- 
-  * Sin embargo también podemos definir el Indice Jaccard en función de la sensibilidad, la especificidad y la prevalencia.Usando el teorema de bayes podemos definir P(Positivo) de la siguiente forma: 
- 
-$$ 
-P(Positivo)=\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Enfermo|Positivo)}= 
-$$ 
- 
-$$ 
-\frac{P(Positivo|Enfermo)*P(Enfermo)}{1} \div \frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo|Enfermo)*P(Enfermo)+P(Positivo|Sano)*P(Sano)}= 
-$$ 
- 
-$$ 
-Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia) 
-$$ 
- 
- 
-  * Y ahora usamos la formula de P(Positivo) en la definición del Indice Jaccard 
- 
-$$ 
-Indice \; Jaccard=\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo)*P(Enfermo)}= 
-$$ 
- 
-$$ 
-\frac{Sensibilidad*Prevalencia}{Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)+Prevalencia-Sensibilidad*Prevalencia}= 
-$$ 
- 
-$$ 
-\frac{Sensibilidad*Prevalencia}{(1-Especificidad)*(1-Prevalencia)+Prevalencia} 
-$$ 
- 
-  * Por lo tanto 
- 
-$$ 
-Indice \; Jaccard=\frac{Sensibilidad*Prevalencia}{(1-Especificidad)*(1-Prevalencia)+Prevalencia} 
-$$ 
- 
- 
- 
-==== Prevalence threshold ==== 
-La métrica de Prevalence threshold está explicada en [[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7540853/|Prevalence threshold (ϕe) and the geometry of screening curves]]. 
- 
-Lo único que diremos respecto a la formula es que en el artículo aparece como: 
- 
-$$ 
-Prevalence \; threshold=\frac{\sqrt{Sensibilidad(1-Especificidad)}+(Especificidad-1)}{Sensibilidad+Especificidad+1} 
-$$ 
-Que jugando un poco con los signos se obtiene la formula equivalente que aparece en Wikipedia: 
-$$ 
-Prevalence \; threshold=\frac{\sqrt{Sensibilidad*FPR}-FPR}{Sensibilidad-FPR} 
-$$ 
- 
-==== Diagnostic odds ratio ==== 
-Se define como la división entre //Positive likelihood ratio (LR+)// y  //Negative likelihood ratio (LR-)// 
- 
-$$ 
-DOR=\frac{LR+}{LR-}=\frac{TP*TN}{FP*FN} 
-$$ 
- 
-  * Aunque también se puede definir en función de la sensibilidad y la especificidad 
- 
-$$ 
-DOR=\frac{LR+}{LR-}=\frac{\frac{TPR}{1-TNR}}{\frac{1-TPR}{TNR}}=\frac{Sensibilidad*Especificidad}{(1-Sensibilidad)(1-Especificidad)} 
-$$ 
- 
-==== Matthews Correlation Coefficient o MMC ==== 
-Es otra métrica pero que tiene en cuenta que los datos no estén balanceados.  
- 
-El MMC tiene un valor entre -1 a 1. Siendo: 
-  * 1 : El clasificador funciona perfectamente 
-  * 0 : El clasificador acierta aleatoriamente 
-  * -1 : El clasificador acierta peor que aleatoriamente, es decir que clasifica al revés "perfectamente" 
- 
-MCC=TP×TNFP×FN(TP+FP)(TP+FN)(TN+FP)(TN+FN) 
- 
- 
-Podemos hacer uso de la métrica con la función ''sklearn.metrics.matthews_corrcoef'' de sklearn 
- 
-Ejemplo de uso: 
-<sxh python> 
-from sklearn.metrics import matthews_corrcoef 
- 
-y_true = [1,1,1,1,0,0,0,0] 
-y_pred = [1,1,1,1,0,0,0,0] 
-print("Valor para una predicción que acierta siempre=",matthews_corrcoef(y_true,y_pred)) 
- 
-y_true = [1,1,1,1,0,0,0,0] 
-y_pred = [1,1,0,0,1,1,0,0] 
-print("Valor para una predicción que acierta la mitad=",matthews_corrcoef(y_true,y_pred)) 
- 
-y_true = [1,1,1,1,0,0,0,0] 
-y_pred = [0,0,0,0,1,1,1,1] 
-print("Valor para una predicción que nunca acierta=",matthews_corrcoef(y_true,y_pred)) 
-</sxh> 
- 
- 
-<sxh base> 
-Valor para una predicción que acierta siempre= 1.0 
-Valor para una predicción que acierta la mitad= 0.0 
-Valor para una predicción que nunca acierta= -1.0 
-</sxh> 
- 
- 
- 
- 
- 
-Mas información: 
-  * [[https://scikit-learn.org/stable/modules/generated/sklearn.metrics.matthews_corrcoef.html|sklearn.metrics.matthews_corrcoef]] 
-  * [[https://towardsdatascience.com/the-best-classification-metric-youve-never-heard-of-the-matthews-correlation-coefficient-3bf50a2f3e9a|Matthews Correlation Coefficient is The Best Classification Metric You’ve Never Heard Of]] 
-  * [[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5721660/|Ten quick tips for machine learning in computational biology]] 
-  * [[https://medium.com/@cdefaux/phi-coefficient-a-k-a-matthews-correlation-coefficient-binary-classification-11e2c29db91e|Phi Coefficient A.K.A Matthews Correlation Coefficient (Binary Classification)]] 
-  * {{ :clase:iabd:pia:2eval:the_advantages_of_the_matthews_correlation_coeffic.pdf |The advantages of the Matthews correlation coefficient (MCC) over F1 score and accuracy in binary classification evaluation}} 
-  * [[https://en.wikipedia.org/wiki/Phi_coefficient|Phi coefficient-Wikipedia]] 
- 
- 
- 
- 
- 
  
clase/iabd/pia/2eval/tema07-apendices.1728729187.txt.gz · Última modificación: 2024/10/12 12:33 por admin