Gradient Boosting: GBM dan XGBoost
Boosting dibandingkan bagging, GradientBoostingClassifier, XGBClassifier, dan penghentian dini.
Gradient Boosting: GBM dan XGBoost adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Boosting vs Bagging
Bagging melatih pohon secara paralel dan merata-ratakannya. Boosting melatih pohon secara berurutan; setiap pohon baru memperbaiki kesalahan pohon sebelumnya.
Boosting mengurangi bias dan sering menghasilkan akurasi yang lebih tinggi daripada bagging pada data terstruktur.
Pembelajar Lemah Berurutan
Gradient boosting membangun ansambel pohon dangkal (pembelajar lemah). Setiap pohon menyesuaikan diri dengan residu (gradien fungsi kerugian) yang ditinggalkan ansambel saat ini.
Penambahan banyak koreksi kecil membangun model keseluruhan yang kuat.
GradientBoostingClassifier
Scikit-learn menyediakan GradientBoostingClassifier. Parameter utamanya adalah n_estimators (jumlah pohon), learning_rate (penyusutan), dan max_depth (ukuran pohon).
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=200,
learning_rate=0.1,
max_depth=3,
random_state=0,
)
gbm.fit(Xtr, ytr)
print(gbm.score(Xte, yte))Kompromi Laju Pembelajaran
learning_rate menskalakan kontribusi setiap pohon. Laju pembelajaran yang lebih kecil memerlukan lebih banyak pohon, tetapi biasanya memiliki kemampuan generalisasi yang lebih baik.
Strategi yang umum: tetapkan laju pembelajaran rendah (misalnya 0.05) dan banyak estimator, lalu gunakan penghentian dini.
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=1000,
learning_rate=0.05,
max_depth=3,
)Mengapa max_depth Tetap Kecil
Dalam boosting, setiap pohon adalah pembelajar lemah, jadi max_depth biasanya bernilai 3 hingga 6. Pohon yang dalam akan cepat terlalu menyesuaikan diri dengan residu. Ansambel memperoleh kekuatannya dari banyak pohon dangkal, bukan dari beberapa pohon dalam.
Memperkenalkan XGBoost
XGBoost adalah pustaka gradient boosting yang dioptimalkan: lebih cepat, diberi regularisasi, dan memiliki penanganan bawaan untuk nilai yang hilang. XGBoost merupakan salah satu yang berkinerja terbaik dalam kompetisi pembelajaran mesin pada data berbentuk tabel.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=300,
learning_rate=0.1,
max_depth=4,
random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))Parameter Utama XGBoost
Parameter inti serupa dengan GBM:
n_estimatorsjumlah putaran boostinglearning_ratepenyusutan per putaranmax_depthkedalaman pohonsubsampledancolsample_bytreemenambahkan keacakan untuk regularisasi
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
)Regularisasi dalam XGBoost
XGBoost menambahkan penalti L1 (reg_alpha) dan L2 (reg_lambda), serta gamma (pengurangan minimum fungsi kerugian untuk melakukan pemisahan). Semua ini mengendalikan kompleksitas dan mengurangi penyesuaian berlebihan melebihi kemampuan GBM biasa.
from xgboost import XGBClassifier
model = XGBClassifier(
reg_alpha=0.1,
reg_lambda=1.0,
gamma=0.1,
)Penghentian Dini
early_stopping_rounds menghentikan pelatihan ketika metrik validasi tidak lagi membaik selama N putaran. Fitur ini menemukan jumlah pohon yang tepat secara otomatis dan mencegah penyesuaian berlebihan.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=2000,
learning_rate=0.05,
early_stopping_rounds=50,
eval_metric="logloss",
)
model.fit(Xtr, ytr, eval_set=[(Xte, yte)], verbose=False)
print("Best iteration:", model.best_iteration)Membaca Kepentingan Fitur
XGBoost menyediakan feature_importances_ dan get_booster().get_score() yang lebih lengkap, dengan jenis kepentingan seperti perolehan dan bobot. Perolehan menunjukkan seberapa besar suatu fitur meningkatkan fungsi kerugian.
model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)
booster = model.get_booster()
print(booster.get_score(importance_type="gain"))Kapan Memilih Boosting
Gradient boosting sering mengungguli hutan acak pada data berbentuk tabel jika disetel dengan baik. Konsekuensinya adalah sensitivitas yang lebih tinggi terhadap hiperparameter dan pelatihan berurutan yang lebih lambat. Mulailah dengan nilai bawaan XGBoost, lalu sesuaikan learning_rate, max_depth, dan gunakan penghentian dini.
Pemeriksaan Singkat
Periksa pengetahuan Anda tentang boosting.
Ringkasan
Ringkasan: Boosting melatih pohon secara berurutan, dan setiap pohon memperbaiki kesalahan sebelumnya. Sesuaikan n_estimators, learning_rate (laju rendah + banyak pohon), dan gunakan max_depth kecil. XGBoost menambahkan regularisasi (reg_alpha, reg_lambda, gamma) serta early_stopping_rounds untuk memilih jumlah pohon yang optimal secara otomatis.
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 53
- Pelajaran
- 225
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Gradient Boosting: GBM dan XGBoost” gratis?
Ya — teks lengkap “Gradient Boosting: GBM dan XGBoost” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Gradient Boosting: GBM dan XGBoost”?
Boosting dibandingkan bagging, GradientBoostingClassifier, XGBClassifier, dan penghentian dini. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Gradient Boosting: GBM dan XGBoost” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pohon Keputusan: Teori dan Implementasi
- Random Forest dan Bagging
- Gradient Boosting: GBM dan XGBoost
- LightGBM dan CatBoost