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/26 09:58]
admin [PR-AUC]
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 179: Línea 183:
  
 <note tip> <note tip>
 +
  
 <details> <details>
Línea 576: 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 587: 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 616: Línea 639:
 Accuracy=Especificidad+(Sensibilidad-Especificidad) \cdot Prevalencia Accuracy=Especificidad+(Sensibilidad-Especificidad) \cdot Prevalencia
 $$ $$
- 
-Esta métrica es la más sencilla de todas ya que simplemente es el "porcentaje" de cuantas veces acierta en función de todas las predicciones que ha hecho.  
- 
-Como ya hemos comentado, lo bueno que es intrínsecamente nuestro modelo se defiende por las métricas de sensibilidad y especificidad. Sin embargo, la prevalencia modifica el resultado final y es con lo que se calcula el VPP y VPN. Pues bien, lo que queremos es tener un número (en este caso la métrica de Accuracy) y que nos diga cómo es de buena nuestra red neuronal bajo las distintas prevalencias, sensibilidades y especificidades. Para ello está la siguiente figura: 
- 
-{{:clase:iabd:pia:2eval:accuracy.png|}} 
- 
-Si nos fijamos en cada una de las gráficas, vemos que siempre es una linea recta. Mirando también en la fórmula podemos verlo como una ecuación de primer grado que depende de la prevalencia. El valor de accuracy es una línea recta desde la especificidad hasta la sensibilidad. ¿Es un buen resumen de nuestra red? Pues si tenemos baja prevalencia, la accuracy prácticamente es la especificidad y con alta prevalencia, la accuracy es prácticamente la sensibilidad. Pues no parece que sea muy buena resumiendo los valores de sensibilidad y especificidad bajo distintas prevalencias. 
- 
  
 <note tip> <note tip>
Línea 686: Línea 700:
 </note> </note>
  
 +Esta métrica es la más sencilla de todas ya que simplemente es el "porcentaje" de cuantas veces acierta en función de todas las predicciones que ha hecho. 
  
 +Como ya hemos comentado, lo bueno que es intrínsecamente nuestro modelo se defiende por las métricas de sensibilidad y especificidad. Sin embargo, la prevalencia modifica el resultado final y es con lo que se calcula el VPP y VPN. Pues bien, lo que queremos es tener un número (en este caso la métrica de Accuracy) y que nos diga cómo es de buena nuestra red neuronal bajo las distintas prevalencias, sensibilidades y especificidades. 
  
 +En la siguiente figura vemos como se comparta bajo distintos valores de sensibilidad, especificidad y prevalencia.
  
 +{{:clase:iabd:pia:2eval:accuracy.png|}}
  
