Ada banyak posting blog, video YouTube, dll. Tentang ide mengantongi atau meningkatkan pohon. Pemahaman umum saya adalah bahwa kode pseudo untuk masing-masing adalah:
Mengantongi:
- Ambil N sampel acak x% dari sampel dan y% dari fitur
- Paskan model Anda (misalnya, pohon keputusan) pada masing-masing N
- Prediksi dengan setiap N
- Rata-rata prediksi untuk mendapatkan prediksi akhir
Meningkatkan:
- Sesuaikan model Anda (mis. Pohon keputusan) dengan data Anda
- Dapatkan residunya
- Sesuaikan model Anda dengan residu
- Pergi ke 2 untuk putaran meningkatkan N
- Prediksi akhir adalah jumlah tertimbang dari prediksi berurutan.
Saya akan mengambil klarifikasi apa pun untuk pengertian saya di atas, tetapi pertanyaan yang saya maksudkan adalah sebagai berikut:
Baik XGBoost dan LightGBM memiliki params yang memungkinkan untuk mengantongi. Aplikasi ini bukan Mengantongi ATAU Meningkatkan (yang dibicarakan setiap posting blog), tetapi Mengantongi DAN Meningkatkan. Apa kode pseudo untuk di mana dan kapan penggabungan dan peningkatan gabungan terjadi?
Saya berharap itu menjadi "Pohon Boosted Bagged", tetapi tampaknya itu adalah "Pohon Boosted Bagged". Perbedaannya tampak substansial.
Pohon-pohon Boosted yang Dikantongi:
- Ambil N sampel acak x% dari sampel dan y% dari fitur
- Cocokkan pohon-pohon Boosted pada masing-masing sampel N
- Prediksi dengan setiap N
- Rata-rata prediksi untuk mendapatkan prediksi akhir
Ini sepertinya cara terbaik untuk melakukannya. Lagipula, risiko dalam meningkatkan overfitting dan manfaat utama mengantongi adalah mengurangi overfitting; mengantongi banyak model yang dikuatkan sepertinya ide yang bagus.
Namun, dari melihat melalui, misalnya scikit-learn
gradient_boosting.py (yang tidak mengantongi sampel, tetapi bukan pemilihan fitur acak), dan menyatukan beberapa nugget kecil di seluruh tulisan tentang LightGBM dan XGBoost, sepertinya XGBoost dan LightGBM berfungsi sebagai berikut:
Boosted Bagged Trees:
- Sesuaikan pohon keputusan dengan data Anda
- Untuk saya dalam putaran meningkatkan N:
- Dapatkan residunya
- jika saya mod bag_frequency == 0 (yaitu, bag setiap 5 putaran):
- Ambil sampel acak tunggal x% dari sampel dan y% dari fitur; gunakan sampel acak ini untuk maju
- paskan pohon dengan residu
- Prediksi akhir adalah jumlah tertimbang dari prediksi berurutan.
Harap perbaiki pemahaman saya di sini dan isi detailnya. Boosted Bagged Tree (dengan hanya 1 pohon acak per bag_frequency) sepertinya tidak sekuat Bagged Boosted Tree.