XGBoost

Basic

XGBoost | Gradient boosting cepat dan akurat

Dibuat: Pembaruan terakhir: Waktu baca: 2 menit

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 #

ParameterPeranTips
etaLearning rateSemakin kecil semakin stabil, tapi butuh lebih banyak round
max_depthKedalaman pohonLebih dalam lebih ekspresif, tapi rentan overfitting
min_child_weightTotal weight minimum pada childNaikkan jika data berisik
subsample / colsample_bytreeRasio sampling0.6–0.9 sering meningkatkan generalisasi
lambda, alphaRegularisasi L2 / L1Nilai 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_graphviz dan shap.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.cv dengan early_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.