Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Machine Learning clásico, Unidad 8 — Evaluación de modelos, 8.2 — Métricas para clasificación ·

Precision, recall y F1

Precision, recall y F1

Introducción

En el campo del machine learning clásico, evaluar la precisión de nuestros modelos es una tarea fundamental. Dos métricas fundamentales para medir la calidad de los modelos de clasificación son la precision (precisión) y la recall (detección). Estas métricas nos ayudan a entender cuántos de los casos positivos que hemos predicho son realmente positivos, y qué porcentaje de todos los casos positivos en realidad se han predecido. La tercera métrica relevante es el F1-score, que combina precisión y recall para proporcionar una sola medida equilibrada.

Explicación principal con ejemplos

La precision se define como la proporción de predicciones positivas que son realmente verdaderas. En términos matemáticos:

\[ \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} \]

Donde:

  • TP (True Positive) es el número de casos reales positivos que se han predicho correctamente.
  • FP (False Positive) son los casos reales negativos que se han predicho como positivos.

La recall o detección, por otro lado, mide la proporción de casos positivos reales que se han detectado. En términos matemáticos:

\[ \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} \]

Donde:

  • FN (False Negative) son los casos reales positivos que se han predicho como negativos.

La F1-score es la media armónica de precisión y recall. Es útil cuando queremos equilibrar ambas métricas:

\[ \text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} \]

Veamos un ejemplo con una matriz de confusión:

| Real/Pred | Positivo (P) | Negativo (N) | |-----------|-------------|-------------| | Positivo | TP | FN | | Negativo | FP | TN |

Supongamos que en nuestro conjunto de datos tenemos 100 casos positivos reales y 95 predicciones correctas, pero también 25 falsos positivos. La matriz de confusión sería:

| Real/Pred | Positivo (P) | Negativo (N) | |-----------|-------------|-------------| | Positivo | 95 | 5 | | Negativo | 25 | 70 |

Cálculo de precision, recall y F1-score

from sklearn.metrics import classification_report

# Ejemplo de predicciones
y_true = [1, 0, 1, 1, 0, 1]
y_pred = [1, 0, 1, 0, 0, 1]

precision = (95 / (95 + 25))
recall = (95 / (95 + 5))
f1_score = 2 * ((precision * recall) / (precision + recall))

print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1-Score: {f1_score}")

# O usando scikit-learn
report = classification_report(y_true, y_pred, output_dict=True)
print(report['weighted avg'])

Errores típicos / trampas

1. Ignorar el equilibrio de clases

Si los datos están muy desequilibrados (por ejemplo, con muchos más casos negativos que positivos), la precisión y el recall pueden no reflejar bien el rendimiento del modelo.

Solución: Usar métricas ponderadas o muestreo sobremuestreando/submuestreando para corregir el desequilibrio de clases.

2. Fijarse solo en la precisión

A menudo, es importante detectar todos los casos positivos (recall), incluso si eso implica tener un alto número de falsos positivos (precision).

Solución: Equilibrar las métricas considerando el coste de falsos negativos y falsos positivos.

3. No usar F1-score en problemas desequilibrados

El F1-score puede ser engañoso en problemas desequilibrados ya que tiende a penalizar más los falsos negativos que los falsos positivos.

Solución: Utilizar métricas de balanceadas o ponderadas, o combinar múltiples métricas para una visión más completa del rendimiento.

Checklist accionable

  1. Evalúa el desequilibrio en tus datos: Verifica si tienes un desequilibrio significativo entre clases.
  2. Usa métricas ponderadas: Si los datos están equilibrados, asegúrate de usar las métricas ponderadas para obtener una visión completa del rendimiento.
  3. Considera el coste real: Valora qué es más importante para tu caso de uso: detección de falsos negativos o falsos positivos.
  4. Implementa validación cruzada: Comprueba cómo se comporta tu modelo en diferentes subconjuntos de datos para evitar overfitting.
  5. Mira las curvas ROC y AUC: Estas visualizaciones pueden ofrecer una visión más detallada del rendimiento.

Cierre: Siguientes pasos

  • Aprende a balancear clases: Si tienes un desequilibrio, aprende técnicas de muestreo para equilibrar tus datos.
  • Experimenta con modelos de clasificación avanzados: Considera modelos como Gradient Boosting o Random Forest que pueden manejar mejor el desequilibrio de clases.
  • Ajusta parámetros del modelo: Experimenta con diferentes hiperparámetros para optimizar precision, recall y F1-score.

Mediante la comprensión y el uso adecuado de precision, recall y F1-score, podrás evaluar más precisamente el rendimiento de tus modelos de clasificación en una variedad de aplicaciones.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).