Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema07.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:2eval:tema07.metricas [2024/03/13 17:39]
admin [Ejercicios]
clase:iabd:pia:2eval:tema07.metricas [2024/03/25 19:13] (actual)
admin [Teorema de Bayes]
Línea 530: Línea 530:
     * Mejora el VPN ya que ha pasado de 0.93 a 0.97     * Mejora el VPN ya que ha pasado de 0.93 a 0.97
  
 +{{:clase:iabd:pia:2eval:prevalencia_vs_valores_predictivos.png?direct|}}
 +
 +En la gráfica se puede ver como varían el VPP y el VPN según la prevalencia. Y la línea roja es con la prevalencia de los datos.
  
  
Línea 616: Línea 619:
 Más información en: Más información en:
   * [[https://en.wikipedia.org/wiki/Confusion_matrix|Matriz de confusión en Wikipedia]]   * [[https://en.wikipedia.org/wiki/Confusion_matrix|Matriz de confusión en Wikipedia]]
-  * [[tema07-apendices-metricas]]+  * [[tema07.metricas_derivadas]]
  
  
Línea 698: Línea 701:
  
  
- 
- 
-==== Area under the curve (AUC) ==== 
-La Area under the curve (AUC) es una métrica que nos dice el área de una curva ROC. Pero pasemos primero a explicar que es una curva ROC. 
- 
-Lo primero es que cuando predecimos que ciertos valores son Positivos o Negativos, lo hacemos en base a un umbral. Normalmente si algo es menor o igual que 0.5 decimos que es ''Negativo'' y si es mayor que 0.5 decimos que es ''Positivo''. Pero ese umbral es arbitrario. 
- 
- 
-En las siguientes gráficas vamos a ver como afecta a nuestro modelo el variar el umbral. 
- 
-{{ :clase:iabd:pia:2eval:metricas_curva_roc_auc.png?direct |}} 
- 
-Vamos a explicar cada columna de la imagen anterior: 
-  * 1º Columna: Se muestra la distribución de los Positivos y los 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  los True Positive (TP), True Negative (TN),False Positive (FP) y False Negative (FN) según se modificara el umbral. Para ello para cada umbral entre 0 y 1:  
-    * 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{align} 
-True \: Positive \: Rate \: (TPR) &= \frac{TP}{TP+FN} \\ False \: Positive \: Rate \: (FPR)  &= \frac{FP}{FP+TN} 
-\end{align} 
- 
-  * 4º Columna: Muestra el  //True Positive Rate (TPR)// frente a //False Positive Rate (FPR)//. Es decir que cada punto la ''X'' de la gráfica es el FPR y la ''Y'' de la gráfica es el TPR. 
- 
-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 Area under the curve (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, mayor es el área rosa y por lo tanto mayor es la métrica de AUC. 
- 
-{{ :clase:iabd:pia:2eval:metricas_curva_roc_auc_02.png?direct |}} 
- 
-<note tip> 
-Destacar que se hace uso de la métrica AUC que es una métrica como cualquier otra que tiende a 1 si es buena y a 0 si es mala pero lo que no vas a ver al usar la métrica de AUC es la curva ROC. La curva ROC se muestra para entender que significa la métrica AUC pero no se dibuja normalmente. 
-</note> 
- 
-En keras podemos usar la métrica de AUC de la siguiente forma: 
-Su uso en Keras es 
-<sxh python> 
-metrics=[tf.keras.metrics.AUC()] 
-metrics=["AUC"] 
-</sxh> 
- 
-y usarla como 
-<sxh python> 
-history.history['auc'] 
-history.history['val_auc'] 
-</sxh> 
- 
- 
-Mas información: 
-  * [[https://keras.io/api/metrics/classification_metrics/#auc-class|AUC class]] 
-  * [[https://aprendeia.com/curvas-roc-y-area-bajo-la-curva-auc-machine-learning/|Curvas ROC y Área bajo la curva (AUC)]] 
-  * [[https://towardsdatascience.com/an-understandable-guide-to-roc-curves-and-auc-and-why-and-when-to-use-them-92020bc4c5c1|An Understandable Guide to ROC Curves And AUC and Why and When to use them?]] 
-  * [[https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5|Understanding AUC - ROC Curve]] 
-  * [[https://machinelearningmastery.com/roc-curves-and-precision-recall-curves-for-classification-in-python/|How to Use ROC Curves and Precision-Recall Curves for Classification in Python]] 
-  * {{ :clase:iabd:pia:2eval:receiver_operating_characteristic_roc_curves._an_analysis_tool_for_detection_performance.pdf |Receiver Operating Characteristic (ROC) Curves: An Analysis Tool for Detection Performance}} 
-  * {{ :clase:iabd:pia:2eval:predicting_receiver_operating_characteristic_curve_area_under_curve_and_arithmetic_means_of_accuracies_based_on_the_distribution_of_data_samples.pdf |Predicting Receiver Operating Characteristic curve, area under curve , and arithmetic means of accuracies based on the distribution of data samples}} 
-  * {{ :clase:iabd:pia:2eval:a_variable_selection_method_for_multiclass_classification_problems_using_two-class_roc_analysis.pdf |A variable selection method for multiclass classification problems using two-class ROC analysis}} 
-  * [[https://neptune.ai/blog/f1-score-accuracy-roc-auc-pr-auc|F1 Score vs ROC AUC vs Accuracy vs PR AUC: Which Evaluation Metric Should You Choose?]] 
-  * [[https://stackoverflow.com/questions/44172162/f1-score-vs-roc-auc|F1 Score vs ROC AUC]]  
  
  
Línea 958: Línea 893:
   * Sensibilidad   * Sensibilidad
   * Especificidad   * Especificidad
-  * AUC 
  
 {{:clase:iabd:pia:2eval:metricas-epocas.png?direct|}} {{:clase:iabd:pia:2eval:metricas-epocas.png?direct|}}
Línea 979: Línea 913:
  
 ==== Ejercicio 3.C ==== ==== Ejercicio 3.C ====
-Crea una función llamada ''get_metrics(TP,TN,FP,FN)'' que retorne las siguientes métricas:+Crea una función llamada ''get_metrics(TP,TN,FP,FN,Prevalencia=None)'' que retorne las siguientes métricas:
   * Sensibilidad   * Sensibilidad
   * Especificidad   * Especificidad
   * VPP   * VPP
   * VPN   * VPN
-  * AUC: Para calcular el valor de ''AUC'' deberás usar la función ''sklearn.metrics.roc_auc_score(y_true,y_score)''+  * Prevalencia
  
-Usando los valores de ''TP'' ,''TN'', ''FP'' ''FN'' del ejercicio anterior, muestra las métricas que retorna ''get_metrics''+Para calcular VPP y VPN se debe usar la prevalencia. Si no se pasa el valor de prevalencia ( Es decir 'prevalencia==None', se usará el de los datos sino se usará la prevalencia que se pase como argumento.
  
  
 +Usando los valores de ''TP'' ,''TN'', ''FP'' y ''FN'' del ejercicio anterior, muestra las métricas que retorna ''get_metrics''
 +
 +Muestra todo en la matriz de confusión.
  
 ==== Ejercicio 3.D ==== ==== Ejercicio 3.D ====
Línea 996: Línea 933:
  
 ==== Ejercicio 3.E ==== ==== Ejercicio 3.E ====
-En un nuevo jupyter notebook, carga el modelo y con los datos de test , vuelve a mostrar la matriz de confusión todas las métricas.+En un nuevo jupyter notebook, carga el modelo y con los datos de test , vuelve a mostrar la matriz de confusión con todas las métricas.
  
-Además muestra alguna de las nuevas métricas que hay en la siguiente tabla ,como por ejemplo el F1-score: 
- 
-{{:clase:iabd:pia:2eval:metricas.png?direct|}} 
  
  
 ==== Ejercicio 3.F ==== ==== Ejercicio 3.F ====
-Muestra ahora 2 gráficas, en las que se mostrarán los distintos valores de las métricas según el valor del umbral.+Muestra ahora 1 gráfica, en la que se mostrará:
  
-  * En la primera gráfica mostrarás en valor de la sensibilidad y la especificidad según el valor del umbral +  * El valor de la sensibilidad y la especificidad según el valor del umbral
-  * En la segunda gráfica mostrarás en valor del VPP y el VPN según el valor del umbral+
  
 {{:clase:iabd:pia:2eval:threshold-metricas.png?direct|}} {{:clase:iabd:pia:2eval:threshold-metricas.png?direct|}}
Línea 1014: Línea 947:
  
 ==== Ejercicio 3.G ==== ==== Ejercicio 3.G ====
-Muestra dos gráficas similares a las anteriores pero con las métricas: +Muestra una gráfica similar a las anteriores pero ahora sea la suma los valores de sensibilidad y la especificidad menos 1
-  * $Informedness=Sensibilidad+Especificidad-1$ +
-  * $Markedness=VPP+VPN-1$+
  
-{{:clase:iabd:pia:2eval:threshold-markedness-informedness.png?direct|}}+A la suma de los 2 valores para obtener el máximo pero restando 1 se le llama $Informedness$
  
-==== Ejercicio 3.H ==== +$$ 
-Muestra ahora otra gráfica pero de forma que: +Informedness=Sensibilidad+Especificidad-
-  * El eje X sea (1-Especificidad) +$$
-  * El eje Y sea la Sensibilidad+
  
 +Muestra un punto con el máximo de la gráfica y el threshold correspondiente al máximo.Además para ese nivel de threshold, **imprime la sensibilidad y la especificidad**
  
-Además pinta el área que hay por debajo, para ello usa la función: +{{:clase:iabd:pia:2eval:threshold-markedness-informedness.png?direct|}}
-''axes.fill_between(1-rango_especificidad,rango_sensibilidad, color='#BAD4F2', alpha=0.3)''+
  
  
-Ese área que se ha pintado es el valor de la métrica **"AUC"** 
  
-{{:clase:iabd:pia:2eval:curva_roc.png?direct|}} +==== Ejercicio ====
- +
- +
-==== Ejercicio 3.I ====+
 Indica en los siguientes problemas si subirías o bajarías el umbral Indica en los siguientes problemas si subirías o bajarías el umbral
  
Línea 1045: Línea 971:
  
  
 +
 +==== Ejercicio 5.A ====
 +Crea una nueva red neuronal para el problema del //bread cancer//
 +
 +Ahora razona con cual de las 2 redes te quedarías y que threshold elegirías para cada uno de ellos.
 +
 +Para elegir debes mostrar gráficas , una al lado de la otra para comparar lo siguiente:
 +  * Gráficos de perdida, sensibilida y especificidad durante el entrenamiento
 +  * Matriz de confusión con las métricas: Sensibilidad, Especificidad, VPP, VPN, Prevalencia
 +  * Threshold vs (Sensibilidad y Especificidad)
 +  * Threshold vs Informedness (Muestra en el label el máximo)
 +
 +
 +¿Con que red te quedarías?
 +
 +{{:clase:iabd:pia:2eval:comparar_redes.png?direct|}}
 +
 +Además para el nivel de threshold de la red que ha "ganado", **imprime la sensibilidad y la especificidad**
 +
 +==== Ejercicio 5.B ====
 +Con el modelo elegido, guarda el modelo a disco
 +
 +
 +==== Ejercicio 5.C ====
 +Con modelo que has elegido, cárgalo desde disco en otro Jupyter notebook y realiza inferencia de 10 pacientes. 
 +
 +Para cada paciente:
 +  * Indica su prevalencia (te la tienes que inventar de forma aleatoria)
 +  * Indica la probabilidad de que la red haya acertado.
  
  
clase/iabd/pia/2eval/tema07.metricas.1710347991.txt.gz · Última modificación: 2024/03/13 17:39 por admin