Lensa ML

Bagging dan Random Forest

Langkah 1 dari 6: Bootstrap Sampling

Mengambil sampel dengan pengembalian

Seed sampel bootstrap1
Dataset Asli1234567891011121314151617181920ambil sampel dengan pengembalianSampel Bootstrap14317315111781667422092015181212Sampel unikDuplikat (terambil 2+ kali)
Ukuran sampel
20
Unik
15
Duplikat
5
% terpakai
75%

Sampel ini mencakup sebagian besar data asli. Rata-rata, sampel bootstrap berisi sekitar 63,2% titik unik, dan sisa pengambilannya berupa duplikat.

Geser seed sampel bootstrap dari 1 ke 20 untuk mengambil sampel baru dari 20 titik. Setiap pengambilan memilih satu titik tertentu dengan probabilitas 1/n, jadi peluang titik itu tidak pernah terpilih dalam n kali pengambilan adalah (1 − 1/n)^n, yang mendekati 1/e ≈ 0.368 saat n membesar. Dari sinilah angka cakupan 63,2% berasal. Untuk n = 20, cakupan yang diharapkan sekitar 64%. Bradley Efron memperkenalkan bootstrap pada 1979 sebagai cara memperkirakan ketidakpastian sebuah statistik dengan melakukan resampling pada data itu sendiri.

Langkah 2 dari 6: Bagging

Banyak tree, satu keputusan

Jumlah tree5
Prediksi Tiap Tree0T11T21T31T41T5Suara EnsembleKelas 1suara: 1 untuk kelas 0, 4 untuk kelas 1
Tree
5
Akurasi rata-rata
68.4%
Akurasi ensemble
77.7%
Peningkatan
+9.3%

Bagging melatih 5 tree pada sampel bootstrap yang berbeda, lalu menggabungkan suaranya. Ensemble lebih stabil daripada tree mana pun secara tunggal.

Geser jumlah tree dari 1 ke 20 dan perhatikan hitungan suaranya. Leo Breiman mengusulkan bagging pada 1996. Metode ini paling membantu model yang tidak stabil, yaitu model yang prediksinya banyak berubah ketika data training berubah, seperti decision tree yang dalam. Model yang stabil seperti regresi linear hampir tidak mendapat manfaat, karena setiap salinan bootstrap menghasilkan fit yang nyaris sama. Akurasi tree dan ensemble di layar ini disimulasikan untuk menunjukkan trennya, bukan hasil pengukuran. Setiap tree dilatih secara independen, jadi bagging bisa berjalan paralel di banyak core CPU tanpa koordinasi tambahan.

Langkah 3 dari 6: Subset Feature Acak

Menurunkan korelasi antar-tree

Feature maks. per split3
Kandidat feature di root split setiap treeTinggiBeratUsiaPendapatanSkorTree 1Tree 2Tree 3Tree 4Overlap feature antar-tree0.56Keragaman0.44Subset baru diambil di setiap split. Kartu akurasi hanya ilustrasi.
Feature maks.
3
Overlap
0.56
Akurasi ensemble
87.7%
Keragaman
0.44

Memakai 3 dari 5 feature menyeimbangkan kualitas tiap tree dengan keragaman. Random forest biasanya berada di rentang tengah ini.

Geser feature maksimum per split dari 1 ke 5. Grid ini hanya menampilkan subset yang diambil setiap tree untuk root split-nya. Random forest mengambil subset baru di setiap split, jadi satu tree tetap bisa memakai semua feature di suatu tempat, dan kartu akurasinya hanya ilustrasi, bukan hasil pengukuran. Tanpa batasan ini, satu feature yang kuat akan memenangkan split teratas di hampir setiap tree, dan semua tree akan membuat kesalahan yang mirip. Default yang umum, misalnya di package randomForest milik R, adalah √p feature per split untuk klasifikasi dan p/3 untuk regresi, dengan p sebagai jumlah total feature. Memakai semua p sama dengan bagging biasa.

Langkah 4 dari 6: Menurunkan Variance

Kenapa ensemble unggul

Jumlah tree5
Prediksi pada garis bilangannilai sebenarnyaensemble = 52.6Variance individu: 134.0Variance ensemble: 28.7Variance Ensemble vs Jumlah Treejumlah treeVariance0346910313711020304050
Tree
5
Variance individu
134.0
Variance ensemble
28.7
Penurunan ~1/N
1/5

Merata-ratakan 5 tree menurunkan variance cukup banyak. Setiap tree tambahan menghaluskan prediksi sedikit lagi.

Geser jumlah tree dari 1 ke 50 dan ikuti kurva variance ensemble. Untuk B prediksi yang masing-masing punya variance σ² dan korelasi berpasangan ρ, variance rata-ratanya adalah ρσ² + (1 − ρ)σ²/B. Suku kedua hilang saat B membesar, tetapi suku pertama tidak, sehingga korelasi antar-tree menjadi batas bawah yang tidak bisa dihilangkan dengan menambah tree. Rumus ini menjelaskan kedua sisi random forest: perataan mengecilkan suku kedua, dan subset feature acak menurunkan ρ. Prediksi dalam demo ini independen, jadi aturan 1/N berlaku.

Langkah 5 dari 6: Out-of-Bag Error

Validasi gratis

Jumlah tree10
Matriks Trainingbaris = titik data, kolom = treeT1T2T3T4T5T6T7T8T9T10x1x2x3x4x5x6x7x8x9x10In-bag (training)OOB (validasi gratis)
Tree
10
OOB error
30.0%
Tingkat OOB
33.0%
Perkiraan OOB
~37%

