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 ·

ROC y AUC

ROC y AUC: Evaluación de modelos de clasificación

Introducción

La curva ROC (Receiver Operating Characteristic) y la métrica AUC (Area Under the Curve) son herramientas fundamentales para evaluar y comparar los modelos de clasificación. La ROC es una representación gráfica que muestra el rendimiento del modelo en términos de tasa verdadera positiva (TPR, True Positive Rate) contra la tasa falsa positiva (FPR, False Positive Rate). El AUC es simplemente la área bajo esta curva y sirve como métrica numérica para evaluar el desempeño del modelo. Ambas herramientas son esenciales para entender cómo un modelo de clasificación se comporta con diferentes umbrales de decisión.

Explicación principal

La ROC curve representa la relación entre TPR (tasa verdadera positiva) y FPR (tasa falsa positiva) a través de diferentes umbrales de probabilidad. La TPR es el porcentaje de casos reales positivos que son correctamente identificados, mientras que el FPR es el porcentaje de casos negativos que se clasifican como positivos. Una curva ROC perfecta sería una línea recta vertical (FPR=0) y luego horizontal (TPR=1).

La AUC es la medida numérica que indica cuán cercana está una curva ROC a la curva ideal, donde el AUC máximo es 1.0. Un AUC de 0.5 se considera un modelo aleatorio.

A continuación, se presenta un ejemplo en Python utilizando matplotlib y scikit-learn para visualizar la ROC curve y calcular el AUC:

# Ejemplo de uso de ROC y AUC con scikit-learn

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression

# Generar datos sintéticos
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# Dividir los datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Entrenar un modelo de regresión logística
model = LogisticRegression()
model.fit(X_train, y_train)

# Predecir probabilidades
y_scores = model.predict_proba(X_test)[:, 1]

# Calcular ROC curve y AUC
fpr, tpr, _ = roc_curve(y_test, y_scores)
roc_auc = auc(fpr, tpr)

# Visualizar la ROC curve
plt.figure()
plt.plot(fpr, tpr, label=f'AUC = {roc_auc:.2f}')
plt.plot([0, 1], [0, 1], 'k--')  # Línea de referencia
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('Tasa Falsa Positiva')
plt.ylabel('Tasa Verdadera Positiva')
plt.title('ROC Curve')
plt.legend(loc="lower right")
plt.show()

Errores típicos / trampas

  1. Interpretación incorrecta del AUC: El AUC no mide la precisión global del modelo, sino su capacidad para distinguir entre clases en términos de probabilidad.
  2. Ignorar el balanceo de clases: Si las clases están muy desequilibradas, un buen AUC puede ocultar problemas en la detección de casos negativos.
  3. No tener en cuenta el costo asociado a errores: El AUC no refleja el impacto real de los errores en términos de costes económicos o operativos.

Checklist accionable

  1. Verifica el balanceo de clases: Utiliza técnicas como undersampling, oversampling o SMOTE para equilibrar las clases.
  2. Evalúa diferentes umbrales de decisión: Analiza cómo varía la TPR y FPR con diferentes umbrales para optimizar el modelo.
  3. Considere otros métodos de evaluación: Combina AUC con otras métricas como Precision, Recall y F1-Score para un análisis más completo.
  4. Revisa la curva ROC visualmente: Identifica puntos donde el modelo se desvía significativamente del ideal y busca mejoras.
  5. Ajusta hiperparámetros del modelo: Utiliza validación cruzada o búsqueda de cuadrícula para optimizar los parámetros.

Cierre

La curva ROC y la métrica AUC son herramientas poderosas en el análisis de modelos de clasificación, permitiendo una evaluación detallada y comparativa. Sin embargo, su correcto uso requiere una comprensión profunda de sus limitaciones y cómo interpretarlos correctamente.

Siguientes pasos

  • Evaluación adicional: Combina AUC con otras métricas como Precision y Recall para obtener un análisis más completo.
  • Modelos avanzados: Explora modelos como Random Forest o Gradient Boosting que pueden ofrecer mejores resultados en ciertas situaciones.
  • Profundización en balanceo de clases: Investiga técnicas más avanzadas para manejar datos desequilibrados, como oversampling y SMOTE.

Esperamos que este artículo te ayude a mejorar el entendimiento y la aplicación efectiva de ROC y AUC en tus proyectos de machine learning. ¡Buena suerte!

Contacto

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