Regularización
La regularización es una técnica clave para evitar el sobreajuste (overfitting). Cuando un modelo aprende demasiado los datos de entrenamiento, pierde capacidad de generalización. La regularización controla la complejidad del modelo y mejora su rendimiento en datos nuevos.
Tabla de contenidos
- Qué es la regularización
- Overfitting vs underfitting
- Regularización L1 (Lasso)
- Regularización L2 (Ridge)
- Elastic Net
- Regularización en Scikit‑Learn
- Ejercicios
- Mini‑proyecto
1. Qué es la regularización
La regularización añade una penalización a los parámetros del modelo para evitar que crezcan demasiado y provoquen sobreajuste.
# Concepto
modelo_simple → generaliza mejor
modelo_complejo → riesgo de overfitting
2. Overfitting vs underfitting
- Overfitting: el modelo memoriza los datos
- Underfitting: el modelo no aprende lo suficiente
# Señales de overfitting
accuracy_train = 0.98
accuracy_test = 0.72
3. Regularización L1 (Lasso)
L1 reduce algunos coeficientes a cero, lo que también sirve como selección de características.
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.1)
model.fit(X_train, y_train)
4. Regularización L2 (Ridge)
L2 reduce los coeficientes pero no los lleva a cero. Es la regularización más común.
from sklearn.linear_model import Ridge
model = Ridge(alpha=1.0)
model.fit(X_train, y_train)
5. Elastic Net
Elastic Net combina L1 y L2, equilibrando selección de características y estabilidad.
from sklearn.linear_model import ElasticNet
model = ElasticNet(alpha=0.1, l1_ratio=0.5)
model.fit(X_train, y_train)
6. Regularización en Scikit‑Learn
Muchos modelos incluyen regularización por defecto, como la regresión logística.
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(C=0.5) # menor C = más regularización
model.fit(X_train, y_train)
C controla la fuerza de la regularización (inverso de alpha).
7. Ejercicios
- Entrena un modelo Ridge.
- Entrena un modelo Lasso.
- Entrena un modelo Elastic Net.
- Explica la diferencia entre L1 y L2.
- Indica un caso real donde usarías Lasso.
# pista ridge
Ridge(alpha=1.0)
# pista lasso
Lasso(alpha=0.1)
8. Mini‑proyecto: Regularización completa
Toma un dataset real y realiza:
- Entrenamiento con L1
- Entrenamiento con L2
- Entrenamiento con Elastic Net
- Comparación de coeficientes
- Gráfica de coeficientes