Processing math: 100%

Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema08.metricas_derivadas

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:tema08.metricas_derivadas [2025/02/27 09:04]
admin
clase:iabd:pia:2eval:tema08.metricas_derivadas [2025/05/25 22:10] (actual)
admin [8.c Métricas rendimiento general de clasificación]
Línea 32: Línea 32:
  
 <note important>La siguiente pregunta es ¿Que métrica debemos elegir? En el apartado siguiente [[tema08.seleccion-metricas]] vamos a explicar que métrica elegir en cada caso.</note> <note important>La siguiente pregunta es ¿Que métrica debemos elegir? En el apartado siguiente [[tema08.seleccion-metricas]] vamos a explicar que métrica elegir en cada caso.</note>
 +
 +<note tip>
 +En esta página van a salir la media aritmética, la media geométrica o armónica. Para profundizar sobre que es la media se recomienda leer el artículo [[clase:iabd:pia:matematicas:medias]]
 +</note>
  
 ==== Normalización ==== ==== Normalización ====
Línea 44: Línea 48:
  
 ==== Fórmulas ==== ==== Fórmulas ====
-Aunque vamos a ver cada métrica en detalle, a modo de resumen, vamos a ver aquí todas las fórmulas+Antes de explicar cada fórmula, ponemos ya, a modo de resumen, todas las fórmulas.
  
 ^  Métricas independientes de la prevalencia  ^^ ^  Métricas independientes de la prevalencia  ^^
 ^  Nombre  ^  Fórmula  ^ ^  Nombre  ^  Fórmula  ^
