Back to IF3270 Pembelajaran Mesin

Bagging dan Random Forests: Bootstrap Sampling, Model Diversity, dan Majority Voting

Questions/Cues

  • Mengapa bootstrap sampling meningkatkan keragaman model?
  • Bagaimana cara kerja voting mayoritas pada klasifikasi?
  • Apa perbedaan utama antara bagging dan random forest?
  • Bagaimana OOB score dihitung dalam bagging?
  • Mengapa pemilihan fitur acak meningkatkan performa random forest?

Reference Points

  • Kunapuli, G. (2023). Ensemble methods for machine learning (Slides 15‑23)
  • Olson et al. (2018). Data‑driven advice for applying machine learning to bioinformatics problems (Slides 5‑6)
  • Scikit‑learn documentation: Ensemble module (Slides 24‑26)
  • Fernández‑Delgado et al. (2014). Do we need hundreds of classifiers? (Slides 27‑28)

Bootstrap Sampling (Bagging)

Bootstrap sampling, atau sampling dengan penggantian, adalah teknik menghasilkan beberapa set data pelatihan yang berbeda dari satu dataset asli. Pada setiap iterasi, sejumlah contoh dipilih secara acak dari dataset induk, memungkinkan satu contoh muncul lebih dari satu kali atau tidak muncul sama sekali. Proses ini menghasilkan bootstrap sample yang masing‑masing memiliki distribusi statistik yang mirip dengan data asli, namun dengan variasi yang cukup untuk membuat setiap model dasar (base estimator) belajar pola yang sedikit berbeda. Contoh kode Python sederhana menggunakan NumPy memperlihatkan cara menghasilkan indeks‑indeks bootstrap:

 
import numpy as np
 
bag = np.random.choice(range(0, 50), size=50, replace=True)
 
oob = np.setdiff1d(range(0, 50), bag)
 

Di sini, bag berisi contoh‑contoh yang dipilih untuk satu model, sedangkan oob (out‑of‑bag) berisi contoh yang tidak terpilih dan nantinya dapat dipakai untuk memperkirakan error tanpa data validasi terpisah.

Mengapa teknik ini penting? Karena setiap model yang dilatih pada bootstrap sample yang berbeda akan memiliki struktur pohon (jika menggunakan decision tree) yang tidak identik. Perbedaan ini menurunkan korelasi antar model, yang pada gilirannya menurunkan varians keseluruhan ensemble ketika prediksi digabungkan. Secara statistik, bagging dapat dipandang sebagai estimasi Monte‑Carlo dari ekspektasi model pada distribusi data yang tak diketahui.

Model Diversity dalam Bagging

Keragaman model (model diversity) adalah inti keberhasilan ensemble. Pada bagging, keragaman diperoleh melalui dua mekanisme utama: (1) Bootstrap sampling yang menghasilkan data pelatihan yang berbeda, dan (2) Randomisasi internal pada algoritma pembelajar, misalnya dengan membatasi kedalaman pohon atau memilih split secara acak. Ketika setiap pohon keputusan dibangun, ia hanya melihat subset contoh yang berbeda; sehingga pola yang dipelajari tidak sepenuhnya tumpang tindih.

Pada praktik, keragaman dapat diukur dengan metrik seperti disagreement atau Q‑statistic antara pasangan model. Nilai keragaman yang tinggi biasanya berhubungan dengan penurunan error ensemble, asalkan akurasi individu tidak terlalu rendah.

Contoh konkret: Pada dataset Breast Cancer dari scikit‑learn, sebuah BaggingClassifier dengan DecisionTreeClassifier(max_depth=3) menghasilkan akurasi sekitar 0,98, jauh di atas akurasi satu pohon tunggal (sekitar 0,93). Keuntungan ini berasal dari kombinasi banyak pohon yang belajar pada data yang sedikit berbeda.

Majority Voting (Aggregasi Prediksi)

Setelah setiap base estimator menghasilkan prediksi, ensemble harus menggabungkannya menjadi satu keputusan akhir. Pada tugas klasifikasi, metode yang paling umum adalah majority voting (pemungutan suara mayoritas). Setiap model memberikan satu label kelas; kelas yang memperoleh suara terbanyak menjadi prediksi akhir. Jika terdapat ties, biasanya dipilih kelas dengan probabilitas rata‑rata tertinggi atau dipilih secara acak.

