Random Forest Classifier

"Demokrasi Hutan: Voting Suara Terbanyak"

1. Apa itu Random Forest?

Jika di Regresi Random Forest mengambil Rata-rata, maka di Klasifikasi dia menggunakan sistem Voting (Suara Terbanyak).

Kita melatih ratusan pohon keputusan (Decision Trees). Setiap pohon dilatih dengan data yang sedikit berbeda (Bootstrap) dan melihat fitur yang berbeda juga. Hasil akhirnya adalah prediksi yang dipilih oleh mayoritas pohon.

2. Visualisasi: Voting Mechanism

Contoh: Klasifikasi Gambar (Kucing vs Anjing).

Pohon 1
KUCING
Pohon 2
KUCING
Pohon 3
ANJING
HASIL AKHIR
KUCING
(Menang 2 vs 1)

Meskipun Pohon 3 salah tebak, hasil akhir tetap benar karena dikoreksi oleh Pohon 1 dan 2.

3. Mengapa "Random"?

Agar votingnya adil, setiap "juri" (pohon) harus punya pandangan yang unik. Kalau semua juri melihat hal yang sama, percuma voting.

  • Bootstrap Aggregating (Bagging): Setiap pohon dilatih dengan sampel acak dari data (ada yang duplikat, ada yang hilang).
  • Feature Randomness: Saat memecah node, pohon hanya boleh memilih dari subset acak fitur (misal: cuma boleh lihat Telinga dan Ekor, tidak boleh lihat Mata).

4. Implementasi Python (Scikit-Learn)

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
import numpy as np

# 1. Data Iris (Bunga)
data = load_iris()
X, y = data.data, data.target
# Target: 0=Setosa, 1=Versicolor, 2=Virginica

# 2. Model Random Forest
# n_estimators=100 (100 Pohon)
rf = RandomForestClassifier(n_estimators=100, max_depth=3, random_state=42)

# 3. Training
rf.fit(X, y)

# 4. Prediksi
sample_bunga = [[5.1, 3.5, 1.4, 0.2]] # Mirip Setosa
prediksi = rf.predict(sample_bunga)
print("Jenis Bunga:", data.target_names[prediksi[0]])

# 5. Feature Importance (Fitur mana yang paling menentukan?)
imp = rf.feature_importances_
print("Pentingnya Fitur:", imp)
# Output misal: [0.1, 0.05, 0.45, 0.4] -> Petal Length & Width paling penting!