Apa itu gradient boosting?
Gradient boosting adalah metode ensemble yang membangun model kuat dengan menambahkan banyak model lemah, biasanya decision tree kecil, satu per satu. Setiap tree baru di-fit ke error dari ensemble saat ini, lebih tepatnya ke negative gradient dari loss, dan output-nya dikecilkan dengan learning rate sebelum ditambahkan. Dengan squared-error loss, gradient itu tidak lain adalah residual: target dikurangi prediksi saat ini.
Gradient-boosted tree termasuk model paling akurat untuk data tabular dan sering memenangkan kompetisi machine learning tabular. XGBoost, LightGBM, dan CatBoost adalah implementasi yang umum. Metode ini dipakai untuk model click-through dan ranking di mesin pencari dan periklanan, juga untuk credit scoring, deteksi penipuan, dan peramalan permintaan.
Ide utama
- Gradient boosting menambahkan tree satu per satu, dan setiap tree di-fit ke error ensemble saat ini.
- Setiap tree di-fit ke negative gradient dari loss, yang untuk squared error adalah residual.
- Learning rate menskalakan kontribusi setiap tree agar tidak ada satu tree yang mendominasi.
- Learning rate yang lebih kecil butuh lebih banyak tree, tetapi biasanya generalize lebih baik.
- Boosting menurunkan bias dengan tree dangkal, sedangkan bagging menurunkan variance dengan tree dalam.
- Early stopping pada validation set menentukan jumlah tree.
Ulasan singkat tentang topik ini
Pertanyaan umum
Apa bedanya gradient boosting dan AdaBoost?
AdaBoost mengubah weight titik training setelah setiap putaran, sehingga model berikutnya fokus pada contoh yang salah diklasifikasi. Gradient boosting melatih setiap model baru pada gradient dari loss function. Ternyata AdaBoost adalah kasus khusus dari kerangka ini dengan exponential loss, dan gradient boosting memperluas idenya ke loss apa pun yang differentiable.
Apa yang membedakan XGBoost dari gradient boosting biasa?
XGBoost memakai langkah orde kedua (Newton), menambahkan penalti L1 dan L2 pada nilai leaf, mempelajari arah default untuk nilai yang hilang di setiap split, dan memakai pencarian split aproksimasi yang cepat. Chen dan Guestrin memaparkannya pada 2016. LightGBM mempercepat training lebih jauh dengan split berbasis histogram dan pertumbuhan tree leaf-wise.
Bisakah gradient boosting dipakai untuk klasifikasi?
Bisa. Untuk klasifikasi biner, metode ini melakukan boosting pada log-odds di bawah log loss, dan setiap tree di-fit ke gradient y − p, dengan p sebagai probabilitas prediksi saat ini. Untuk K kelas, biasanya tumbuh K tree per putaran, satu untuk setiap skor kelas, lalu skornya digabungkan dengan softmax.
Apakah gradient boosting perlu feature scaling?
Tidak. Tree-nya membuat split berdasarkan threshold, jadi penskalaan ulang yang monoton pada sebuah feature tidak mengubah split. Metode ini juga kurang peka terhadap outlier pada input dibanding model linear, walaupun outlier pada target tetap berpengaruh di bawah squared-error loss.
Penjelasan terkait
- Decision Tree dan Split · Recursive partitioning, Gini impurity, dan pruning
- Bagging dan Random Forest · Bootstrap aggregation dan ensemble tree yang korelasinya rendah
- Gradient Descent · Optimasi dengan mengikuti kemiringan ke bawah
- Loss Function · Cara network mengukur kesalahannya
- Ensemble Methods dan Stacking · Voting, stacking, dan penggabungan model yang beragam
- Bias-Variance Tradeoff · Kenapa model mengalami underfitting atau overfitting, lewat dekomposisi dasarnya
Referensi
- Friedman (2001), "Greedy Function Approximation: A Gradient Boosting Machine", Annals of Statistics
- Friedman (2002), "Stochastic Gradient Boosting", Computational Statistics & Data Analysis
- Chen & Guestrin (2016), "XGBoost: A Scalable Tree Boosting System"
- James, Witten, Hastie & Tibshirani, "An Introduction to Statistical Learning", chapter 8: Tree-Based Methods
Terakhir diperbarui