XGBoost (eXtreme Gradient Boosting) adalah implementasi gradient boosting yang menekankan regularisasi dan kecepatan. Fitur seperti penanganan missing value, optimasi pohon, dan pelatihan paralel membuatnya populer di kompetisi maupun produksi.
1. Karakteristik utama #
- Loss ter-regularisasi: L1/L2 menekan overfitting.
- Default direction untuk missing: nilai hilang diarahkan otomatis.
- Paralelisasi: konstruksi pohon dilakukan paralel agar training cepat.
- Parameter lanjutan: kontrol detail pada depth, leaf, dan sampling.
2. Training dengan paket xgboost #
import xgboost as xgb
from sklearn.metrics import mean_absolute_error
dtrain = xgb.DMatrix(X_train, label=y_train)
dvalid = xgb.DMatrix(X_valid, label=y_valid)
params = {
"objective": "reg:squarederror",
"eval_metric": "rmse",
"max_depth": 6,
"eta": 0.05,
"subsample": 0.8,
"colsample_bytree": 0.8,
"lambda": 1.0,
}
evals = [(dtrain, "train"), (dvalid, "valid")]
bst = xgb.train(
params,
dtrain,
num_boost_round=1000,
evals=evals,
early_stopping_rounds=50,
)
pred = bst.predict(xgb.DMatrix(X_test), iteration_range=(0, bst.best_iteration + 1))
print("MAE:", mean_absolute_error(y_test, pred))
early_stopping_rounds menghentikan training saat validasi tidak membaik dan
memilih iterasi terbaik secara otomatis.
3. Hiperparameter utama #
| Parameter | Peran | Tips |
|---|---|---|
eta | Learning rate | Semakin kecil semakin stabil, tapi butuh lebih banyak round |
max_depth | Kedalaman pohon | Lebih dalam lebih ekspresif, tapi rentan overfitting |
min_child_weight | Total weight minimum pada child | Naikkan jika data berisik |
subsample / colsample_bytree | Rasio sampling | 0.6–0.9 sering meningkatkan generalisasi |
lambda, alpha | Regularisasi L2 / L1 | Nilai besar menekan overfitting; alpha untuk sparsity |
4. Pemakaian praktis #
- Data terstruktur: akurat untuk tabel yang sudah diencode.
- Missing value: ditangani otomatis.
- Feature importance: Gain/Weight/Cover tersedia.
- SHAP: dapat digabung dengan
xgboost.to_graphvizdanshap.TreeExplainer.
5. Tips tambahan #
- Turunkan learning rate (mis. 0.1 → 0.02) sambil menambah round untuk akurasi lebih baik.
tree_method:"hist"untuk cepat,"gpu_hist"untuk GPU,"approx"untuk data besar.- Cross-validation: gunakan
xgb.cvdenganearly_stopping_rounds.
Ringkasan #
- XGBoost menggabungkan regularisasi, penanganan missing, dan kecepatan untuk data tabular.
- Tuning
eta,max_depth,min_child_weight, sampling, dan regularisasi harus seimbang. - Pilih XGBoost, LightGBM, atau CatBoost sesuai karakteristik data.