Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 6 — Cómo combatir el overfitting, 6.2 — Otras estrategias ·

Más datos

Más datos: Una estrategia efectiva para combatir el overfitting

Introducción

El overfitting es uno de los desafíos más comunes que enfrentan los desarrolladores de modelos de machine learning. A pesar de la importancia de contar con una base de datos de alta calidad, a menudo se subestima la utilidad del tamaño y la diversidad de los conjuntos de datos en la prevención de este problema. En esta unidad, exploraremos cómo aumentar el número de datos puede mejorar significativamente la capacidad de nuestro modelo para generalizar, y proporcionaremos una guía práctica sobre cómo implementarlo.

Explicación principal

Cuando un modelo se expone a un conjunto de datos demasiado pequeño o poco variado, puede aprender los patrones erróneos del entrenamiento, lo que conduce al overfitting. Aumentar el tamaño y la diversidad del conjunto de datos es una estrategia efectiva para mitigar este problema.

Ejemplo práctico

Supongamos que estamos trabajando en un modelo de clasificación binaria para predecir si un cliente comprará un producto. En nuestro primer intento, utilizamos un pequeño conjunto de datos con 100 muestras y observamos overfitting: el modelo se desempeña muy bien en los datos de entrenamiento pero mal en los datos de prueba.

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import numpy as np

# Generamos un conjunto de datos pequeño para demostración
X, y = make_classification(n_samples=100, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=42)

# Entrenamos un modelo simple
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)

# Evaluamos el modelo en entrenamiento y prueba
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)
print(f"Score en entrenamiento: {train_score}")
print(f"Score en prueba: {test_score}")

Sin embargo, al aumentar el tamaño del conjunto de datos a 1000 muestras, notamos una mejora significativa en la capacidad del modelo para generalizar.

# Generamos un conjunto de datos más grande para demostración
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=42)

# Entrenamos el modelo nuevamente con los nuevos datos
model.fit(X_train, y_train)

# Evaluamos el modelo en entrenamiento y prueba
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)
print(f"Score en entrenamiento: {train_score}")
print(f"Score en prueba: {test_score}")

Errores típicos / trampas

  1. Aumentar el tamaño de los datos sin mejorar su calidad: Aunque más datos son mejor, no se debe aumentar la cantidad si estos nuevos datos no aportan información nueva o relevante al problema.
  1. Sobrecargar el modelo con demasiados datos: Existe un punto en el que la mejora en el rendimiento disminuye y puede incluso llevar a problemas de overfitting debido a la saturación del modelo con demasiada información.
  1. No considerar la variabilidad espacial o temporal: Los conjuntos de datos deben ser representativos de las condiciones reales bajo las cuales se aplicará el modelo. Si los nuevos datos no capturan la misma distribución, puede llevar a overfitting y resultados falsos.

Checklist accionable

  1. Garantiza que los nuevos datos sean relevantes: Asegúrate de que los nuevos conjuntos de datos incluyan características pertinentes al problema.
  1. Valida la representatividad del nuevo conjunto de datos: Revisa que el nuevo conjunto de datos sea una buena muestra de las condiciones bajo las cuales se aplicará el modelo real.
  1. Evalúa sistemáticamente la mejora en rendimiento: Compara las métricas antes y después de aumentar los datos para verificar si hay una mejoría significativa.
  1. Evita sobrecargar el modelo: Si la mejora en el rendimiento disminuye o no es significativa, considera detener el proceso de agregar más datos.
  1. Verifica que la variabilidad esté correctamente representada: Asegúrate de que los nuevos datos capturen las condiciones espaciales y temporales relevantes para evitar overfitting.

Cierre

Siguientes pasos

  • Evalue en detalle el impacto del aumento de datos en su modelo específico: Es importante realizar un análisis cuidadoso para asegurarse de que la estrategia sea efectiva.
  • Explore técnicas adicionales para mejorar la capacidad del modelo: Combinar el aumento de datos con otras estrategias como regularización puede ofrecer mejores resultados.
  • Continúe explorando mejoras en los datos y modelado: Siguiendo este camino, puede lograr un modelo que no sólo se ajusta bien a los datos de entrenamiento sino que también generaliza eficazmente en nuevos conjuntos de datos.

Aumentar el tamaño del conjunto de datos es una herramienta poderosa para combatir el overfitting. Sin embargo, es crucial hacerlo con cuidado y consideración para obtener los mejores resultados posibles.

Contacto

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