La regularización en modelos de Machine Learning es una técnica esencial para mejorar la capacidad de generalización de un modelo y evitar que este sobreajuste (overfitting) los datos de entrenamiento.
🧠 ¿Qué es Regularización?
La regularización consiste en agregar una penalización al error del modelo (a la función de pérdida) para evitar que los coeficientes/parametros crezcan demasiado, lo cual podría llevar a un modelo muy ajustado a los datos de entrenamiento pero con mal desempeño en datos nuevos.
🔍 ¿Por qué ocurre el sobreajuste?
- El modelo aprende ruido o variaciones irrelevantes del dataset.
- Tiene demasiados parámetros o alta complejidad.
- Insuficiente cantidad de datos o sin limpieza adecuada.
📦 Tipos de Regularización más comunes
1. L1 – Lasso (Least Absolute Shrinkage and Selection Operator)
- Agrega la suma de los valores absolutos de los coeficientes.
- Favorece la selección de características (algunos coeficientes se vuelven 0).
Función de pérdida:
LossL1=Error+λ∑∣wi∣\text{Loss}_{L1} = \text{Error} + \lambda \sum |w_i|
2. L2 – Ridge
- Agrega la suma de los cuadrados de los coeficientes.
- Reduce el impacto de variables sin eliminarlas.
- Mantiene todos los coeficientes pequeños.
Función de pérdida:
LossL2=Error+λ∑wi2\text{Loss}_{L2} = \text{Error} + \lambda \sum w_i^2
3. Elastic Net = combinación de L1 + L2
- Utiliza ambos tipos de penalización.
- Útil cuando hay muchas variables correlacionadas.
⚙️ ¿Dónde se usa la regularización?
- Regresión lineal (
Ridge, Lasso)
- Regresión logística
- Redes neuronales (técnicas como Dropout también son formas de regularización)
- SVM (el parámetro
C controla la regularización)
🧪 Ejemplo en Scikit-learn: Regresión Ridge
from sklearn.linear_model import Ridge
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
ridge = Ridge(alpha=1.0) # alpha es lambda (parámetro de regularización)
ridge.fit(X_train, y_train)
y_pred = ridge.predict(X_test)
print("MSE:", mean_squared_error(y_test, y_pred))
Nota: Si alpha=0, no hay regularización y el modelo se comporta como una regresión lineal estándar.
📌 ¿Qué controla la fuerza de la regularización?
El hiperparámetro λ (lambda) o alpha en scikit-learn.
- Un valor alto de
lambda = más regularización (modelo más simple).
- Un valor bajo = menos regularización (modelo más complejo).
✅ Beneficios de Regularizar
- Reduce el overfitting.
- Mejora la estabilidad del modelo.
- Hace que el modelo sea más interpretables (en el caso de L1).
¿Quieres...?
- ¿Comparar visualmente L1 y L2 en regresión?
- ¿Hacer validación cruzada para seleccionar el mejor
alpha?
- ¿Aplicar regularización en clasificación con regresión logística?