-| Informedness normalizado   Sensibilidad+Especificidad2 +[[#Informedness|nInformedness]]   Sensibilidad+Especificidad2 
-| Balanced Accuracy Sensibilidad+Especificidad2 +[[#Balanced Accuracy]]   Sensibilidad+Especificidad2 
-| Prevalence threshold (PT)  | 1EspecificidadSensibilidad+1Especificidad +[[#Prevalence threshold (PT)]]   | 1EspecificidadSensibilidad+1Especificidad 
-| ROC-AUC  |  <sxh python>roc_auc=roc_auc_score(y_true,y_score)</sxh>  |+[[#ROC-AUC]]   <sxh python>roc_auc=roc_auc_score(y_true,y_score)</sxh>  |
  
 ^  Métricas de rendimiento global  ^^ ^  Métricas de rendimiento global  ^^
 ^  Nombre  ^  Fórmula  ^ ^  Nombre  ^  Fórmula  ^
-| Accuracy Especificidad+(SensibilidadEspecificidad)Prevalencia +[[#Accuracy]]   Especificidad+(SensibilidadEspecificidad)Prevalencia 
-| Matthews correlation coefficient normalizado (nMCC)  |  Sensibilidad+Especificidad1Prevalencia1PrevalenciaSensibilidadEspecificidad+11PrevalenciaPrevalenciaEspecificidadSensibilidad+1+12 +[[#Matthews correlation coefficient (MCC)|nMCC]]   Sensibilidad+Especificidad1Prevalencia1PrevalenciaSensibilidadEspecificidad+11PrevalenciaPrevalenciaEspecificidadSensibilidad+1+12 
-| Markedness  | VPP+VPN2  |+[[#Markedness|nMarkedness]]  | VPP+VPN2  |
  
 ^  Métricas para datos desbalaceados  ^^ ^  Métricas para datos desbalaceados  ^^
 ^  Nombre  ^  Fórmula  ^ ^  Nombre  ^  Fórmula  ^
-| Jaccard PrecisionSensibilidadPrecision+SensibilidadPrecisionSensibilidad=TPTP+FP+FN +[[#Jaccard]]   PrecisionSensibilidadPrecision+SensibilidadPrecisionSensibilidad=TPTP+FP+FN 
-| F1-score 2SensibilidadPrecisionSensibilidad+Precision=TP(TP+FP)+(TP+FN)2 +[[#F1-score]]   2SensibilidadPrecisionSensibilidad+Precision=TP(TP+FP)+(TP+FN)2 
-| Fowlkes-Mallows (FM)  | $$\sqrt{Sensibilidad*Precisión}=\frac{TP}{\sqrt{(TP+FN)*(TP+FP)}}$$  | +[[#Fowlkes-Mallows (FM)]]  | $$\sqrt{Sensibilidad*Precisión}=\frac{TP}{\sqrt{(TP+FP\cdot (TP+FN)}}$$  | 
-| PR-AUC  | <sxh python>pr_auc=average_precision_score(y_true,y_score)</sxh>  |+[[#PR-AUC]]  | <sxh python>pr_auc=average_precision_score(y_true,y_score)</sxh>  |
  
  
Línea 577: Línea 581:
 <sxh python> <sxh python>
 from sklearn.metrics import roc_auc_score from sklearn.metrics import roc_auc_score
 +
 +y_true = np.array([0, 0, 1, 1])
 +y_score = np.array([0.1, 0.4, 0.35, 0.8])
  
 roc_auc=roc_auc_score(y_true,y_score) roc_auc=roc_auc_score(y_true,y_score)
 </sxh> </sxh>
 +
 +
 +==== Explicación de este tipo de gráficas ====
 +Acabamos de ver como funciona ROC-AUC pero existe otra métrica similar llamada [[#pr-auc]] ambas métricas comparten el que se calcula el área bajo la curva.
 +
 +Así que vamos a explicar el significado de este tipo de métricas. Para ello vamos a poner un ejemplo cotidiano.
 +
 +Imaginemos que queremos irnos de vacaciones a dos destinos turísticos distintos. Y queremos saber cual de los dos es un mejor destino. 
 +(Los destinos son nuestros modelos de IA que queremos comparar). Tenemos la posibilidad de ir más o menos días y eso lo decidimos nosotros (El número de días es como nuestro umbral). Según el número de días que nos vayamos tenemos dos métricas que evalúan cada destino turístico.
 +  * El dinero que me gasto por irme esos días.
 +  * La felicidad que da por irme esos días.
 +
 +¿Podríamos ahora hacer una gráfica en la que para cada número de días que me voy se calculara "El dinero que me gasto" y "La felicidad que me da"?
 +
 +
  
  
Línea 588: Línea 610:
   * {{ :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: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}}
   * [[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4356897/|Disadvantages of using the area under the receiver operating characteristic curve to assess imaging tests: A discussion and proposal for an alternative approach]]   * [[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4356897/|Disadvantages of using the area under the receiver operating characteristic curve to assess imaging tests: A discussion and proposal for an alternative approach]]
-  * [[https://medium.com/analytics-vidhya/mathematics-behind-roc-auc-interpretation-e4e6f202a015|Mathematics behind ROC-AUC interpretation]] y {{ :clase:iabd:pia:2eval:mathematics_behind_roc-auc_interpretation.pdf |Mathematics behind ROC-AUC interpretation.pdf}}: Demostración de que $ROC{\text -}AUC=P(Y_{score-true}>Y_{score-false})$+  * [[https://medium.com/analytics-vidhya/mathematics-behind-roc-auc-interpretation-e4e6f202a015|Mathematics behind ROC-AUC interpretation]] y {{ :clase:iabd:pia:2eval:mathematics_behind_roc-auc_interpretation.pdf |Mathematics behind ROC-AUC interpretation.pdf}}: Demostración de que ''ROC-AUC=P(y_score_true>Y_score_false)''
   * {{ :clase:iabd:pia:2eval:auc_a_misleading_measure_of_the_performance_of_predictive_distribution_models.pdf |AUC: A misleading measure of the performance of predictive distribution models}}   * {{ :clase:iabd:pia:2eval:auc_a_misleading_measure_of_the_performance_of_predictive_distribution_models.pdf |AUC: A misleading measure of the performance of predictive distribution models}}
   * Cálculo del mejor Threshold:   * Cálculo del mejor Threshold:
Línea 928: Línea 950:
  
 $$ $$
-\frac{S \cdot TP + \cdot TN - \cdot S}{E \cdot S}=+\frac{S \cdot TP + \cdot TN - \cdot S}{E \cdot S}=
 $$ $$
  
Línea 1456: Línea 1478:
 Más información: Más información:
   * [[https://en.wikipedia.org/wiki/Fowlkes%E2%80%93Mallows_index|Fowlkes–Mallows index. Wikipedia]]   * [[https://en.wikipedia.org/wiki/Fowlkes%E2%80%93Mallows_index|Fowlkes–Mallows index. Wikipedia]]
-  * [[https://www.jstor.org/stable/2288117|A Method for Comparing Two Hierarchical Clusterings. E. B. Fowlkes &C. L. Mallows]]+  * [[https://www.tandfonline.com/doi/abs/10.1080/01621459.1983.10478008|A Method for Comparing Two Hierarchical Clusterings. E. B. Fowlkes &C. L. Mallows]]{{:clase:iabd:pia:2eval:lib|}}
   * {{:clase:iabd:pia:2eval:comparing_clusterings-an_information_based_distance.pdf |Comparing clusterings—an information based distance}}   * {{:clase:iabd:pia:2eval:comparing_clusterings-an_information_based_distance.pdf |Comparing clusterings—an information based distance}}
   * [[https://scikit-learn.org/1.5/modules/generated/sklearn.metrics.fowlkes_mallows_score.html|sklearn.metrics.fowlkes_mallows_score]]   * [[https://scikit-learn.org/1.5/modules/generated/sklearn.metrics.fowlkes_mallows_score.html|sklearn.metrics.fowlkes_mallows_score]]
   * [[https://www.geeksforgeeks.org/ml-fowlkes-mallows-score/|Geeks for Geeks: Fowlkes-Mallows Score]]   * [[https://www.geeksforgeeks.org/ml-fowlkes-mallows-score/|Geeks for Geeks: Fowlkes-Mallows Score]]
 +  * 
  
 ===== PR-AUC ===== ===== PR-AUC =====
Línea 1478: Línea 1501:
  
 {{:clase:iabd:pia:2eval:metricas_curva_pr_auc_exp.png|}} {{:clase:iabd:pia:2eval:metricas_curva_pr_auc_exp.png|}}
 +
 +A esta métrica también se le llama Preciónmedia ya que realmente está calculado la media de las precisiones para todos los umbrales. 
  
  
 El métrica de ROC-AUC no tenía en cuenta la prevalencia ya que no se usaba en la fórmula. Por otro lado PR-AUC, si que tiene en cuenta la prevalencia ya que usa la precisión pero por otro lado no tiene en cuenta los TN. Lo que la hace válida como métrica para datos desbalanceados. El métrica de ROC-AUC no tenía en cuenta la prevalencia ya que no se usaba en la fórmula. Por otro lado PR-AUC, si que tiene en cuenta la prevalencia ya que usa la precisión pero por otro lado no tiene en cuenta los TN. Lo que la hace válida como métrica para datos desbalanceados.
 +
 +Con sklearn podemos usar la métrica de PR-AUC de la siguiente forma:
 +<sxh python>
 +from sklearn.metrics import average_precision_score
 +
 +y_true = np.array([0, 0, 1, 1])
 +y_score = np.array([0.1, 0.4, 0.35, 0.8])
 +
 +pr_auc = average_precision_score(y_true, y_score)
 +</sxh>
  
  
Línea 1564: Línea 1599:
  
 Además muestra una línea vertical con la prevalencia de los datos. Además muestra una línea vertical con la prevalencia de los datos.
 +
 +{{:clase:iabd:pia:2eval:ejer-prevalencia-metricas-globales.png?450|}}
 +
  
 ==== Ejercicio 2.C ==== ==== Ejercicio 2.C ====
Línea 1574: Línea 1612:
 Además muestra una línea vertical con la prevalencia de los datos. Además muestra una línea vertical con la prevalencia de los datos.
  
-¿Porqué no ha variado PC-AUC?+{{:clase:iabd:pia:2eval:ejer-prevalencia-metricas-desbalanceados.png?450|}} 
 + 
 +¿Porqué no ha variado PR-AUC?
  
 ==== Ejercicio 2.D ==== ==== Ejercicio 2.D ====
Línea 1582: Línea 1622:
   * Fowlkes-Mallows (FM)   * Fowlkes-Mallows (FM)
  
 +{{:clase:iabd:pia:2eval:ejer-prevalencia-muy-baja-metricas-desbalanceados.png?450|}}
  
  
  
  
clase/iabd/pia/2eval/tema08.metricas_derivadas.1740643479.txt.gz · Última modificación: 2025/02/27 09:04 por admin