AI Atlas
Orta· ~2 dk okuma#random-forest#ensemble#bagging

Random Forest

Rastgele Orman

Yüzlerce karar ağacını rastgelelikle eğitip oylarını birleştiren topluluk yöntemi — tek ağaca göre çok daha kararlı ve doğrudur.

RANDOM FORESTÇoğunluk oyu(ortalama)Yüzlerce ağacın oylarının birleşimi, tek ağaçtan kararlı.
Tanım

Tek bir karar ağacı veriye aşırı duyarlıdır: birkaç örnek değişince ağacın yapısı tamamen değişebilir. Random forest bu zayıflığı çözmek için iki tür rastgelelik ekler. Bagging sayesinde her ağaç eğitim verisinin bootstrap (rastgele tekrarlı) örneğiyle eğitilir; her ağaç biraz farklı bir veriden öğrenir. Üstüne her bölme noktasında özelliklerin rastgele bir alt kümesi değerlendirilir; ağaçlar birbirine fazla benzemesin diye.

Tahmin sırasında her ağaç oy verir. Sınıflandırmada çoğunluk kazanır, regresyonda ortalama alınır. Yüzlerce ağacın "ortalaması" tek bir ağaca göre çok daha düşük varyanslıdır — yani yeni veriye daha iyi genellenir. Bu basit fikir, gerçek dünya tabular verisinde on yıllarca en iyi seçeneklerden biri olarak kaldı.

Random forest ayrıca neredeyse "ücretsiz" bir özellik önemi (feature importance) ölçüsü verir: bir özelliği rastgele karıştırırsanız modelin doğruluğu ne kadar düşer? Bu, hangi değişkenlerin gerçekten karar verdiğini hızlıca anlamak için çok değerlidir.

Benzetme

Tek bir uzmana danışmaktansa farklı uzmanlardan oluşan bir kurul toplamak gibi. Her uzman aynı veriyi görmemiş, herkes biraz farklı kaynaklardan öğrenmiş, dolayısıyla her birinin önyargısı da farklı. Karar zamanı geldiğinde herkes oy verir, çoğunluğun görüşü alınır. Tek bir uzmanın hatalı çıkma riski yüksektir; on kişilik bir kurulun aynı anda yanlış olması çok daha zordur.

Gerçek dünyadan örnek

Sigorta şirketi yeni başvuran müşteriler için hasar tahmini yapmak istiyor. Geçmiş 5 yılın 2 milyon poliçe verisi var: yaş, araç tipi, sürüş geçmişi, lokasyon, kullanım, kredi skoru, daha onlarca özellik.

500 ağaçlı bir random forest eğitildiğinde tek bir karar ağacının (max_depth=20) yaptığından %14 daha iyi MAE elde ediliyor. Üstelik feature importance çıktığında "geceleri park ettiği yer" özelliğinin "araç markası"ndan iki kat daha önemli olduğu ortaya çıkıyor — aktüer ekibi bunu öngörmemişti. Hem doğruluk hem içgörü kazanıldı.

Kod örnekleri
scikit-learn · random forestPython
from sklearn.ensemble import RandomForestClassifier
from sklearn.inspection import permutation_importance
import numpy as np

rf = RandomForestClassifier(
    n_estimators=500,
    max_depth=None,           # her ağaç sona kadar büyür
    min_samples_leaf=2,
    max_features="sqrt",      # her bölünmede özelliklerin √n'i
    n_jobs=-1,                # paralel çalış
    random_state=42,
)

rf.fit(X_train, y_train)

# Permutasyon ile özellik önemi (eğitimden bağımsız, daha güvenilir)
result = permutation_importance(rf, X_test, y_test, n_repeats=10, random_state=42)
for i in result.importances_mean.argsort()[::-1][:10]:
    print(f"{feature_names[i]:30s}  {result.importances_mean[i]:+.4f}")
Ne zaman kullan
  • Tabular veride güçlü baseline gerekirse
  • Açıklanabilirliği belli ölçüde korumak istersen (özellik önemi mevcut)
  • Eksik değer ve aykırı değere toleranslı bir model lazımsa
  • Hiperparametre ayarına çok zaman ayırmadan iyi sonuç gerekiyorsa
Ne zaman kullanma
  • Çok büyük veride hız kritikse — gradient boosting (XGBoost/LightGBM) genelde daha hızlı ve iyi
  • Doğrusal ilişkilerin baskın olduğu yerde — basit doğrusal model yeter
  • Çıkarsama (inference) zamanının çok düşük olması gerekiyorsa — 500 ağaç toplamı yavaşlayabilir
Sık yapılan hatalar

Çok fazla küçük ağaç

n_estimators sayısı kadar ağaç oylanır — fazla ağaç doğruluğu çok az artırırken inference süresini şişirir. Genelde 200-500 yeter.

Yanlı özellik önemi

Klasik impurity-based feature importance yüksek kardinalite (çok benzersiz değerli) özelliklere haksız avantaj verir. Mümkünse permutation importance kullan.

Aşırı öğrenmeden tamamen kurtulma yanılgısı

Random forest aşırı öğrenmeye dayanıklıdır ama bağışık değildir. Çok küçük veri kümelerinde hâlâ test başarısı düşer. Çapraz doğrulama ile kontrol et.