Bagging (Bootstrap Aggregating) melatih banyak model pada sampel bootstrap lalu merata-ratakan atau melakukan voting pada prediksi. Jika dipakai dengan decision tree, hasilnya berkembang menjadi Random Forest.
1. Langkah kerja #
- Membuat beberapa sampel bootstrap dari data latih
- Melatih model yang sama pada setiap sampel
- Mengambil rata-rata (regresi) atau voting (klasifikasi)
Bagging terutama menurunkan varians sehingga model lebih stabil.
2. Contoh 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. Hiperparameter #
n_estimators: Jumlah model. Lebih banyak biasanya lebih stabil, namun lebih mahal.max_samples,max_features: Proporsi sampel/fitur per model.bootstrap: Sampling dengan pengembalian;bootstrap_featuresuntuk fitur.oob_score: Estimasi generalisasi dari sampel out-of-bag.
4. Kelebihan dan kekurangan #
| Kelebihan | Kekurangan |
|---|---|
| Mudah diimplementasikan dan bisa diparalelkan | Menyimpan banyak model memakan memori |
| Varians berkurang signifikan | Bias tidak berkurang; model dasar harus cukup baik |
| OOB menghemat set validasi tambahan | Interpretasi lebih sulit daripada satu pohon |
5. Ringkasan #
- Bagging menstabilkan model dengan resampling dan averaging.
- Decision tree + bagging = Random Forest.
- Efektif ketika proses training dapat diparalelkan.