-===== Matthews Correlation Coefficient (MCC) ===== +Si nos fijamos en cada una de las gráficas, vemos que siempre es una linea rectaMirando también en la fórmula podemos verlo como una ecuación de primer grado que depende de la prevalenciaEl valor de accuracy es una línea recta desde la especificidad hasta la sensibilidad. ¿Es un buen resumen de nuestra red? Pues si tenemos baja prevalencia, la accuracy prácticamente es la especificidad y con alta prevalencia, la accuracy es prácticamente la sensibilidadPues no parece que sea muy buena resumiendo los valores de sensibilidad especificidad bajo distintas prevalencias.
-El MatthewsCorrelationCoefficient(MCC) es simplemente el [[https://es.wikipedia.org/wiki/Coeficiente_de_correlaci%C3%B3n_de_Pearson#Para_una_muestra|Coeficiente de correlación de Pearson para una muestra]]Es decir es un coficiente que nos dice como de similares son dos variables aleatoriasEn este caso las 2 variable aleatorias son los valores verdaderos ''y_true'' los valores predichos ''y_pred''+
  
-Su fórmula es:+Pero veamos los siguientes ejemplo de matrices de confusión para ver lo poco representativo que es esta métrica:
  
-$$ +{{:clase:iabd:pia:2eval:ejemplos-accuracy.png|}}
-MCC=\frac{TN \cdot TP-FN \cdot FP}{\sqrt{ (TP+FN)(FP+TN) \cdot (FN+TN)(TP+FP)}} +
-$$+
  
-La formula según la prevalencia es: 
  
-$$ 
-MCC=\frac{Sensibilidad+Especificidad-1}{\sqrt{ \frac{Prevalencia}{1-Prevalencia} Sensibilidad - Especificidad +1} \cdot \sqrt{ \frac{1-Prevalencia}{Prevalencia} Especificidad - Sensibilidad +1}} 
-$$ 
  
  
-El MMC tiene un valor entre -1 a 1. Siendo: 
-  * 1 : El clasificador funciona perfectamente y es cuando hay una completa correlación entre lo predicho y lo verdadero. 
-  * 0 : El clasificador acierta aleatoriamente y es cuando hay una nula correlación entre lo predicho y lo verdadero. 
-  * 1 : El clasificador acierta peor que aleatoriamente, es decir que clasifica al revés "perfectamente" y es cuando hay correlación inversa entre lo predicho y lo verdadero. 
  
-En la siguiente imagen podemos ver distintos valores del Coeficiente de correlación de Pearson: 
  
-{{:clase:iabd:pia:2eval:valores_coeficiente_correlacion_pearson.png|}} 
  
-Es decir que el MMC solo mide la relación lineal entre los valores verdaderos ''y_true'' y los valores predichos ''y_pred''. 
-  * Si esa relación es lineal directa, el MMC valdrá 1 
-  * Si no hay una relación lineal, el MMC valdrá 0 
-  * Si la relación es lineal inversa, el MMC valdrá -1. 
  
-Como en otro casos, al ser el MMC un valor de -1 a 1, lo vamos a normalizar para que su valor sea de 0 a 1 y de esa forma sea más sencillo de comparar con otras métricasA esta nueva métrica la llamaremos MMCnormalizado o nMMC+===== Matthews Correlation Coefficient (MCC) ===== 
 +El MatthewsCorrelationCoefficient(MCC) es simplemente el [[https://es.wikipedia.org/wiki/Coeficiente_de_correlaci%C3%B3n_de_Pearson#Para_una_muestra|Coeficiente de correlación de Pearson para una muestra]]. Es decir es un coficiente que nos dice como de similares son dos variables aleatoriasEn este caso las 2 variable aleatorias son los valores verdaderos ''y_true'' y los valores predichos ''y_pred'' 
 + 
 +Su fórmula es:
  
 $$ $$
-MMC \; normalizado=nMMC=\frac{MMC+1}{2}+MCC=\frac{TN \cdot TP-FN \cdot FP}{\sqrt{ (TP+FN)(FP+TN) \cdot (FN+TN)(TP+FP)}}
 $$ $$
- 
- 
- 
  
 <note tip> <note tip>
Línea 903: Línea 904:
 </details> </details>
 </note> </note>
 +
 +
 +
 +La formula según la prevalencia es:
 +
 +$$
 +MCC=\frac{Sensibilidad+Especificidad-1}{\sqrt{ \frac{Prevalencia}{1-Prevalencia} Sensibilidad - Especificidad +1} \cdot \sqrt{ \frac{1-Prevalencia}{Prevalencia} Especificidad - Sensibilidad +1}}
 +$$
  
 <note tip> <note tip>
Línea 941: 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 1011: Línea 1020:
 </details> </details>
 </note> </note>
 +
 +
 +
 +El MMC tiene un valor entre -1 a 1. Siendo:
 +  * 1 : El clasificador funciona perfectamente y es cuando hay una completa correlación entre lo predicho y lo verdadero.
 +  * 0 : El clasificador acierta aleatoriamente y es cuando hay una nula correlación entre lo predicho y lo verdadero.
 +  * 1 : El clasificador acierta peor que aleatoriamente, es decir que clasifica al revés "perfectamente" y es cuando hay correlación inversa entre lo predicho y lo verdadero.
 +
 +En la siguiente imagen podemos ver distintos valores del Coeficiente de correlación de Pearson:
 +
 +{{:clase:iabd:pia:2eval:valores_coeficiente_correlacion_pearson.png|}}
 +
 +Es decir que el MMC solo mide la relación lineal entre los valores verdaderos ''y_true'' y los valores predichos ''y_pred''.
 +  * Si esa relación es lineal directa, el MMC valdrá 1
 +  * Si no hay una relación lineal, el MMC valdrá 0
 +  * Si la relación es lineal inversa, el MMC valdrá -1.
 +
 +Como en otro casos, al ser el MMC un valor de -1 a 1, lo vamos a normalizar para que su valor sea de 0 a 1 y de esa forma sea más sencillo de comparar con otras métricas. A esta nueva métrica la llamaremos MMCnormalizado o nMMC
 +
 +$$
 +MMC \; normalizado=nMMC=\frac{MMC+1}{2}
 +$$
 +
 +Veamos en la siguiente figura los mismos ejemplos que en Accuracy y los vamos a comparar
 +
 +{{:clase:iabd:pia:2eval:ejemplos-accuracy-mcc.png|}}
 +
  
  
Línea 1090: Línea 1126:
 Explicar que es lo que mide, es sencillo ya que es la media aritmética entre VPP y VPN. Explicar que es lo que mide, es sencillo ya que es la media aritmética entre VPP y VPN.
  
 +
 +Veamos en la siguiente figura los mismos ejemplos que en Accuracy y los vamos a comparar
 +
 +{{:clase:iabd:pia:2eval:ejemplos-accuracy-markedness.png|}}
 +
 +Para terminar vamos a comparar nMCC y nMarkedness
 +
 +{{:clase:iabd:pia:2eval:ejemplos-mcc-markedness.png|}}
 ===== Jaccard ===== ===== Jaccard =====
 El índice Jaccard es simplemente el porcentaje de TP respecto a los TP,FP y FN. Pero en vez de ser un porcentaje de 0 a 100 va de 0 a 1. El índice Jaccard es simplemente el porcentaje de TP respecto a los TP,FP y FN. Pero en vez de ser un porcentaje de 0 a 100 va de 0 a 1.
Línea 1434: 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 1456: 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.
 +
 +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>
 +
  
 Más información: Más información:
Línea 1538: 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 1548: 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 1556: 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.1740560320.txt.gz · Última modificación: 2025/02/26 09:58 por admin