Métricas de Evaluación de Modelos de Clasificación Binaria
Inteligencia Artificial Publicado el 30 de junio de 2025 Tiempo de lectura: 5 min.Al evaluar modelos de clasificación binaria en Python utilizando scikit-learn, existen varias métricas clave que se utilizan comúnmente para medir el rendimiento del modelo. En este artículo, exploraremos estas métricas y cómo elegir el mejor modelo según las necesidades específicas de tu problema.
1. Exactitud (Accuracy)
La exactitud mide la proporción de instancias clasificadas correctamente sobre el total de instancias. Aunque es una métrica sencilla, puede ser engañosa si las clases están desbalanceadas.
2. Precisión (Precision)
La precisión mide la proporción de predicciones positivas verdaderas entre todas las predicciones positivas. Es útil cuando el costo de falsos positivos es alto.
3. Sensibilidad (Recall o Tasa de Verdaderos Positivos)
La sensibilidad mide la proporción de predicciones positivas verdaderas entre todas las instancias positivas reales. Es importante cuando el costo de falsos negativos es alto.
4. Puntuación F1 (F1 Score)
La puntuación F1 es la media armónica de la precisión y la sensibilidad. Equilibra el compromiso entre precisión y sensibilidad y es útil cuando necesitas una sola métrica para resumir el rendimiento del modelo.
5. Matriz de Confusión (Confusion Matrix)
La matriz de confusión proporciona un desglose detallado de verdaderos positivos, falsos positivos, verdaderos negativos y falsos negativos.
6. Curva ROC y AUC
La Curva Característica de Operación del Receptor (ROC) es una gráfica de la tasa de verdaderos positivos frente a la tasa de falsos positivos en diferentes ajustes de umbral. El Área Bajo la Curva (AUC) proporciona un único valor escalar que resume la capacidad del modelo para distinguir entre clases.
7. Curva Precisión-Recall y AUC
La curva Precisión-Recall es útil cuando se trata con conjuntos de datos desbalanceados. Representa la precisión frente a la sensibilidad en diferentes ajustes de umbral. El AUC bajo esta curva también se puede calcular.
8. Pérdida Logarítmica (Log Loss)
La pérdida logarítmica (o pérdida de entropía cruzada) mide la incertidumbre de tus predicciones. Una pérdida logarítmica más baja indica un mejor rendimiento del modelo.
¿Cómo Elegir el Mejor Modelo Usando las Métricas?
Elegir el mejor modelo cuando tienes varias métricas de evaluación implica comprender los compromisos entre diferentes métricas y alinearlas con los requisitos específicos de tu problema. Aquí tienes algunos pasos para guiar el proceso:
- Entiende tu dominio de problema: Si tu conjunto de datos tiene un desbalance significativo de clases, métricas como la exactitud pueden ser engañosas. En tales casos, la precisión, sensibilidad, puntuación F1 y AUC-PR (Área Bajo la Curva Precisión-Recall) son más informativas.
- Define tus objetivos: Determina la importancia relativa de falsos positivos y falsos negativos. Por ejemplo, en diagnóstico médico, los falsos negativos (no detectar una enfermedad) pueden ser más críticos que los falsos positivos (falsa alarma).
- Evalúa varias métricas: Examina la matriz de confusión para obtener un desglose detallado de verdaderos positivos, falsos positivos, verdaderos negativos y falsos negativos. Grafica las curvas ROC-AUC y Precisión-Recall para visualizar los compromisos entre la tasa de verdaderos positivos y falsos positivos (ROC) o precisión y sensibilidad (PR). Si necesitas probabilidades bien calibradas, la pérdida logarítmica puede ser una buena métrica.
- Considera el impacto empresarial: Cuantifica los costos y beneficios asociados con diferentes tipos de errores. Por ejemplo, en detección de fraude, el costo de un falso positivo puede ser diferente del costo de un falso negativo. Considera cómo el rendimiento del modelo afectará a los usuarios finales.
- Usa métricas específicas del dominio: A veces, métricas específicas del dominio son más relevantes. Por ejemplo, en recuperación de información, métricas como la Media de la Precisión Promedio (MAP) pueden ser más apropiadas.
- Validación cruzada: Utiliza la validación cruzada para asegurarte de que el rendimiento del modelo sea consistente en diferentes subconjuntos de los datos. Esto ayuda a identificar modelos que generalizan bien.
- Complejidad del modelo: Considera el compromiso entre la complejidad del modelo y el rendimiento. Modelos más simples a menudo son más fáciles de interpretar y desplegar, pero pueden no rendir tan bien como modelos más complejos.
- Métodos de ensamblaje: Si ningún modelo sobresale claramente, considera combinar modelos utilizando técnicas de ensamblaje como bagging, boosting o stacking para combinar las fortalezas de múltiples modelos.
Ejemplo de Proceso de Toma de Decisiones
Aquí tienes un enfoque estructurado para elegir el mejor modelo:
- Evalúa métricas básicas: Calcula la exactitud, precisión, sensibilidad, puntuación F1, ROC-AUC y pérdida logarítmica para cada modelo. Grafica las curvas ROC y Precisión-Recall.
- Analiza la matriz de confusión: Examina la matriz de confusión para entender los tipos de errores que cada modelo está cometiendo.
- Considera el impacto empresarial: Pondera los costos y beneficios de diferentes tipos de errores. Si los falsos negativos son más críticos, prioriza la sensibilidad. Si los falsos positivos son más críticos, prioriza la precisión.
- Validación cruzada: Realiza validación cruzada para asegurarte de que el rendimiento del modelo sea consistente en diferentes subconjuntos de los datos.
- Complejidad del modelo: Evalúa el compromiso entre la complejidad del modelo y el rendimiento. Modelos más simples pueden ser preferibles si su rendimiento es razonablemente bueno.
- Métodos de ensamblaje: Si ningún modelo es claramente superior, considera combinar modelos utilizando técnicas de ensamblaje.
Ejemplo de Cálculo de Métricas
A continuación, se presenta un ejemplo de cómo calcular la mayoría de las métricas estudiadas comparando dos modelos: Random Forest y Gradient Boosting.
from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split, cross_val_score from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, log_loss import numpy as np # Generar conjunto de datos sintético X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42) # Dividir en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Definir modelos models = { "Random Forest": RandomForestClassifier(random_state=42), "Gradient Boosting": GradientBoostingClassifier(random_state=42) } # Evaluar modelos results = {} for name, model in models.items(): model.fit(X_train, y_train) y_pred = model.predict(X_test) y_probs = model.predict_proba(X_test)[:, 1] results[name] = { "Accuracy": accuracy_score(y_test, y_pred), "Precision": precision_score(y_test, y_pred), "Recall": recall_score(y_test, y_pred), "F1 Score": f1_score(y_test, y_pred), "ROC AUC": roc_auc_score(y_test, y_probs), "Log Loss": log_loss(y_test, y_probs) } # Imprimir resultados for name, metrics in results.items(): print(f"Modelo: {name}") for metric, value in metrics.items(): print(f" {metric}: {value:.4f}") print() # Validación cruzada for name, model in models.items(): scores = cross_val_score(model, X, y, cv=5, scoring='roc_auc') print(f"Modelo: {name}, ROC AUC validación cruzada: {np.mean(scores):.4f} ± {np.std(scores):.4f}")
Resultados y Análisis de las Métricas del Ejemplo
Random Forest
Métrica | Valor |
---|---|
Accuracy | 0.9000 |
Precision | 0.9485 |
Recall | 0.8598 |
F1 Score | 0.9020 |
ROC AUC | 0.9379 |
Log Loss | 0.3204 |
ROC AUC (Validación Cruzada) | 0.9510 ± 0.0154 |
Gradient Boosting
Métrica | Valor |
---|---|
Accuracy | 0.9150 |
Precision | 0.9688 |
Recall | 0.8692 |
F1 Score | 0.9163 |
ROC AUC | 0.9348 |
Log Loss | 0.3167 |
ROC AUC (Validación Cruzada) | 0.9499 ± 0.0181 |
Comparación y Elección del Modelo
- Exactitud (Accuracy): Gradient Boosting tiene una exactitud ligeramente mayor (0.9150) en comparación con Random Forest (0.9000). Esto indica que Gradient Boosting clasifica correctamente un mayor porcentaje de instancias en el conjunto de prueba.
- Precisión (Precision): Gradient Boosting tiene una precisión más alta (0.9688) en comparación con Random Forest (0.9485). Esto significa que Gradient Boosting tiene menos falsos positivos, lo cual es importante si el costo de falsos positivos es alto.
- Sensibilidad (Recall): Gradient Boosting también tiene una sensibilidad ligeramente mayor (0.8692) en comparación con Random Forest (0.8598). Esto indica que Gradient Boosting detecta un mayor porcentaje de instancias positivas reales.
- Puntuación F1 (F1 Score): Gradient Boosting tiene una puntuación F1 más alta (0.9163) en comparación con Random Forest (0.9020). La puntuación F1 es una métrica que equilibra la precisión y la sensibilidad, por lo que Gradient Boosting tiene un mejor equilibrio entre estos dos aspectos.
- ROC AUC: Gradient Boosting tiene un ROC AUC ligeramente menor (0.9348) en comparación con Random Forest (0.9379). Sin embargo, la diferencia es mínima y puede considerarse estadísticamente insignificante.
- Pérdida Logarítmica (Log Loss): Gradient Boosting tiene una pérdida logarítmica más baja (0.3167) en comparación con Random Forest (0.3204). Esto indica que Gradient Boosting tiene predicciones de probabilidad más precisas.
- Validación Cruzada (ROC AUC): Gradient Boosting tiene un ROC AUC de validación cruzada ligeramente menor (0.9499 ± 0.0181) en comparación con Random Forest (0.9510 ± 0.0154). Sin embargo, la diferencia es mínima y la variabilidad en Gradient Boosting es ligeramente mayor.
Elección
Dado que Gradient Boosting tiene una mejor precisión, sensibilidad, puntuación F1 y pérdida logarítmica, y la diferencia en el ROC AUC es mínima, recomendaría elegir Gradient Boosting. Este modelo muestra un mejor rendimiento en términos de precisión y sensibilidad, lo cual es crucial si el costo de falsos positivos y falsos negativos es alto. Además, la validación cruzada también muestra que Gradient Boosting tiene un rendimiento consistente, aunque con una variabilidad ligeramente mayor.
En resumen, Gradient Boosting es el modelo más adecuado en este caso debido a su mejor rendimiento en las métricas clave y su capacidad para manejar mejor los errores de falsos positivos y falsos negativos.
Conclusión
Elegir el mejor modelo implica una combinación de evaluación cuantitativa utilizando métricas y evaluación cualitativa basada en el contexto del problema. Al considerar varias métricas y entender sus implicaciones, puedes tomar una decisión con mayor acertividad.