Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

TensorFlow desde cero, Unidad 6 — Evaluación y validación, 6.2 — Validación correcta ·

Train / validation / test

Train / validation / test

Introducción

En la construcción de modelos de Deep Learning, es crucial distinguir claramente entre los conjuntos de datos de entrenamiento (train), validación (validation) y prueba (test). Este enfoque nos permite evaluar con precisión cómo un modelo se desempeñará en datos que nunca ha visto antes. La separación correcta de estos conjuntos de datos es fundamental para evitar el sobreajuste, obtener métricas realistas y garantizar la confiabilidad del modelo. En este artículo, exploraremos por qué esta distinción es importante y cómo implementarla correctamente.

Explicación principal con ejemplos

Los tres conjuntos de datos son esenciales para evaluar el rendimiento de un modelo:

  1. Conjunto de entrenamiento (train): Este conjunto se utiliza para ajustar los parámetros del modelo a través del proceso de aprendizaje.
  1. Conjunto de validación (validation): Se usa durante la etapa de entrenamiento para medir y ajustar el rendimiento del modelo, detectando signos tempranos de sobreajuste o subajuste.
  1. Conjunto de prueba (test): Este conjunto se mantiene completamente aislado hasta que se complete el proceso de entrenamiento, y se utiliza para obtener una estimación final del rendimiento real del modelo en datos desconocidos.

Ejemplo práctico

from sklearn.model_selection import train_test_split
import tensorflow as tf

# Supongamos que tenemos un conjunto de datos X y las etiquetas correspondientes Y
X = ...
Y = ...

# Separamos los datos en conjuntos de entrenamiento (80%) y prueba (20%)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)

# Ahora dividimos el conjunto de entrenamiento en dos partes: entrenamiento (75%) y validación (25%)
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.25, random_state=42)

print(f"Datos de entrenamiento: {len(X_train)}")
print(f"Datos de validación: {len(X_val)}")
print(f"Datos de prueba: {len(X_test)}")

Errores típicos / trampas

  1. Omitir el conjunto de validación: Es común omitir el conjunto de validación, lo que puede llevar a un sobreajuste sin notarlo.
  1. Tamaño insuficiente del conjunto de validación: Un tamaño pequeño puede hacer que la métrica de validación no sea representativa y no refleje correctamente el rendimiento en el conjunto de prueba.
  1. Reutilizar el conjunto de validación durante el entrenamiento: Si los datos de validación se reutilizan para ajustar hiperparámetros o modelos, esto puede dar lugar a un sobreajuste al optimizar específicamente para la validación y no generalizar bien en nuevos datos.

Checklist accionable

  1. Separar claramente los conjuntos de entrenamiento, validación y prueba: Utiliza train_test_split o algún otro método similar para asegurar una separación correcta.
  2. Monitorear las métricas de validación durante el entrenamiento: Asegúrate de seguir las métricas de validación durante la etapa de entrenamiento para detectar signos de sobreajuste.
  3. Usar un tamaño adecuado para el conjunto de validación: Generalmente, se recomienda que el conjunto de validación tenga alrededor del 20% de los datos totales.
  4. Evitar reutilizar el conjunto de validación: Asegúrate de no ajustar hiperparámetros o modelos usando el conjunto de validación.
  5. Evaluar el modelo en el conjunto de prueba finalmente: Solo evalúa y mide el rendimiento del modelo una vez que se haya completado el proceso de entrenamiento.

Cierre con "Siguientes pasos"

Siguientes pasos

  • Conocer la importancia de la separación correcta de conjuntos de datos: Comprender por qué es crucial separar los datos en entrenamiento, validación y prueba.
  • Implementar correctamente las técnicas de regularización: Una vez que se ha aprendido a manejar correctamente el conjunto de validación, puedes proceder a implementar técnicas como dropout o regularización L1/L2 para prevenir el sobreajuste.
  • Aprender más sobre transfer learning: Con un buen entendimiento del uso del conjunto de datos en modelado, puedes avanciar a técnicas avanzadas como transfer learning.

Siguiendo estos pasos y siguiendo las mejores prácticas de separación de conjuntos de datos, podrás construir modelos que no solo se desempeñen bien durante el entrenamiento, sino también en nuevos datos desconocidos.

Contacto

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