Sensibilidad a los datos: Varianza y su impacto en modelos de machine learning
Introducción
En la construcción de modelos de machine learning, una de las preocupaciones más frecuentes es cómo ajustarlos para evitar overfitting o underfitting. El compromiso bias-variance se centra en encontrar el equilibrio óptimo entre sesgo y varianza. En esta unidad, profundizaremos en la variabilidad que introducen los datos en nuestros modelos, conocida como varianza. Comprendiendo cómo afecta a nuestros modelos, podremos mejorar su generalización al conjunto de prueba.
Explicación principal con ejemplos
La varianza es una medida del grado en el cual un modelo se ajustará a los datos de entrenamiento. Un modelo con alta varianza tiende a ajustarse demasiado a las peculiaridades y ruido del conjunto de entrenamiento, lo que puede resultar en sobrecaptación (overfitting). Por otro lado, un modelo con baja varianza puede no capturar suficientemente la relación entre las variables predictivas y el objetivo.
Ejemplo práctico
Vamos a considerar dos modelos: Modelo A es una línea recta ajustada a unos puntos de entrenamiento, mientras que Modelo B es un polinomio de grado 10 ajustado al mismo conjunto de datos. Observemos cómo cada modelo se comporta en diferentes conjuntos de datos.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
# Generamos algunos datos con ruido
np.random.seed(42)
X = np.linspace(-3, 3, 100).reshape(-1, 1)
y = X**3 + np.random.normal(0, 0.5, size=X.shape)
# Dividimos 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)
# Ajustamos un modelo lineal (Modelo A)
from sklearn.linear_model import LinearRegression
model_A = LinearRegression()
model_A.fit(X_train, y_train)
# Ajustamos un modelo polinómico de grado 10 (Modelo B)
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
model_B = make_pipeline(PolynomialFeatures(degree=10), LinearRegression())
model_B.fit(X_train, y_train)
# Visualizamos los modelos ajustados
X_plot = np.linspace(-3, 3, 100).reshape(-1, 1)
y_A = model_A.predict(X_plot)
y_B = model_B.predict(X_plot)
plt.scatter(X_train, y_train, label='Datos de entrenamiento')
plt.plot(X_plot, y_A, label='Modelo A (lineal)')
plt.plot(X_plot, y_B, label='Modelo B (polinómico grado 10)')
plt.legend()
plt.show()
En este ejemplo, Modelo A es un modelo lineal que tiene bajo sesgo pero alta varianza, lo cual puede resultar en underfitting. Por otro lado, Modelo B ajusta a una función polinómica de grado 10 con alta varianza y baja tendencia al overfitting.
Errores típicos / trampas
Al manejar la varianza en modelos de machine learning, es fácil caer en ciertos errores. A continuación, enumeramos algunos de los más comunes:
- Subestimar el ruido: A veces, se puede subestimar el ruido y noise inherente a los datos, lo que lleva a un modelo con alta varianza.
- Sobrestimar la complejidad del modelo: Otro error común es ajustar modelos demasiado complejos sin tener en cuenta el contexto o las características de los datos.
- No validar adecuadamente: Una mala estrategia de validación puede llevar a un subestimado de la varianza y overfitting.
Checklist accionable
Para mejorar la gestión de la varianza en tus modelos, considera implementar las siguientes prácticas:
- Aumenta el conjunto de datos: Un mayor conjunto de datos ayuda a reducir la varianza.
- Implementa regularización: La regularización penaliza ciertas características del modelo para disminuir su complejidad y varianza.
- Elije una función de pérdida adecuada: La elección de la función de pérdida puede afectar directamente a la varianza del modelo.
- Mira las curvas de aprendizaje: Estas gráficas pueden proporcionarte un indicio sobre el nivel de varianza y sesgo de tu modelo.
- Realiza validación cruzada: Esta técnica ayuda a obtener una estimación más precisa del rendimiento en conjunto de prueba.
Cierre: Siguientes pasos
- Ajuste y validación: Continúa ajustando y validando tus modelos para controlar la varianza.
- Exploración de técnicas de regularización: Experimenta con diferentes tipos de regularización como Ridge, Lasso o elastic net.
- Análisis de curvas de aprendizaje: Usa las curvas de aprendizaje para identificar patrones de overfitting y underfitting.
En resumen, la varianza es un aspecto crítico a considerar en el diseño y ajuste de modelos de machine learning. Al comprender cómo afecta a los resultados del modelo, puedes tomar decisiones informadas sobre cuándo reducir o aumentar su complejidad para mejorar la generalización al conjunto de prueba.