Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 7 — Cómo combatir el underfitting, 7.1 — Aumentar capacidad del modelo ·

Más parámetros

Más parámetros: Una herramienta efectiva para combatir underfitting

Introducción

En la carrera constante de construir modelos predictivos capaces y robustos, uno se encuentra con dos desafíos principales: overfitting (aprender demasiado) y underfitting (aprender poco). El underfitting ocurre cuando un modelo es incapaz de capturar las relaciones significativas entre las características y la variable objetivo. Este artículo se enfoca en cómo aumentar el número de parámetros puede ayudar a combatir este problema, proporcionando una estrategia práctica para mejorar la capacidad del modelo.

Explicación principal con ejemplos

Cuando un modelo tiene una capacidad insuficiente, tiende a subestimar las relaciones complejas entre las variables y produce errores generalmente grandes en datos no vistos. Un ejemplo ilustrativo es el uso de un algoritmo de regresión lineal para predecir valores continuos basándose en características altamente no lineales. En este caso, la regresión lineal se verá limitada por su incapacidad para modelar relaciones no lineales y probablemente tendrá un alto error tanto en entrenamiento como en validación.

La solución a esto es aumentar la capacidad del modelo, lo que generalmente implica introducir más parámetros. Esto puede hacerse de varias maneras:

# Ejemplo de aumento de parámetros con regresión lineal simple a una polinómica

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
import matplotlib.pyplot as plt

# Generar datos sintéticos no lineales
np.random.seed(0)
X = np.sort(np.random.rand(100, 1) * 10, axis=0)
y = X ** 2 + np.sin(X) + np.random.randn(*X.shape) * 0.5

# Crear un modelo polinómico de grado 3
model = make_pipeline(PolynomialFeatures(degree=3), LinearRegression())

# Entrenar el modelo
model.fit(X, y)

# Visualizar los resultados
plt.scatter(X, y, label='Datos reales')
plt.plot(X, model.predict(X), color='red', label='Predicción')
plt.legend()
plt.show()

En este ejemplo, transformamos la regresión lineal a una polinómica de grado 3 para capturar mejor las relaciones no lineales en los datos. Nota que el aumento de parámetros (grado del polinomio) puede mejorar significativamente la capacidad del modelo para ajustarse a los datos.

Errores típicos / trampas

  1. Parámetros demasiados: Aumentar excesivamente el número de parámetros puede llevar a overfitting, donde el modelo comienza a aprender ruido y detalles inútiles en lugar de la señal real.
  2. Mala elección del grado polinómico: Si se elige un grado muy alto, el modelo puede ajustarse demasiado al conjunto de entrenamiento, con lo que pierde su capacidad para generalizar a nuevos datos.
  3. Parámetros innecesarios en modelos no lineales: Algunos modelos no lineales tienen muchos parámetros predefinidos (como redes neuronales), y no todos son necesarios para el problema específico.

Checklist accionable

  1. Analiza la capacidad del modelo actual: Evalúa si el modelo tiene los recursos suficientes para capturar las relaciones en los datos.
  2. Experimenta con diferentes grados polinómicos: Para modelos lineales, intenta aumentar gradualmente el grado y observa cómo cambian los errores de entrenamiento y validación.
  3. Mira la curva de aprendizaje: Verifica si existe un punto en el que el error de validación comienza a superar al de entrenamiento, lo cual indica overfitting.
  4. Usa validación cruzada para asegurar generalización: Asegúrate de evaluar el modelo con datos no vistos para evitar engaños.
  5. Implementa regularización: Si observas signos de overfitting, introduce técnicas como L1 o L2 regularización.

Cierre

La capacidad del modelo es clave para combatir underfitting y construir modelos efectivos que generalicen bien a nuevos datos. Al aumentar el número de parámetros y ajustarlos cuidadosamente, se puede mejorar significativamente la capacidad del modelo para capturar relaciones complejas en los datos.

Siguientes pasos:

  • Ejercicios prácticos: Aplica estos conceptos a proyectos reales.
  • Investiga más: Explora cómo diferentes tipos de modelos y regularización pueden afectar la capacidad del modelo.
  • Revisión crítica: Analiza criticamente los resultados para asegurarte de que el modelo no está overfitting.

Contacto

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