Apa itu Random Forest?
Random Forest adalah algoritma ensemble learning yang menggabungkan banyak Decision Tree untuk menghasilkan prediksi yang lebih akurat dan stabil. Menggunakan teknik Bagging (Bootstrap Aggregating).
Cara Kerja Random Forest
- Bootstrap Sampling: Buat banyak subset data secara random (with replacement).
- Train Multiple Trees: Latih Decision Tree pada setiap subset.
- Random Feature Selection: Setiap split hanya mempertimbangkan subset fitur random.
- Aggregate Predictions: Voting (klasifikasi) atau averaging (regresi).
Implementasi Python
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import pandas as pd
import matplotlib.pyplot as plt
# Load data
data = pd.read_csv('data.csv')
X = data.drop('target', axis=1)
y = data['target']
# Split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train Random Forest
rf = RandomForestClassifier(
n_estimators=100, # jumlah tree
max_depth=10, # kedalaman maksimum
random_state=42,
n_jobs=-1 # gunakan semua CPU cores
)
rf.fit(X_train, y_train)
# Predict
y_pred = rf.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.4f}")
print(classification_report(y_test, y_pred))
Feature Importance
Random Forest dapat menunjukkan fitur mana yang paling berpengaruh terhadap prediksi:
# Feature importance
importances = rf.feature_importances_
feature_names = X.columns
# Sort dan visualisasi
indices = importances.argsort()[::-1]
plt.figure(figsize=(10, 6))
plt.title("Feature Importance")
plt.bar(range(len(importances)), importances[indices])
plt.xticks(range(len(importances)), [feature_names[i] for i in indices], rotation=45)
plt.tight_layout()
plt.show()
Hyperparameter Penting
- n_estimators: Jumlah tree (lebih banyak = lebih stabil, tapi lebih lambat).
- max_depth: Kedalaman maksimum tree (kontrol overfitting).
- min_samples_split: Minimum sampel untuk split.
- max_features: Jumlah fitur yang dipertimbangkan per split.
Kelebihan Random Forest
- Akurasi tinggi dan robust terhadap noise.
- Tidak butuh scaling fitur.
- Dapat menangani missing values.
- Memberikan feature importance.
- Jarang overfitting.