Materi: Algoritma Random Forest

Pengertian Random Forest
Random Forest adalah algoritma ensemble learning berbasis pohon keputusan (Decision Tree). Algoritma ini membangun banyak Decision Tree (hutan pohon) dan menggabungkan hasilnya untuk meningkatkan akurasi dan mengurangi risiko overfitting.

Karakteristik Random Forest:

  • Kombinasi banyak pohon → hasil prediksi lebih stabil.
  • Cocok untuk classification maupun regression.
  • Memiliki kemampuan menangani data dengan banyak fitur dan missing values.

Cara Kerja Random Forest

  1. Bootstrapping: Dari dataset asli, diambil beberapa subset data secara acak (dengan pengembalian) → disebut bootstrap sample.
  2. Growing Trees: Untuk setiap subset, dibuat Decision Tree tanpa pruning.
  3. Random Feature Selection: Pada tiap node, hanya sebagian fitur yang dipilih secara acak untuk split.
  4. Voting / Averaging:
  • Classification → mayoritas voting dari semua pohon.
  • Regression → rata-rata prediksi dari semua pohon.

Kelebihan Random Forest

  • Akurasi tinggi.
  • Tidak mudah overfitting.
  • Dapat mengukur feature importance.

Kekurangan

  • Kurang interpretatif dibanding Decision Tree.
  • Lebih lambat saat prediksi dibanding satu pohon.

Ilustrasi

Misalkan dataset:

CuacaSuhuBermain
CerahPanasTidak
CerahDinginTidak
BerawanPanasYa
HujanDinginYa
HujanPanasTidak
  • Random Forest membangun beberapa Decision Tree dari subset acak dataset.
  • Masing-masing pohon menghasilkan prediksi → dilakukan voting.

Latihan & Pembahasan

Latihan 1
Jelaskan perbedaan utama antara Decision Tree dan Random Forest dalam hal:
a) Akurasi
b) Overfitting
c) Interpretasi


Pembahasan
a) Akurasi
Random Forest umumnya memiliki akurasi lebih tinggi karena agregasi banyak pohon mengurangi kesalahan.

b) Overfitting
Decision Tree cenderung overfitting pada data training. Random Forest lebih tahan overfitting karena variasi pohon.

c) Interpretasi
Decision Tree mudah diinterpretasi (aturan jelas). Random Forest sulit diinterpretasi karena gabungan banyak pohon.


Penugasan

  1. Cari 2 artikel ilmiah yang membandingkan Random Forest dan Decision Tree.
  2. Buat dataset minimal 8 baris dengan 3 atribut dan 1 target (boleh classification atau regression).
  3. Implementasikan Decision Tree dan Random Forest pada dataset.
  4. Bandingkan akurasi dan hasil prediksi keduanya.
  5. Analisis feature importance pada Random Forest.

Kode Python

# Random Forest Classifier Example
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# Dataset
data = {
    'Cuaca': ['Cerah', 'Cerah', 'Berawan', 'Hujan', 'Hujan'],
    'Suhu': ['Panas', 'Dingin', 'Panas', 'Dingin', 'Panas'],
    'Bermain': ['Tidak', 'Tidak', 'Ya', 'Ya', 'Tidak']
}

df = pd.DataFrame(data)

# Encode categorical data
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['Cuaca_enc'] = le.fit_transform(df['Cuaca'])
df['Suhu_enc'] = le.fit_transform(df['Suhu'])
df['Bermain_enc'] = le.fit_transform(df['Bermain'])

# Features dan Target
X = df[['Cuaca_enc', 'Suhu_enc']]
y = df['Bermain_enc']

# Split Data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)

# Decision Tree Classifier
dt_clf = DecisionTreeClassifier(criterion='entropy', random_state=0)
dt_clf.fit(X_train, y_train)
dt_pred = dt_clf.predict(X_test)

# Random Forest Classifier
rf_clf = RandomForestClassifier(n_estimators=100, random_state=0)
rf_clf.fit(X_train, y_train)
rf_pred = rf_clf.predict(X_test)

# Akurasi
print("Akurasi Decision Tree:", accuracy_score(y_test, dt_pred))
print("Akurasi Random Forest:", accuracy_score(y_test, rf_pred))

# Feature Importance (Random Forest)
importances = rf_clf.feature_importances_
feature_names = X.columns
for name, importance in zip(feature_names, importances):
    print(f"Feature: {name}, Importance: {importance:.4f}")

Referensi

  • Breiman, L. (2001). Random Forests. Machine Learning Journal.
  • Géron, A. (2019). Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow.

Leave a Reply 0

Your email address will not be published. Required fields are marked *