Bagging (Bootstrap Aggregating) entrena varios modelos con muestras bootstrap y promedia o vota sus predicciones. Con arboles de decision, deriva en Random Forest.
1. Procedimiento #
- Generar varias muestras bootstrap del conjunto de entrenamiento
- Entrenar el mismo modelo en cada muestra
- Promediar (regresion) o votar (clasificacion)
Bagging reduce principalmente la varianza y mejora la estabilidad.
2. Ejemplo en Python #
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor
X, y = fetch_california_housing(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
base = DecisionTreeRegressor(max_depth=None, random_state=0)
bagging = BaggingRegressor(
estimator=base,
n_estimators=100,
max_samples=0.8,
max_features=0.8,
bootstrap=True,
random_state=0,
)
bagging.fit(X_train, y_train)
pred = bagging.predict(X_test)
print("RMSE:", mean_squared_error(y_test, pred, squared=False))
print("OOB score:", bagging.oob_score_)
3. Hiperparametros #
n_estimators: Numero de modelos. Mas modelos dan mayor estabilidad pero cuestan mas.max_samples,max_features: Fraccion de datos y caracteristicas por modelo.bootstrap: Si se muestrea con reemplazo;bootstrap_featureshace lo mismo con features.oob_score: Estimacion de generalizacion con muestras fuera de la bolsa.
4. Ventajas y desventajas #
| Ventajas | Desventajas |
|---|---|
| Facil de implementar y paralelizar | Requiere almacenar muchos modelos |
| Reduce mucho la varianza | No reduce el sesgo; el modelo base debe ser razonable |
| OOB evita un conjunto de validacion extra | Menos interpretable que un arbol unico |
5. Resumen #
- Bagging estabiliza al promediar modelos entrenados con remuestreo.
- Arboles de decision + bagging = Random Forest.
- Funciona bien cuando se puede paralelizar el entrenamiento.