Secara matematis, untuk (M) model dan kelas (c), prediksi akhir (\hat{y}) diberikan oleh:

di mana adalah fungsi indikator. Pada regresi, agregasi yang setara adalah rata‑rata sederhana (simple averaging) dari nilai prediksi.

Implementasi di scikit‑learn (BaggingClassifier atau RandomForestClassifier) secara default menggunakan voting mayoritas, namun juga menyediakan opsi predict_proba yang mengembalikan rata‑rata probabilitas kelas, memberikan gambaran yang lebih halus tentang kepercayaan model.

Mengapa voting efektif? Karena kesalahan individu yang bersifat acak cenderung saling meniadakan ketika digabungkan, sementara kesalahan sistematis (bias) tetap ada. Dengan kata lain, voting menurunkan varians tanpa menambah bias secara signifikan, yang tercermin dalam analisis bias‑varians klasik.

Random Forest: Randomized Decision Trees

Random Forest adalah ekstensi dari bagging yang menambahkan satu lapisan randomisasi tambahan pada proses pembentukan pohon keputusan. Pada setiap split node, alih‑alih mempertimbangkan semua fitur yang tersedia, algoritma secara acak memilih subset fitur berukuran max_features. Dari subset ini, split terbaik dipilih berdasarkan impurity (misalnya Gini atau entropy).

Randomisasi fitur ini mengatasi kelemahan bagging tradisional, di mana fitur yang sangat informatif dapat mendominasi semua pohon, sehingga mengurangi keragaman. Dengan membatasi ruang pencarian fitur pada tiap node, setiap pohon menjadi lebih independen satu sama lain, meningkatkan keragaman tanpa mengorbankan akurasi secara signifikan.

Pada implementasi RandomForestClassifier di scikit‑learn, parameter penting meliputi n_estimators (jumlah pohon), max_features (jumlah fitur acak per split), max_depth (kedalaman maksimum), dan oob_score=True untuk mengaktifkan estimasi OOB.

Perbandingan performa: Pada contoh kode yang sama dengan dataset Breast Cancer, RandomForestClassifier dengan max_features=10 dan max_depth=5 menghasilkan akurasi sekitar 0,965, sedikit lebih rendah daripada bagging dengan depth 3 pada contoh tersebut, namun pada dataset dengan banyak fitur dominan, random forest biasanya mengungguli bagging karena keragaman fitur yang lebih tinggi.

Random Forest vs. Bagging: Kapan Memilih?

Kedua teknik merupakan homogeneous parallel ensembles yang menggunakan decision tree sebagai base learner. Pilihan antara keduanya tergantung pada karakteristik data:

  • Dimensi tinggi (d >> n): Ketika jumlah fitur jauh lebih besar daripada jumlah sampel, random forest lebih stabil karena tidak semua fitur dipertimbangkan pada tiap split, menghindari over‑fitting pada fitur yang jarang muncul.
  • Dataset kecil dengan sedikit fitur: Bagging dapat cukup, karena keragaman yang dihasilkan oleh bootstrap sudah signifikan.
  • Kebutuhan interpretabilitas fitur penting: Random forest menyediakan estimasi feature importance yang lebih informatif, karena kontribusi tiap fitur diukur melalui penurunan impurity rata‑rata pada semua pohon.
  • Keterbatasan memori: Bagging dengan pohon dangkal (shallow trees) biasanya lebih ringan secara komputasi dibandingkan random forest yang menelusuri banyak split acak.

Secara keseluruhan, baik bagging maupun random forest menurunkan varians model dasar, meningkatkan akurasi pada data terstruktur, dan menjadi pilihan utama dalam kompetisi data science (misalnya Kaggle) untuk masalah klasifikasi dan regresi.

Summary

Bagging menggunakan bootstrap sampling untuk menghasilkan data pelatihan yang berbeda, sehingga menciptakan keragaman model yang menurunkan varians keseluruhan. Prediksi akhir pada klasifikasi diperoleh melalui majority voting, yang mengagregasi keputusan individu menjadi satu keputusan kolektif. Random Forest memperluas ide bagging dengan menambahkan random subspace pada tiap split pohon, meningkatkan keragaman fitur dan memberikan estimasi pentingnya fitur. Kedua metode merupakan solusi homogeneous parallel ensembles yang sangat efektif pada data terstruktur, terutama ketika jumlah fitur tinggi atau ketika diperlukan robustitas terhadap over‑fitting.