Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Probabilidad y estadística para IA, Unidad 8 — Estadística en evaluación de modelos, 8.3 — Validación de modelos ·

Train / test

Train / test: Validación de modelos

Introducción

En la evaluación de modelos predictivos, es fundamental separar los datos en conjuntos train (conjunto de entrenamiento) y test (conjunto de prueba). Esta práctica no solo asegura que nuestro modelo se ajuste a los datos de entrenamiento sino también que sea capaz de generalizar a nuevos datos que no ha visto antes. Es crucial para evitar el sobreajuste, donde el modelo se vuelve demasiado complejo y empieza a memorizar los detalles del conjunto de entrenamiento en lugar de aprender las características generales.

Explicación principal con ejemplos

Ejemplo conceptual

Imagina que estamos desarrollando un clasificador que identifica si un email es spam o no. Usamos una base de datos completa con etiquetas para entrenar nuestro modelo. Sin embargo, si evaluamos el rendimiento en la misma base de datos usada para el entrenamiento, obtendremos un buen score solo porque ya hemos visto todos los patrones antes.

Para evitar esto, dividimos nuestros datos en dos conjuntos:

  • Set de entrenamiento: Usado para ajustar las características del modelo.
  • Set de prueba: Usado para evaluar el rendimiento del modelo una vez que ha sido optimizado con el conjunto de entrenamiento.

Un ejemplo práctico podría ser el siguiente:

from sklearn.model_selection import train_test_split

# Supongamos que X son los features y Y son las etiquetas
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

En este ejemplo, train_test_split de Scikit-learn nos permite dividir los datos en dos conjuntos, con el 80% para entrenamiento (train) y el 20% para prueba.

Ejemplo práctico

Vamos a evaluar un clasificador de machine learning utilizando el conjunto de datos Iris:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# Cargar los datos
data = load_iris()
X, y = data.data, data.target

# 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)

# Crear un modelo SVM
model = SVC(kernel='linear')

# Entrenar el modelo con los datos de entrenamiento
model.fit(X_train, y_train)

# Evaluar el modelo en el conjunto de prueba
predictions = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, predictions))

En este ejemplo, SVC es un clasificador de máquinas de soporte vectorial. La funcionalidad accuracy_score mide cuántas predicciones son correctas.

Errores típicos / trampas

  1. Sobreajuste en el conjunto de prueba: Si se evalúa con demasiada frecuencia en el mismo conjunto de datos (o se utilizan conjuntos de datos muy pequeños), puede llevar a una estimación sesgada del rendimiento real, lo que significa que el modelo no generaliza bien.
  1. No validar suficientemente: Validar solo una vez en un conjunto de prueba y luego ajustar los hiperparámetros en base a este resultado puede llevar a sobreajuste al conjunto de prueba. Debe existir una separación clara entre entrenamiento, validación (opcional) y prueba.
  1. Usar el mismo conjunto para evaluación y entrenamiento: Si se usa el mismo conjunto de datos para entrenamiento y prueba, es como hacer un examen en casa. Podemos obtener muy buenos resultados porque ya hemos visto todos los problemas antes.

Checklist accionable

  1. Separar claramente los conjuntos de entrenamiento y prueba.
  2. Evitar el reajuste en el conjunto de prueba: No ajustes tu modelo una vez que lo has evaluado con este conjunto.
  3. Usar validación cruzada para ajuste: Si necesitas ajustar hiperparámetros, considera usar validación cruzada.
  4. Utilizar conjuntos de datos suficientemente grandes: Cuanto más grande sea el conjunto de datos, mejor será la evaluación del rendimiento del modelo.
  5. Monitorear y documentar el rendimiento: Mantén registros detallados sobre qué modelos has probado y cuáles fueron tus resultados.

Cierre con "Siguientes pasos"

Siguientes pasos

  • Aplicar validación cruzada: Para una evaluación más precisa del rendimiento del modelo.
  • Analizar características relevantes: Identificar las características más influyentes en el rendimiento del modelo.
  • Optimización de hiperparámetros: Ajustar parámetros adicionales del modelo para mejorar su precisión.

Al seguir estos pasos, podrás desarrollar modelos predictivos más robustos y generalizables.

Contacto

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