Dengan 10 tree, sebagian besar titik punya beberapa prediksi OOB, sehingga estimasi error bisa diandalkan tanpa test set terpisah.

Geser jumlah tree dari 5 ke 30 dan telusuri setiap baris matriks untuk menemukan sel out-of-bag-nya. Untuk menilai satu titik, forest hanya memakai tree yang tidak dilatih dengan titik itu, kira-kira sepertiga dari semuanya, lalu membandingkan suaranya dengan label yang benar. Dirata-ratakan untuk semua titik, hasilnya adalah OOB error, yang biasanya dekat dengan error pada held-out test set. Dengan begitu, data tidak perlu disisihkan, dan ini paling terasa pada dataset kecil. Di scikit-learn, fitur ini diaktifkan dengan oob_score=True. Prediksi OOB di sini disimulasikan.

Langkah 6 dari 6: Feature Importance

Feature mana yang berpengaruh?

Jumlah tree10
Feature ImportancePendapatan39.4%Usia23.5%Pendidikan18.7%Lokasi12.8%Jam5.6%Garis putus-putus = importance sebenarnya
Feature teratas
Pendapatan
Importance
39.4%
Tree
10
Stabilitas
0.90

Dengan 10 tree, estimasi importance masih noisy, dan peringkatnya bisa berubah antarpercobaan.

Geser jumlah tree dari 5 ke 50 dan lihat batang-batangnya mendekati nilai sebenarnya yang ditandai garis putus-putus. Random forest melaporkan dua jenis importance. Mean decrease in impurity menjumlahkan seberapa banyak split dari setiap feature menurunkan Gini impurity atau variance di semua tree. Permutation importance mengacak nilai satu feature pada data out-of-bag dan mengukur seberapa jauh akurasi turun. Impurity importance tidak menambah biaya, tetapi cenderung memihak feature dengan banyak nilai berbeda, jadi permutation importance lebih aman kalau peringkatnya penting. Feature yang berkorelasi kuat membagi importance di antara mereka.

Apa itu random forest?

Random forest adalah ensemble berisi decision tree. Setiap tree dilatih pada sampel bootstrap dari data dan hanya boleh memakai subset feature acak di setiap split. Untuk klasifikasi, forest mengambil suara mayoritas dari semua tree, dan untuk regresi, forest merata-ratakan prediksinya. Melatih setiap tree pada salinan data hasil resampling disebut bagging, singkatan dari bootstrap aggregating. Subset feature acak itulah yang mengubah kumpulan tree hasil bagging menjadi random forest.

Random forest menjadi pilihan awal untuk data tabular karena hasilnya bagus dengan sedikit tuning, bisa menangani jenis feature campuran, dan tidak overfit saat tree ditambah. Metode ini dipakai untuk risiko kredit, deteksi penipuan, ekologi, genomika, dan penginderaan jauh. Ada juga dua hasil sampingan yang berguna: estimasi test error dari out-of-bag dan skor feature importance.

Ide utama

  • Bagging melatih setiap model pada sampel bootstrap yang diambil dengan pengembalian, lalu menggabungkan prediksinya.
  • Sampel bootstrap berisi sekitar 63,2% titik training yang unik.
  • Merata-ratakan banyak tree ber-variance tinggi menurunkan variance tanpa banyak menambah bias.
  • Random forest juga membatasi setiap split pada subset feature acak, sehingga korelasi antar-tree turun.
  • Titik out-of-bag memberi estimasi test error bawaan.
  • Menambah tree tidak menyebabkan overfitting, hanya membuat ensemble lebih stabil.

Pertanyaan umum

Apa bedanya bagging dan random forest?

Bagging melatih setiap tree pada sampel bootstrap, tetapi setiap split boleh mempertimbangkan semua feature. Random forest menambahkan sumber keacakan kedua, yaitu subset feature acak di setiap split. Korelasi antar-tree jadi lebih rendah, sehingga perataannya menurunkan variance lebih jauh.

Berapa banyak tree yang dibutuhkan random forest?

Cukup sampai error berhenti membaik, sering kali beberapa ratus. Menambah tree tidak pernah membuat forest overfit, tetapi manfaatnya mengecil sementara training dan prediksi makin lambat. Plot OOB error terhadap jumlah tree menunjukkan di mana kurvanya mendatar.

Apakah random forest lebih baik daripada gradient boosting?

Gradient boosting yang di-tuning dengan baik biasanya mencapai akurasi lebih tinggi pada data tabular, karena menurunkan bias dengan melatih setiap tree pada kesalahan tree sebelumnya. Random forest lebih mudah di-tuning, lebih sulit overfit, dan tree-nya bisa dilatih paralel. Alur kerja yang umum adalah memulai dengan random forest sebagai baseline, lalu beralih ke boosting untuk mengejar beberapa poin akurasi terakhir.

Bisakah random forest overfit?

Error-nya tidak naik saat tree ditambah, tetapi forest tetap bisa overfit pada data yang noisy ketika tree-nya tumbuh sangat dalam di atas sedikit sampel. Membatasi kedalaman tree atau menaikkan jumlah minimum sampel per leaf membantu dalam kasus ini. Memeriksa OOB error adalah cara cepat untuk mendeteksinya.

Penjelasan terkait

Referensi

  1. Breiman (2001), "Random Forests", Machine Learning
  2. Breiman (1996), "Bagging Predictors", Machine Learning
  3. James, Witten, Hastie & Tibshirani, "An Introduction to Statistical Learning", chapter 8: Tree-Based Methods

Terakhir diperbarui