Tutorial ini membahas Random Forest dan contoh perhitungan manualnya untuk klasifikasi. Contoh kasus yang digunakan adalah menentukan kelayakan kredit berdasarkan beberapa atribut calon nasabah.
Perhitungan dimulai dari bootstrap sampling, pemilihan subset fitur, perhitungan Gini Impurity, pembentukan beberapa decision tree, prediksi dari masing-masing pohon, hingga penentuan hasil akhir menggunakan majority voting.
Daftar Isi
- Pengertian Random Forest
- Rumus Gini Impurity
- #01 Data Latih
- #02 Bootstrap Sampling
- #03 Pemilihan Fitur
- #04 Perhitungan Setiap Decision Tree
- #05 Prediksi Data Uji
- #06 Majority Voting
- #07 Hasil Akhir Random Forest
- Ringkasan
- FAQ Random Forest
- Referensi
- Source Code Random Forest
Pengertian Random Forest
Random Forest adalah metode ensemble learning yang menggabungkan banyak decision tree. Setiap pohon dilatih menggunakan sampel data dan subset fitur yang berbeda agar antar-pohon memiliki variasi.
Untuk kasus klasifikasi, setiap pohon menghasilkan satu kelas. Hasil akhir Random Forest ditentukan dari kelas yang memperoleh suara terbanyak atau majority voting.
Rumus Gini Impurity
Pada contoh ini, kualitas pemisahan node dihitung menggunakan Gini Impurity.
Setelah data dibagi berdasarkan sebuah atribut, Gini hasil split dihitung:
Penurunan Gini:
Atribut dengan penurunan Gini yang lebih besar menghasilkan pemisahan yang lebih baik pada node tersebut.
#01 Data Latih
Contoh menggunakan 10 data latih dengan target Kelayakan.
| No | Penghasilan | Pekerjaan | Jaminan | Riwayat | Kelayakan |
|---|---|---|---|---|---|
| D1 | Rendah | Kontrak | Tidak | Buruk | Tidak Layak |
| D2 | Rendah | Usaha | Tidak | Baik | Tidak Layak |
| D3 | Sedang | Kontrak | Ada | Baik | Layak |
| D4 | Sedang | Tetap | Ada | Baik | Layak |
| D5 | Tinggi | Tetap | Ada | Baik | Layak |
| D6 | Tinggi | Usaha | Ada | Baik | Layak |
| D7 | Sedang | Usaha | Tidak | Buruk | Tidak Layak |
| D8 | Tinggi | Kontrak | Tidak | Baik | Layak |
| D9 | Rendah | Tetap | Ada | Baik | Layak |
| D10 | Sedang | Kontrak | Tidak | Baik | Tidak Layak |
#02 Bootstrap Sampling
Setiap decision tree dilatih menggunakan bootstrap sample, yaitu pengambilan data dengan pengembalian. Karena menggunakan pengembalian, satu data dapat muncul lebih dari satu kali di dalam sampel.
Contoh Tree 1 menggunakan indeks: D1, D2, D3, D4, D5, D5, D7, D8, D9, D10. Terlihat ada data yang muncul lebih dari satu kali. Hal ini merupakan karakteristik normal pada bootstrap sampling.
| Tree | Data Bootstrap |
|---|---|
| Tree 1 | D1, D2, D3, D4, D5, D5, D7, D8, D9, D10 |
| Tree 2 | D1, D2, D2, D3, D4, D6, D7, D8, D9, D10 |
| Tree 3 | D1, D3, D4, D5, D6, D6, D7, D8, D9, D10 |
#03 Pemilihan Fitur
Selain menggunakan data bootstrap, Random Forest juga menggunakan subset fitur agar setiap pohon tidak selalu membentuk struktur yang sama.
Pada contoh manual ini, subset fitur ditentukan terlebih dahulu agar perhitungan dapat direproduksi dengan mudah. Dalam implementasi Random Forest pada library machine learning, subset fitur umumnya dipilih secara acak pada setiap split.
| Tree | Fitur yang Digunakan |
|---|---|
| Tree 1 | Jaminan, Riwayat |
| Tree 2 | Penghasilan, Pekerjaan |
| Tree 3 | Riwayat, Penghasilan |
#04 Perhitungan Setiap Decision Tree
Selanjutnya setiap bootstrap sample digunakan untuk membentuk decision tree. Sebelum tabel hasil ditampilkan, perhitungan Gini pada kandidat atribut ditunjukkan terlebih dahulu agar asal angkanya jelas.
Tree 1
Tree 1 memiliki 10 data bootstrap. Distribusi kelas: Tidak Layak = 4, Layak = 6.
Gini node awal: 1 - ((4/10)² + (6/10)²) = 0.48
Contoh Perhitungan Fitur Jaminan
Data dikelompokkan berdasarkan nilai Jaminan. Berikut rincian sebelum nilai Gini Split dirangkum.
| Nilai Jaminan | Jumlah | Distribusi Kelas | Gini | Bobot | Bobot × Gini |
|---|---|---|---|---|---|
| Tidak | 5 | Tidak Layak: 4, Layak: 1 | 0.32 | 5/10 = 0.5 | 0.5 × 0.32 = 0.16 |
| Ada | 5 | Layak: 5 | 0 | 5/10 = 0.5 | 0.5 × 0 = 0 |
Gini Split Jaminan: (5/10 × 0.32) + (5/10 × 0) = 0.16
Penurunan Gini: 0.48 - 0.16 = 0.32
Contoh Perhitungan Fitur Riwayat
Data dikelompokkan berdasarkan nilai Riwayat. Berikut rincian sebelum nilai Gini Split dirangkum.
| Nilai Riwayat | Jumlah | Distribusi Kelas | Gini | Bobot | Bobot × Gini |
|---|---|---|---|---|---|
| Buruk | 2 | Tidak Layak: 2 | 0 | 2/10 = 0.2 | 0.2 × 0 = 0 |
| Baik | 8 | Tidak Layak: 2, Layak: 6 | 0.375 | 8/10 = 0.8 | 0.8 × 0.375 = 0.3 |
Gini Split Riwayat: (2/10 × 0) + (8/10 × 0.375) = 0.3
Penurunan Gini: 0.48 - 0.3 = 0.18
Perbandingan Fitur Tree 1
| Fitur | Gini Split | Penurunan Gini |
|---|---|---|
| Jaminan | 0.16 | 0.32 |
| Riwayat | 0.3 | 0.18 |
Pohon Tree 1
Jaminan
- Tidak → Riwayat
- Buruk → Tidak Layak
- Baik → Tidak Layak
- Ada → Layak
Tree 2
Tree 2 memiliki 10 data bootstrap. Distribusi kelas: Tidak Layak = 5, Layak = 5.
Gini node awal: 1 - ((5/10)² + (5/10)²) = 0.5
Contoh Perhitungan Fitur Penghasilan
Data dikelompokkan berdasarkan nilai Penghasilan. Berikut rincian sebelum nilai Gini Split dirangkum.
| Nilai Penghasilan | Jumlah | Distribusi Kelas | Gini | Bobot | Bobot × Gini |
|---|---|---|---|---|---|
| Rendah | 4 | Tidak Layak: 3, Layak: 1 | 0.375 | 4/10 = 0.4 | 0.4 × 0.375 = 0.15 |
| Sedang | 4 | Layak: 2, Tidak Layak: 2 | 0.5 | 4/10 = 0.4 | 0.4 × 0.5 = 0.2 |
| Tinggi | 2 | Layak: 2 | 0 | 2/10 = 0.2 | 0.2 × 0 = 0 |
Gini Split Penghasilan: (4/10 × 0.375) + (4/10 × 0.5) + (2/10 × 0) = 0.35
Penurunan Gini: 0.5 - 0.35 = 0.15
Contoh Perhitungan Fitur Pekerjaan
Data dikelompokkan berdasarkan nilai Pekerjaan. Berikut rincian sebelum nilai Gini Split dirangkum.
| Nilai Pekerjaan | Jumlah | Distribusi Kelas | Gini | Bobot | Bobot × Gini |
|---|---|---|---|---|---|
| Kontrak | 4 | Tidak Layak: 2, Layak: 2 | 0.5 | 4/10 = 0.4 | 0.4 × 0.5 = 0.2 |
| Usaha | 4 | Tidak Layak: 3, Layak: 1 | 0.375 | 4/10 = 0.4 | 0.4 × 0.375 = 0.15 |
| Tetap | 2 | Layak: 2 | 0 | 2/10 = 0.2 | 0.2 × 0 = 0 |
Gini Split Pekerjaan: (4/10 × 0.5) + (4/10 × 0.375) + (2/10 × 0) = 0.35
Penurunan Gini: 0.5 - 0.35 = 0.15
Perbandingan Fitur Tree 2
| Fitur | Gini Split | Penurunan Gini |
|---|---|---|
| Penghasilan | 0.35 | 0.15 |
| Pekerjaan | 0.35 | 0.15 |
Pohon Tree 2
Penghasilan
- Rendah → Pekerjaan
- Kontrak → Tidak Layak
- Usaha → Tidak Layak
- Tetap → Layak
- Sedang → Pekerjaan
- Kontrak → Layak
- Tetap → Layak
- Usaha → Tidak Layak
- Tinggi → Layak
Tree 3
Tree 3 memiliki 10 data bootstrap. Distribusi kelas: Tidak Layak = 3, Layak = 7.
Gini node awal: 1 - ((3/10)² + (7/10)²) = 0.42
Contoh Perhitungan Fitur Riwayat
Data dikelompokkan berdasarkan nilai Riwayat. Berikut rincian sebelum nilai Gini Split dirangkum.
| Nilai Riwayat | Jumlah | Distribusi Kelas | Gini | Bobot | Bobot × Gini |
|---|---|---|---|---|---|
| Buruk | 2 | Tidak Layak: 2 | 0 | 2/10 = 0.2 | 0.2 × 0 = 0 |
| Baik | 8 | Layak: 7, Tidak Layak: 1 | 0.2188 | 8/10 = 0.8 | 0.8 × 0.2188 = 0.175 |
Gini Split Riwayat: (2/10 × 0) + (8/10 × 0.2188) = 0.175
Penurunan Gini: 0.42 - 0.175 = 0.245
Contoh Perhitungan Fitur Penghasilan
Data dikelompokkan berdasarkan nilai Penghasilan. Berikut rincian sebelum nilai Gini Split dirangkum.
| Nilai Penghasilan | Jumlah | Distribusi Kelas | Gini | Bobot | Bobot × Gini |
|---|---|---|---|---|---|
| Rendah | 2 | Tidak Layak: 1, Layak: 1 | 0.5 | 2/10 = 0.2 | 0.2 × 0.5 = 0.1 |
| Sedang | 4 | Layak: 2, Tidak Layak: 2 | 0.5 | 4/10 = 0.4 | 0.4 × 0.5 = 0.2 |
| Tinggi | 4 | Layak: 4 | 0 | 4/10 = 0.4 | 0.4 × 0 = 0 |
Gini Split Penghasilan: (2/10 × 0.5) + (4/10 × 0.5) + (4/10 × 0) = 0.3
Penurunan Gini: 0.42 - 0.3 = 0.12
Perbandingan Fitur Tree 3
| Fitur | Gini Split | Penurunan Gini |
|---|---|---|
| Riwayat | 0.175 | 0.245 |
| Penghasilan | 0.3 | 0.12 |
Pohon Tree 3
Riwayat
- Buruk → Tidak Layak
- Baik → Penghasilan
- Sedang → Layak
- Tinggi → Layak
- Rendah → Layak
#05 Prediksi Data Uji
Data uji berikut akan diprediksi oleh masing-masing decision tree.
| Penghasilan | Pekerjaan | Jaminan | Riwayat |
|---|---|---|---|
| Tinggi | Kontrak | Tidak | Baik |
Prediksi Tree 1
Jalur keputusan: Jaminan = Tidak → Riwayat = Baik .
Hasil Tree 1 = Tidak Layak.
Prediksi Tree 2
Jalur keputusan: Penghasilan = Tinggi .
Hasil Tree 2 = Layak.
Prediksi Tree 3
Jalur keputusan: Riwayat = Baik → Penghasilan = Tinggi .
Hasil Tree 3 = Layak.
#06 Majority Voting
Setelah semua pohon memberikan prediksi, jumlah suara setiap kelas dihitung.
Hasil suara dari 3 pohon: Tidak Layak + Layak + Layak
| Kelas | Jumlah Suara |
|---|---|
| Layak | 2 |
| Tidak Layak | 1 |
#07 Hasil Akhir Random Forest
Kelas dengan suara terbanyak adalah Layak. Dengan demikian, hasil klasifikasi Random Forest untuk data uji adalah Layak.
Contoh ini menggunakan 3 pohon agar perhitungan manual mudah diikuti. Pada implementasi nyata, Random Forest biasanya menggunakan jumlah pohon yang jauh lebih banyak dan parameter model dievaluasi menggunakan data validasi.
Ringkasan
Random Forest membentuk banyak decision tree dari bootstrap sample dan subset fitur yang berbeda. Setiap pohon menghasilkan prediksi sendiri. Untuk klasifikasi, seluruh prediksi kemudian digabungkan menggunakan majority voting sehingga diperoleh hasil akhir yang lebih stabil dibanding hanya menggunakan satu pohon pada banyak kasus.
FAQ Random Forest
Apa perbedaan Decision Tree dan Random Forest?
Decision Tree menggunakan satu pohon keputusan, sedangkan Random Forest menggabungkan banyak pohon dan menggabungkan prediksinya.
Apa itu bootstrap sampling?
Bootstrap sampling adalah pengambilan sampel dengan pengembalian. Karena itu, satu data dapat terpilih beberapa kali dan sebagian data dapat tidak masuk ke bootstrap sample tertentu.
Mengapa Random Forest memilih fitur secara acak?
Pemilihan subset fitur membantu menghasilkan variasi antar-pohon sehingga semua pohon tidak selalu membuat keputusan berdasarkan atribut yang sama.
Apa fungsi Gini Impurity?
Gini Impurity mengukur tingkat campuran kelas pada sebuah node. Nilai yang lebih kecil menunjukkan node yang lebih homogen.
Bagaimana Random Forest menentukan hasil klasifikasi?
Setiap decision tree memberikan satu prediksi kelas. Kelas yang memperoleh suara terbanyak dari seluruh pohon menjadi hasil akhir.
Apakah tiga pohon sudah cukup?
Tiga pohon digunakan pada tutorial ini untuk memudahkan perhitungan manual. Dalam penggunaan nyata, jumlah pohon umumnya lebih banyak dan dipilih berdasarkan evaluasi model.
Referensi
- Breiman, L. (2001). Random Forests. Machine Learning, 45, 5–32.
- Breiman, L., Friedman, J. H., Olshen, R. A. & Stone, C. J. (1984). Classification and Regression Trees. Wadsworth.
Source Code Random Forest
Berikut adalah beberapa source code yang menggunakan metode Random Forest, baik berbasis web maupun desktop.




