Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Evaluación y validación de modelos, Unidad 7 — Overfitting y underfitting, 7.2 — Cómo actuar ·

Regularización

Regularización

Introducción

La regularización es una técnica crítica para prevenir el overfitting, un problema común en modelos de aprendizaje automático donde los modelos se vuelven demasiado complejos y empiezan a capturar ruido y detalles poco relevantes del conjunto de entrenamiento. El overfitting puede resultar en malo rendimiento en datos no vistos, lo que es especialmente problemático en aplicaciones reales. La regularización ayuda a mantener un equilibrio entre el ajuste al dato (capacidad para modelar los datos) y la generalización (capacidad de predecir bien nuevos datos). En esta unidad, exploraremos cómo implementar técnicas de regularización efectivamente.

Explicación principal con ejemplos

¿Qué es la regularización?

La regularización implica penalizar las soluciones complejas en los modelos para evitar que se ajusten demasiado a los datos de entrenamiento. Esto se logra añadiendo un término adicional al costo (o error) del modelo, lo que hace más probable que el modelo tenga parámetros menores. Hay varios tipos de regularización comunes:

  • L2 Regularización: Penaliza la suma cuadrática de los parámetros.
  • L1 Regularización: Penaliza la suma absoluta de los parámetros.

Ejemplo con código

Vamos a ilustrar esto con un ejemplo en Python utilizando el modelo de regresión lineal. Usaremos Scikit-Learn para demostrar cómo se aplica L2 regularización (también conocida como Ridge Regression).

from sklearn.linear_model import Ridge
import numpy as np
import matplotlib.pyplot as plt

# Datos de ejemplo
X = np.random.randn(100, 1)
y = X + np.random.randn(100) * 2.5

# Crear un modelo de regresión lineal con L2 regularización (Ridge Regression)
ridge_reg = Ridge(alpha=1.0)

# Ajustar el modelo
ridge_reg.fit(X, y)

# Predecir valores
y_pred = ridge_reg.predict(X)

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

print("Coeficientes del modelo:", ridge_reg.coef_)

En este ejemplo, alpha es la penalización L2 que se aplica a los coeficientes del modelo. Un valor de alpha alto hará que los coeficientes sean más pequeños, disminuyendo así el overfitting.

Errores típicos / trampas

  1. No considerar la regularización: Ignorar la regularización puede llevar a modelos complejos y poco generalizables.
  2. Valor de alpha inadecuado: La elección del valor de alpha es crucial. Un valor demasiado alto puede resultar en underfitting, mientras que un valor demasiado bajo puede permitir overfitting. Generalmente se recomienda ajustarlo a través de la validación cruzada.
  3. No evaluar el rendimiento: No evaluar el rendimiento del modelo después de aplicar regularización puede llevar a decisiones erróneas sobre si es necesario más ajuste o no.

Checklist accionable

  • Asegúrate de entender el concepto de overfitting y cómo la regularización se utiliza para prevenirlo.
  • Utiliza L2 (Ridge) y/o L1 (Lasso) regularización según sea necesario. Experimenta con diferentes valores de alpha.
  • Ajusta los parámetros usando validación cruzada.
  • Evalúa rigurosamente el rendimiento del modelo en conjuntos de validación y prueba.

Cierre: Siguientes pasos

  • Aprende a ajustar modelos de regresión con regularización. Practica ajustando diferentes valores de alpha para ver cómo afecta al modelo.
  • Entiende las diferencias entre L1 (Lasso) y L2 (Ridge). Cada una tiene sus propias características y es útil en contextos diferentes.
  • Evaluación continua: Continúa monitoreando el rendimiento del modelo después de su implementación en producción para asegurarte de que sigue generalizando bien.

Con estos pasos, podrás aplicar regularización efectivamente a tus modelos de machine learning, mejorando significativamente su capacidad para generalizar y prevenir overfitting.

Contacto

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