5 · Ridge, Lasso y Elastic Net
Reduce los coeficientes para combatir el sobreajuste — Ridge para estabilidad, Lasso para dispersión, Elastic Net para ambos.
La regularización reduce los coeficientes para combatir el sobreajuste — Ridge para estabilidad, Lasso para dispersión, Elastic Net para ambos.
Sin esto:
Sin regularización, los modelos de alto grado y los datasets de alta dimensión memorizan ruido en lugar de aprender señal.
La lección anterior terminó con un problema: los modelos polinómicos de alto grado sobreajustan los datos de entrenamiento. La causa raíz es que los coeficientes son libres de crecer tanto como sea necesario para pasar por cada punto de entrenamiento. La regularización resuelve esto agregando un término de penalización a la pérdida que desincentiva los coeficientes grandes.
Ridge (regularización L2): Loss_ridge = MSE + λ · ||w||²
La penalización L2 reduce todos los pesos suavemente hacia cero — pero ninguno llega exactamente a cero. Ridge es ideal cuando crees que todas las variables llevan alguna señal, pero quieres evitar que una sola variable domine.
Lasso (regularización L1): Loss_lasso = MSE + λ · ||w||₁
La penalización L1 (suma de valores absolutos) lleva algunos pesos a exactamente cero, realizando selección automática de variables. La razón geométrica: la región de restricción L1 es un diamante (en 2D), cuyos vértices están sobre los ejes — el mínimo de la pérdida es probable que caiga en un vértice, zeroing out uno o más coeficientes.
Elastic Net: Loss_en = MSE + λ · [α · ||w||₁ + (1−α) · ||w||²]
Una combinación convexa de L1 y L2. Maneja grupos de variables correlacionadas mejor que Lasso puro — Lasso elige arbitrariamente una de un grupo correlacionado; Elastic Net las mantiene juntas con coeficientes reducidos pero no nulos.
El hiperparámetro λ (llamado alpha en sklearn) controla la intensidad de la regularización:
- λ = 0 → regresión lineal ordinaria (sin penalización).
- λ → ∞ → todos los coeficientes se reducen a cero (subajuste extremo).
El λ correcto se elige mediante validación cruzada — cubierta en el Capítulo 2.
Python (in browser)
Lasso zeroa las variables ruido (índices 5–19) manteniendo las 5 variables señal. Ridge reduce todo pero mantiene los 20 no nulos.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
`RidgeCV` y `LassoCV` realizan validación cruzada internamente para elegir la mejor intensidad de regularización. El atributo `.alpha_` te da al ganador.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Elastic Net con l1_ratio=0.5 produce un híbrido: algunos ceros exactos (de L1) y valores pequeños pero no nulos para el resto (de L2). Ajusta l1_ratio para controlar el balance.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Punto de partida predeterminado: prueba Ridge primero (estable, rápido). Cambia a Lasso si necesitas selección de variables. Usa Elastic Net cuando las variables están correlacionadas y aún quieres dispersión.
¿Qué regularización produce un vector de coeficientes con ceros exactos?
Modelado probabilístico — cubre la interpretación bayesiana: Ridge = prior gaussiana sobre los pesos (estimación MAP), Lasso = prior de Laplace. La intensidad de regularización λ corresponde a la varianza inversa del prior.
- Ridge (L2): agrega λ·||w||² — reduce todos los coeficientes, ninguno a cero. Mejor para estabilidad y variables colineales.
- Lasso (L1): agrega λ·||w||₁ — lleva algunos coeficientes a exactamente cero (selección de variables). Inestable con variables correlacionadas.
- Elastic Net: combina L1 + L2 mediante `l1_ratio`. Mejor cuando quieres dispersión Y manejar grupos de variables correlacionadas con gracia.
- Siempre escala las variables antes de la regularización — la penalización trata todos los pesos por igual independientemente de las unidades originales.
- Regularización L2 en modelos lineales = decaimiento de pesos en redes neuronales. Misma fórmula: loss + λ·||w||².
Todo modelo de ML moderno tiene un control de regularización — L1/L2 en modelos lineales, decaimiento de pesos en PyTorch, max_depth/min_samples en árboles, lambda_l1/lambda_l2 en XGBoost. El principio es universal.
Si lo quitas: No tendrías defensa contra el sobreajuste excepto 'más datos' — que raramente están disponibles.