Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 2 — El compromiso bias–variance, 2.2 — Varianza ·

Ejemplos prácticos

Ejemplos prácticos de varianza en modelos de machine learning

Introducción

La varianza en modelos de machine learning se refiere a la capacidad del modelo para ajustarse a los ruidos y variaciones específicas del conjunto de datos de entrenamiento. Un alto nivel de varianza indica que el modelo es demasiado complejo y ajusta excesivamente al ruido presente en los datos, lo cual puede llevar a un overfitting. Entender cómo manejar la varianza es crucial para construir modelos robustos y generalizables.

Explicación principal con ejemplos

Supongamos que estamos desarrollando un modelo de regresión lineal para predecir el precio de las casas en una ciudad. Nos enfrentamos a dos conjuntos de datos: uno contiene características relevantes como el tamaño del terreno, número de habitaciones y ubicación, mientras que el otro incluye ruido estadístico y variables irrelevantes.

Caso ideal

Imaginemos un conjunto de datos ideal (Figura 1) donde las casas están distribuidas en un patrón lineal. Un modelo simple, como una recta de regresión lineal, puede ajustarse perfectamente a este conjunto de datos sin mucho ruido.

!Conjunto de datos ideal

Caso con varianza alta (overfitting)

En el siguiente conjunto de datos (Figura 2), hay muchas variables irrelevantes y algunas observaciones son bastante aleatorias. Un modelo complejo, como un polinomio de grado alto, podría ajustarse a estos datos perfectamente pero tendría poca generalización.

!Conjunto de datos con alta varianza

Caso con varianza baja (underfitting)

Por otro lado, en el caso de un conjunto de datos con alta dimensionalidad y poca variación relevante, un modelo muy simple podría no capturar la señal real (Figura 3). Esto resulta en un underfitting.

!Conjunto de datos con bajo varianza

Ejemplo de código

A continuación, se muestra un ejemplo de cómo podrían ser los errores de entrenamiento y validación para estos casos:

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

# Generar datos sintéticos
np.random.seed(0)
X = np.random.rand(100, 1) * 2 - 1
y = X + (0.3 * (np.random.randn(100, 1)))

# Dividir los datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear un modelo de regresión lineal simple
model_simple = LinearRegression()
model_simple.fit(X_train, y_train)
y_pred_simple = model_simple.predict(X_test)

# Mostrar los errores de entrenamiento y validación para el modelo simple
train_error_simple = mean_squared_error(y_train, model_simple.predict(X_train))
test_error_simple = mean_squared_error(y_test, y_pred_simple)

print(f"Errores del modelo simple: Entrenamiento: {train_error_simple}, Prueba: {test_error_simple}")

# Crear un modelo de regresión polinomial de grado 10
model_complex = LinearRegression()
model_complex.fit(X_train**np.arange(2, 12), y_train)
y_pred_complex = model_complex.predict(X_test**np.arange(2, 12))

# Mostrar los errores de entrenamiento y validación para el modelo complejo
train_error_complex = mean_squared_error(y_train, model_complex.predict(X_train**np.arange(2, 12)))
test_error_complex = mean_squared_error(y_test, y_pred_complex)

print(f"Errores del modelo complejo: Entrenamiento: {train_error_complex}, Prueba: {test_error_complex}")

Errores típicos / trampas

  1. Overfitting a los ruidos: Modelar las variaciones en el conjunto de entrenamiento que no son relevantes, resultando en un modelo con alta varianza.
  2. Subestimación del underfitting: Ignorar modelos simples y suboptimizarlos, lo cual puede llevar a una falta de ajuste del modelo a la señal real.
  3. Mala selección de hiperparámetros: El uso incorrecto o inadecuado de hiperparámetros puede aumentar la varianza del modelo.

Checklist accionable

  1. Validación cruzada: Verifica la consistencia del rendimiento en varios subconjuntos de datos.
  2. Curvas de aprendizaje: Analiza cómo el error se comporta con más datos y parámetros.
  3. Regularización: Aplica técnicas como Ridge o Lasso para penalizar la complejidad excesiva.
  4. Muestra de datos: Aumenta la cantidad y calidad del conjunto de entrenamiento si es posible.
  5. Simplificación del modelo: Reduce la complejidad del modelo, especialmente si se ajusta demasiado al ruido.

Cierre con "Siguientes pasos"

  1. Explorar más modelos lineales: Analiza cómo diferentes tipos de regresión afectan la varianza.
  2. Implementar regularización: Prueba técnicas como Dropout o early stopping para mejorar el rendimiento.
  3. Evaluar alternativas no lineales: Explora modelos no lineales que puedan capturar mejor las relaciones en los datos.

Siguiendo estas pautas, podrás construir modelos de machine learning más robustos y generalizables, minimizando la varianza y evitando el overfitting.

Contacto

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