Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 2 — El compromiso bias–variance, 2.1 — Sesgo (bias) ·

Ejemplos prácticos

Ejemplos prácticos para comprender el sesgo (bias) en machine learning

Introducción

El sesgo (bias) es un concepto fundamental en la construcción de modelos de machine learning. Representa la tendencia sistemática que tiene un modelo a predecir valores incorrectos debido a una simplificación excesiva del problema. Aprender a identificar y manejar el sesgo es crucial para evitar overfitting, donde un modelo se ajusta demasiado al conjunto de entrenamiento y carece de capacidad generalizadora.

Explicación principal con ejemplos

Ejemplo 1: Modelo de regresión lineal simple

Imagina que estás trabajando en un proyecto de predicción del precio de las casas basándote en el número de habitaciones. Un modelo de regresión lineal simple podría ser:

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# Datos ficticios: número de habitaciones vs precio de las casas
num_habitaciones = np.array([2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape(-1, 1)
precio_casas = np.array([250000, 350000, 550000, 750000, 900000, 1200000, 1600000, 2000000, 2500000])

# Separar datos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(num_habitaciones, precio_casas, test_size=0.2, random_state=42)

# Entrenar modelo
model = LinearRegression()
model.fit(X_train, y_train)

# Predicción
y_pred = model.predict(X_test)

# Métrica de evaluación: error cuadrático medio (MSE)
mse = mean_squared_error(y_test, y_pred)
print(f"Error cuadrático medio: {mse}")

En este ejemplo, un modelo de regresión lineal simple puede ser demasiado simplista para capturar las relaciones más complejas entre el número de habitaciones y el precio de las casas. Esto podría llevar a un alto sesgo debido a la falta de capacidad para modelar curvas más complejas.

Ejemplo 2: Modelo de regresión polinómica

Para mejorar la precisión, podrías intentar ajustar un modelo de regresión polinómica:

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline

# Ajustar un modelo polinómico de segundo grado
polynomial_features = PolynomialFeatures(degree=2)
X_poly_train = polynomial_features.fit_transform(X_train)

model_poly = LinearRegression()
model_poly.fit(X_poly_train, y_train)

# Predicción con el modelo polinómico
X_poly_test = polynomial_features.transform(X_test)
y_pred_poly = model_poly.predict(X_poly_test)

# Evaluación del nuevo modelo
mse_poly = mean_squared_error(y_test, y_pred_poly)
print(f"Error cuadrático medio con modelo polinómico: {mse_poly}")

En este caso, si el grado de polinomio es demasiado bajo (como en un simple regresión lineal), el modelo puede tener alto sesgo. Sin embargo, si el grado es muy alto, el modelo puede overfitting y tener alta varianza.

Errores típicos / trampas

  1. Modelo demasiado simplista: Usar modelos con poca capacidad de generalización puede dar lugar a un alto sesgo.
  2. Derecho al test set: Ajustar el modelo en función del rendimiento en el conjunto de prueba sin validar este ajuste adecuadamente puede llevar a una subestimación del sesgo.
  3. Sobreajuste en la validación cruzada: Si se realizan iteraciones en validación cruzada y se permiten ajustes basados en estos resultados, se corre el riesgo de sobreajustar al conjunto de datos de validación.

Checklist accionable

  1. Elije modelos con la capacidad adecuada: Asegúrate de que tu modelo no es demasiado simplista ni demasiado complejo.
  2. Divide los datos correctamente: Usa conjuntos de entrenamiento, validación y prueba para evitar el ajuste al conjunto de test.
  3. Realiza validación cruzada prudentemente: Evita ajustar el modelo en función del rendimiento en las iteraciones de validación cruzada.
  4. Monitorea el rendimiento en diferentes conjuntos de datos: Asegúrate de que tu modelo generaliza bien a nuevos datos no vistos durante el entrenamiento.
  5. Revisa regularmente la complejidad del modelo: Mantén un equilibrio entre complejidad y capacidad de generalización.

Cierre

En resumen, el sesgo es un aspecto crítico en machine learning que afecta directamente a la precisión y la generalización de los modelos. Algunos errores comunes como ajustar al test set o sobreajustar en validación cruzada pueden llevar a soluciones subóptimas.

Siguientes pasos

  • Explorar modelos más avanzados: Aprende sobre regresión polinómica, árboles de decisión y otros modelos no lineales.
  • Aplicar validación cruzada: Mejora la evaluación del rendimiento con técnicas como K-fold cross-validation.
  • Regularización: Utiliza métodos como L1 (Lasso) o L2 (Ridge) para reducir el sesgo.

Siguiendo estos pasos y aprendiendo a manejar el sesgo adecuadamente, podrás construir modelos más robustos y precisos en machine learning.

Contacto

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