Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Aprendizaje supervisado, Unidad 9 — Generalización y robustez, 9.1 — Bias vs variance ·

Ajuste adecuado

Ajuste adecuado: Balanceando Bias y Variance

Introducción

El ajuste adecuado es una de las etapas cruciales en la construcción de modelos de aprendizaje supervisado. En este proceso, buscamos equilibrar dos conceptos fundamentales: bias (sesgo) y variance (variancia). El bias se refiere a la tendencia general del modelo a subestimar o sobreestimar los valores reales, mientras que la variancia mide cómo el modelo puede adaptarse a datos de entrenamiento específicos. Un modelo con alto bias es demasiado simplista para capturar las relaciones en los datos (sobregeneralización), mientras que uno con alta variancia puede ser demasiado complejo y adaptarse al ruido del conjunto de datos (sobreacondicionamiento).

Explicación principal

La relación entre bias, variance e interpolación es crucial para comprender la curva de aprendizaje. Vamos a explorar esto con un ejemplo simple.

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

# Generar datos sintéticos
np.random.seed(42)
X = np.sort(np.random.rand(100, 1))
y = np.sin(2 * np.pi * X) + np.random.randn(100, 1) * 0.15

X_train, X_test, y_train, y_test = train_test_split(X, y)

# Crear una pipeline con polinomios de diferentes grados
polynomial_degrees = [1, 2, 3, 4, 9]
train_errors, test_errors = [], []

for n in polynomial_degrees:
    poly_features = PolynomialFeatures(degree=n)
    linear_regression = LinearRegression()
    pipeline = Pipeline([("polynomial_features", poly_features),
                         ("linear_regression", linear_regression)])
    
    # Entrenar y evaluar el modelo
    pipeline.fit(X_train, y_train)
    y_pred = pipeline.predict(X_test)
    train_errors.append(np.mean((pipeline.predict(X_train) - y_train)**2))
    test_errors.append(np.mean((y_pred - y_test)**2))

# Gráfica de errores
plt.figure(figsize=(10, 6))
plt.plot(polynomial_degrees, train_errors, label="Error de entrenamiento")
plt.plot(polynomial_degrees, test_errors, label="Error de prueba")
plt.xlabel('Grado del polinomio')
plt.ylabel('Error cuadrático medio (MSE)')
plt.title('Curva de aprendizaje: Bias y Variance')
plt.legend()
plt.show()

En el gráfico anterior, vemos que la curva de entrenamiento baja con un aumento en el grado del polinomio. Esto sugiere una disminución del bias (subajuste). Sin embargo, la curva de prueba empieza a aumentar también, indicando un aumento de la variancia (sobreajuste) cuando se incrementa el grado.

Errores típicos / trampas

  1. Subajuste con modelos lineales: Un modelo lineal puede resultar en subajuste si los datos no siguen una relación lineal, lo que se manifiesta como un alto bias.
  2. Sobreajuste con modelos altamente complejos: Modelos muy complejos pueden adaptarse a ruido y detalles específicos del conjunto de entrenamiento, resultando en alta variancia.
  3. Convergencia prematura: Algunos algoritmos convergen rápidamente a soluciones que podrían no ser óptimas, lo que puede llevar a un subajuste.

Checklist accionable

  1. Explorar los datos: Analiza la distribución y las relaciones en tus datos para identificar el tipo de modelo más adecuado.
  2. Validación cruzada: Utiliza técnicas como validación cruzada para evaluar consistentemente el rendimiento del modelo en conjuntos diferentes de datos.
  3. Visualización de los datos: Gráficos de dispersión y de aprendizaje pueden ayudar a identificar subajuste o sobreajuste.
  4. Tune parámetros: Experimenta con diferentes hiperparámetros para equilibrar bias y variancia, especialmente en modelos no lineales.
  5. Construir en pasos: Comienza con modelos simples y progresivamente aumenta la complejidad hasta que se observe un punto de inflexión.

Cierre: Siguientes Pasos

  1. Aplica técnicas de regularización: Técnicas como Lasso o Ridge pueden ayudar a reducir el overfitting.
  2. Utiliza ensembles: Modelos basados en ensembles, como Random Forest y Gradient Boosting, son buenos a la hora de equilibrar bias y variancia.
  3. Monitoreo del modelo en producción: Supervisa regularmente el desempeño del modelo después de implementarlo para detectar cualquier drift de datos.

Ajuste adecuado es crucial para construir modelos robustos que funcionen bien tanto en entrenamiento como en prueba, y eventualmente, en la producción. La comprensión y el manejo adecuados de bias y variancia pueden mejorar significativamente la calidad del modelo y su rendimiento real en aplicaciones del mundo real.

Contacto

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