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 15:02] admin [Markedness] |
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 927: | 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 1455: | 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 1477: | 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. | 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, | ||
+ | </ | ||
Línea 1563: | 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 1573: | 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 1581: | Línea 1622: | ||
* Fowlkes-Mallows (FM) | * Fowlkes-Mallows (FM) | ||
+ | {{: | ||