Muestra las diferencias entre dos versiones de la página.
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> | <note important> | ||
+ | |||
+ | <note tip> | ||
+ | En esta página van a salir la media aritmética, | ||
+ | </ | ||
==== 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, | + | Antes de explicar |
^ Métricas independientes de la prevalencia | ^ Métricas independientes de la prevalencia | ||
^ Nombre | ^ Nombre | ||
- | | Informedness | + | | [[#Informedness|nInformedness]] |
- | | Balanced Accuracy | + | | [[#Balanced Accuracy]] |
- | | Prevalence threshold (PT) | √1−Especificidad√Sensibilidad+√1−Especificidad | + | | [[#Prevalence threshold (PT)]] | √1−Especificidad√Sensibilidad+√1−Especificidad |
- | | ROC-AUC | + | | [[#ROC-AUC]] |
^ Métricas de rendimiento global | ^ Métricas de rendimiento global | ||
^ Nombre | ^ Nombre | ||
- | | Accuracy | + | | [[#Accuracy]] |
- | | Matthews correlation coefficient | + | | [[#Matthews correlation coefficient (MCC)|nMCC]] |
- | | Markedness | + | | [[#Markedness|nMarkedness]] |
^ Métricas para datos desbalaceados | ^ Métricas para datos desbalaceados | ||
^ Nombre | ^ Nombre | ||
- | | Jaccard | + | | [[#Jaccard]] |
- | | F1-score | + | | [[#F1-score]] |
- | | 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 | + | | [[#PR-AUC]] | <sxh python> |
Línea 179: | Línea 183: | ||
<note tip> | <note tip> | ||
+ | |||
< | < | ||
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, | ||
+ | y_score = np.array([0.1, | ||
roc_auc=roc_auc_score(y_true, | roc_auc=roc_auc_score(y_true, | ||
</ | </ | ||
+ | |||
+ | |||
+ | ==== 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: | ||
* {{ : | * {{ : | ||
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
* {{ : | * {{ : | ||
* 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 " | ||
- | |||
- | 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, | ||
- | |||
- | {{: | ||
- | |||
- | 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, | ||
- | |||
<note tip> | <note tip> | ||
Línea 686: | Línea 700: | ||
</ | </ | ||
+ | Esta métrica es la más sencilla de todas ya que simplemente es el " | ||
+ | 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, | ||
+ | En la siguiente figura vemos como se comparta bajo distintos valores de sensibilidad, | ||
+ | {{: | ||
- | ===== Matthews Correlation Coefficient (MCC) ===== | + | Si nos fijamos en cada una de las gráficas, vemos que siempre |
- | El MatthewsCorrelationCoefficient(MCC) es simplemente el [[https://es.wikipedia.org/ | + | |
- | Su fórmula | + | Pero veamos los siguientes ejemplo de matrices de confusión para ver lo poco representativo que es esta métrica: |
- | $$ | + | {{: |
- | 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, | ||
- | En la siguiente imagen podemos ver distintos valores del Coeficiente de correlación de Pearson: | ||
- | {{: | ||
- | Es decir que el MMC solo mide la relación lineal entre los valores verdaderos '' | ||
- | * 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 | + | ===== Matthews Correlation Coefficient (MCC) ===== |
+ | El MatthewsCorrelationCoefficient(MCC) es simplemente | ||
+ | |||
+ | 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: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
+ | 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 + e \cdot TN - e \cdot S}{E \cdot S}= | + | \frac{S \cdot TP + E \cdot TN - E \cdot S}{E \cdot S}= |
$$ | $$ | ||
Línea 1011: | Línea 1020: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
+ | 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, | ||
+ | |||
+ | En la siguiente imagen podemos ver distintos valores del Coeficiente de correlación de Pearson: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Es decir que el MMC solo mide la relación lineal entre los valores verdaderos '' | ||
+ | * 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 | ||
+ | |||
+ | {{: | ||
+ | |||
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 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Para terminar vamos a comparar nMCC y nMarkedness | ||
+ | |||
+ | {{: | ||
===== 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:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
* {{: | * {{: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * | ||
===== PR-AUC ===== | ===== PR-AUC ===== | ||
Línea 1456: | Línea 1501: | ||
{{: | {{: | ||
+ | |||
+ | 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, | ||
+ | y_score = np.array([0.1, | ||
+ | |||
+ | pr_auc = average_precision_score(y_true, | ||
+ | </ | ||
+ | |||
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. | ||
+ | |||
+ | {{: | ||
+ | |||
==== 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 | + | {{: |
+ | |||
+ | ¿Porqué no ha variado | ||
==== Ejercicio 2.D ==== | ==== Ejercicio 2.D ==== | ||
Línea 1556: | Línea 1622: | ||
* Fowlkes-Mallows (FM) | * Fowlkes-Mallows (FM) | ||
+ | {{: | ||