Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 12 — Mini-proyecto de diagnóstico, 12.1 — Proyecto guiado ·

Corrección de problemas

Corrección de problemas: Diagnóstico y Solución de Modelos Overfitting y Underfitting

Introducción

La corrección de problemas es una etapa crucial en el desarrollo y entrenamiento de modelos de machine learning. Este proceso implica identificar y abordar los errores que pueden llevar a overfitting o underfitting, asegurando que nuestro modelo sea efectivo tanto durante la fase de entrenamiento como en las predicciones fuera del conjunto de datos de entrenamiento.

El overfitting ocurre cuando un modelo se ajusta demasiado al conjunto de datos de entrenamiento y comienza a memorizar ruido o detalles no generalizables. Esto conduce a una pobre performance en conjuntos de prueba o datos nuevos. Por otro lado, el underfitting se da cuando un modelo es demasiado simple para capturar la relación entre las variables independientes y dependientes, resultando en mala predicción tanto durante el entrenamiento como fuera del mismo.

Explicación principal con ejemplos

Para ilustrar estos conceptos, consideremos una regresión lineal sencilla. Supongamos que estamos trabajando con un conjunto de datos donde las características son la altura y el peso de personas, y nuestro objetivo es predecir el peso basándonos en su altura.

import numpy as np
import matplotlib.pyplot as plt

# Generar datos sintéticos
np.random.seed(0)
altura = np.random.normal(size=100) * 5 + 160
peso = altura * 0.7 + np.random.normal(scale=2, size=100)

plt.scatter(altura, peso)
plt.xlabel('Altura (cm)')
plt.ylabel('Peso (kg)')
plt.title('Relación entre Altura y Peso')
plt.show()

Overfitting

En un modelo de regresión lineal, si ajustamos una línea polinómica de grado alto a los datos, podríamos obtener un overfitting. Esto significa que el modelo se ajusta demasiado bien a los datos de entrenamiento pero pierde su capacidad para generalizar.

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

# Ajustar una línea polinómica de grado 9
model = make_pipeline(PolynomialFeatures(9), LinearRegression())
model.fit(np.array(altura).reshape(-1, 1), peso)

x = np.linspace(min(altura) - 50, max(altura) + 50, 1000)
plt.scatter(altura, peso)
plt.plot(x, model.predict(np.array([x]).T), color='red')
plt.xlabel('Altura (cm)')
plt.ylabel('Peso (kg)')
plt.title('Overfitting: Ajuste Polinómico de Grado Alto')
plt.show()

Underfitting

En contraste, si utilizamos una línea recta para ajustar los datos, podríamos tener underfitting. Este modelo es demasiado simple y no captura la relación real entre altura y peso.

# Ajustar una línea recta (grado 1)
model = make_pipeline(PolynomialFeatures(1), LinearRegression())
model.fit(np.array(altura).reshape(-1, 1), peso)

x = np.linspace(min(altura) - 50, max(altura) + 50, 1000)
plt.scatter(altura, peso)
plt.plot(x, model.predict(np.array([x]).T), color='red')
plt.xlabel('Altura (cm)')
plt.ylabel('Peso (kg)')
plt.title('Underfitting: Ajuste de Línea Recta')
plt.show()

Errores típicos / trampas

  1. Ajustar al conjunto de prueba: La evaluación del modelo en el conjunto de prueba durante la fase de entrenamiento puede llevar a overfitting. Es crucial separar completamente este conjunto para evaluar la capacidad del modelo.
  1. Falta de validación cruzada: No utilizar validación cruzada puede resultar en una mala estimación del error generalizado, lo que lleva a underfitting o overfitting inacertados.
  1. No ajustar hiperparámetros adecuadamente: Valores incorrectos para parámetros como el grado de polinomio o tasa de aprendizaje pueden llevar al overfitting o underfitting.

Checklist accionable

  1. Separar datos correctamente: Asegúrate de separar tus datos en conjuntos de entrenamiento, validación y prueba.
  2. Utilizar validación cruzada: Implementa validación k-fold para obtener una estimación precisa del rendimiento generalizado.
  3. Ajustar hiperparámetros: Probar diferentes valores para parámetros clave como el grado de polinomio o la tasa de aprendizaje en modelos de regresión y clasificación, respectivamente.
  4. Analizar curvas de aprendizaje: Verifica si los errores de entrenamiento y validación están convergiendo a un valor similar, lo cual indica una buena generalización.
  5. Revisar el rendimiento del modelo: Evalúa el rendimiento en conjuntos de prueba para asegurarte de que no hay overfitting o underfitting.

Cierre con "Siguientes pasos"

  • Evaluación y validación avanzada: Explorar técnicas como la validación cruzada estratificada y balanceada.
  • Optimización de modelos: Aprender a utilizar técnicas de optimización como búsqueda en goteo para ajustar mejor hiperparámetros.
  • Entender más sobre overfitting en deep learning: Estudiar cómo el overfitting se manifiesta en redes neuronales y las técnicas modernas para mitigarlo.

¡Eso es todo por hoy! ¿Qué te parecen estos consejos? Comparte tus experiencias o preguntas en los comentarios.

Contacto

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