Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Scikit-learn desde cero, Unidad 7 — Evaluación de modelos con scikit-learn, 7.2 — Validación cruzada ·

StratifiedKFold

StratifiedKFold: Una técnica esencial para la validación cruzada

Introducción

La validación cruzada es una técnica fundamental para evaluar y comparar modelos de aprendizaje automático. Un aspecto crucial de esta técnica es asegurarse de que cada partición del conjunto de datos, durante las validaciones cruzadas, tenga un equilibrio adecuado entre clases en problemas con etiquetas categóricas imbalanced (desequilibrados). En este artículo, exploraremos la importancia y el uso de StratifiedKFold en scikit-learn, una herramienta poderosa diseñada específicamente para manejar conjuntos de datos con desequilibrio de clases.

Explicación principal

StratifiedKFold es un método de validación cruzada que garantiza que cada partición del conjunto de datos contiene la misma distribución relativa de las etiquetas categóricas. Esto es especialmente importante en problemas clasificación donde algunas clases pueden estar subrepresentadas.

Para entender mejor StratifiedKFold, veamos cómo funciona con un ejemplo:

from sklearn.datasets import load_iris
from sklearn.model_selection import StratifiedKFold, cross_val_score
import numpy as np

# Cargamos el conjunto de datos Iris
data = load_iris()
X = data.data
y = data.target  # Etiquetas son las clases de flor (0, 1, 2)

# Creamos un objeto StratifiedKFold con 5 particiones
skf = StratifiedKFold(n_splits=5)

# Realizamos la validación cruzada con un modelo sencillo (LogisticRegression)
from sklearn.linear_model import LogisticRegression

scores = cross_val_score(LogisticRegression(), X, y, cv=skf)

print("Precisión promedio:", np.mean(scores))

En este ejemplo, StratifiedKFold se asegura de que cada partición tenga una proporción similar de las diferentes clases del conjunto de datos. Esto es crucial para obtener estimaciones fiables del rendimiento del modelo.

Errores típicos / trampas

  1. Ignorar el desequilibrio de clases: Si no se utiliza StratifiedKFold en problemas con desequilibrio de clases, las particiones pueden resultar en sesgos que influyan mal en la evaluación del modelo.
  1. Usar KFold sin tener en cuenta el desbalanceo: A menudo, los desarrolladores confunden KFold y StratifiedKFold. Mientras KFold divide aleatoriamente las muestras en particiones, no garantiza que se mantenga la proporción de clases.
  1. No ajustar adecuadamente el hiperparámetro del modelo: Si bien StratifiedKFold es útil para evaluar modelos, también es importante ajustar los hiperparámetros utilizando una técnica como GridSearchCV, asegurándose de que la evaluación sea lo más precisa posible.

Checklist accionable

  1. Verifique el desbalanceo de clases: Antes de aplicar cualquier método de validación cruzada, verifique si su conjunto de datos tiene clases desequilibradas.
  2. Use StratifiedKFold para clasificaciones desequilibradas: Si sus etiquetas son categóricas y hay un desbalance en la distribución de las clases, utilice StratifiedKFold.
  3. Asegúrese que su validación cruzada sea reproducible: Establezca el parámetro random_state para asegurar consistencia entre ejecuciones.
  4. Compruebe la consistencia de sus resultados: Compare las puntuaciones obtenidas con StratifiedKFold contra otras técnicas como KFold.
  5. Ajuste adecuadamente los hiperparámetros: Utilice técnicas como GridSearchCV o RandomizedSearchCV junto con StratifiedKFold para encontrar los mejores parámetros del modelo.

Siguientes pasos

  • Explore más profundamente la validación cruzada: Investigar otros métodos de validación, como LeaveOneOut, LeavePGroupsOut, y RepeatedStratifiedKFold.
  • Aprenda a manejar el desbalanceo de clases: Estudie técnicas como undersampling, oversampling y SMOTE para mejorar la distribución de las clases en su conjunto de datos.
  • Practique con diferentes conjuntos de datos: Aplicar StratifiedKFold a conjuntos de datos reales para obtener una comprensión más sólida de cómo afecta el desbalanceo de clases.

Aprender a utilizar correctamente técnicas como StratifiedKFold es fundamental para obtener estimaciones confiables del rendimiento de los modelos en problemas clasificación con desequilibrio de clases. Siguiendo las mejores prácticas mencionadas, podrás mejorar significativamente la precisión y fiabilidad de tus evaluaciones.

Contacto

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