Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Clasificación de texto, Unidad 7 — Entrenamiento y ajuste, 7.1 — División de datos ·

Train / validation / test

Train / validation / test

Introducción

La división de datos en conjuntos de entrenamiento, validación y prueba es fundamental para garantizar que nuestro modelo de clasificación de texto funcione correctamente tanto en entornos de producción como durante su desarrollo. Cada conjunto desempeña un papel crucial: el conjunto de entrenamiento se utiliza para enseñar al modelo a reconocer patrones, el conjunto de validación se usa para ajustar y optimizar los hiperparámetros del modelo, y el conjunto de prueba se emplea para evaluar la capacidad generalizadora del modelo. Una mala división puede llevar a modelos que son demasiado optimizados (overfitting) o demasiado generalizados (underfitting), lo cual afectará negativamente su rendimiento en nuevos datos.

Explicación principal con ejemplos

Concepto básico

La división de datos en conjuntos de entrenamiento, validación y prueba sigue el patrón 80/15/5. Esto significa que del total de los datos, 80% se usarán para entrenar (training), 15% para validar (validation) y 5% para probar (test). Este esquema permite una evaluación realista del rendimiento del modelo en un conjunto de datos no visto durante el proceso de ajuste.

from sklearn.model_selection import train_test_split

# Supongamos que `X` son los datos de entrada y `y` son las etiquetas.
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.2, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

print(f"Training set size: {len(X_train)}")
print(f"Validation set size: {len(X_val)}")
print(f"Test set size: {len(X_test)}")

Ejemplo práctico

Imaginemos que estamos trabajando en un proyecto de clasificación de correos electrónicos para separar spam del no-spam. Primero, dividimos nuestros datos en conjuntos de entrenamiento y validación. Luego, ajustamos diferentes modelos a los datos de entrenamiento y evaluamos su rendimiento en el conjunto de validación.

from sklearn.linear_model import LogisticRegression

# Definir modelo
model = LogisticRegression()

# Entrenar modelo con conjunto de entrenamiento
model.fit(X_train, y_train)

# Evaluar modelo en conjunto de validación
accuracy_val = model.score(X_val, y_val)
print(f"Accuracy on validation set: {accuracy_val}")

Errores típicos / trampas

  1. División de datos inadecuada: No dividir los datos de manera aleatoria puede resultar en sesgos en los conjuntos de entrenamiento y prueba, lo que afecta la capacidad del modelo para generalizar.
  2. Mala selección de tamaño de validación: Un tamaño de conjunto de validación demasiado pequeño puede llevar a una evaluación subjetiva y variada del rendimiento del modelo, mientras que un tamaño excesivamente grande puede reducir el número de muestras disponibles para entrenar.
  3. Falta de validación cruzada: No utilizar validación cruzada (cross-validation) para ajustar hiperparámetros puede llevar a una suboptimización de los modelos.

Checklist accionable

  1. Verifica la división aleatoria: Asegúrate de que los datos se dividen correctamente utilizando métodos aleatorios.
  2. Ajusta el tamaño del conjunto de validación: Experimenta con diferentes proporciones para encontrar un equilibrio entre precisión y capacidad generalizadora.
  3. Implementa validación cruzada: Usa la validación cruzada para ajustar hiperparámetros y evaluar consistentemente el rendimiento del modelo.
  4. Mantén la consistencia en la división: Asegúrate de que todos los conjuntos usan la misma semilla para el generador de números aleatorios.
  5. Evalúa regularmente el rendimiento: Realiza evaluaciones periódicas utilizando el conjunto de prueba para monitorear el rendimiento del modelo.

Cierre con "Siguientes pasos"

  1. Modelos avanzados: Una vez que hayas optimizado los conjuntos de datos y ajustado hiperparámetros, puede ser útil explorar modelos más avanzados como redes neuronales o transformers.
  2. Integración en sistemas: Trabaja en la integración del modelo en sistemas existentes para evaluar su rendimiento en entornos reales.
  3. Monitoreo y mantenimiento: Establece un sistema de monitoreo para asegurarte de que el modelo sigue funcionando correctamente con los datos nuevos.

Siguiendo estos pasos, podrás desarrollar modelos de clasificación de texto más robustos y generalizables, preparados para enfrentarse a nuevas situaciones en entornos reales.

Contacto

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