React Flow mini map
🧠 ML Temelleriorta15 dk

Karar Ağaçları ve Ensemble Yöntemler

Decision Tree, Random Forest ve Gradient Boosting

Önce bunlara göz at

🎯

30 saniyede özet · Ne öğreneceksin

  • Karar ağacının Gini ve entropy ile nasıl bölündüğünü anlamak
  • Random Forest'ın bagging yöntemiyle varyansı düşürdüğünü açıklamak
  • Gradient Boosting ile boosting farkını kavramak
15 dk okuma·orta

Bir doktor hastaya teşhis koyarken sırayla sorular sorar: 'Ateşin var mı? Öksürük var mı? Ne zamandır?' — işte karar ağaçları tam da bu mantıkla çalışır. Veriyi adım adım sorularla bölerek karara ulaşan bu yapı, tablo verisi için en sezgisel ve güçlü ML ailesidir.

Bir karar ağacı üç temel yapıdan oluşur:

🎯20 Soruluk Oyun

Karar ağacı '20 Soruluk Oyun' gibidir: her soru cevap uzayını yarıya böler. 'Canlı mı?' → 'Memeli mi?' → 'Evcil mi?' derken seçenekleri daraltırsınız. İyi sorular (yüksek Information Gain) oyunu hızlı bitirir, kötü sorular işe yaramaz.

Ağaç hangi soruyu soracağını nasıl seçer?

Gini(D) = 1 - Σᵢ pᵢ²

D veri kümesinde pᵢ, i. sınıfın oranıdır. İki sınıf eşit dağılmışsa Gini = 0.5 (maksimum karışıklık), tek sınıf varsa Gini = 0 (saf yaprak).

⚠️Karar ağaçları sınırsız büyürse her örnek için ayrı bir yaprak oluşturur — %100 eğitim doğruluğu ama sıfır genelleme! Bu, overfitting'in ders kitabı örneğidir.

Ağacı kontrol altında tutmak için hiperparametreler:

Basit karar ağacı eğitimi

Python
1from sklearn.tree import DecisionTreeClassifier
2from sklearn.datasets import load_iris
3
4X, y = load_iris(return_X_y=True)
5tree = DecisionTreeClassifier(max_depth=3, random_state=42)
6tree.fit(X, y)
7
8# En önemli özellikler
9for i, imp in enumerate(tree.feature_importances_):
10 print(f"Özellik {i}: {imp:.3f}")

✦ Quiz

Bir karar ağacında Gini impurity değeri 0 ise bu ne anlama gelir?

Tek ağaç yerine yüzlerce ağaç eğitip oylarını sayarsak ne olur? Random Forest tam bunu yap…

Tek Karar Ağacı

  • ·Yüksek varyans — veriye çok duyarlı
  • ·Yorumlaması kolay, görselleştirilebilir
  • ·Hızlı eğitim ve tahmin
  • ·Aşırı öğrenmeye meyilli

Random Forest

  • ·Düşük varyans — kararlı tahminler
  • ·Kara kutu — tek ağaç kadar şeffaf değil
  • ·Daha yavaş ama paralelleştirilebilir
  • ·Varsayılan ayarlarla bile güçlü

Random Forest ağaçları paralel eğitir, Gradient Boosting ise seri:

💡Random Forest için n_estimators=100 iyi bir başlangıç. Gradient Boosting'de ise learning_rate düşük tutup (0.01-0.1) ağaç sayısını early stopping ile belirlemek en güvenli strateji.

Gradient Boosting'in optimize edilmiş versiyonları:

Random Forest ile özellik önem sıralaması

Python
1from sklearn.ensemble import RandomForestClassifier
2from sklearn.datasets import load_iris
3import numpy as np
4
5X, y = load_iris(return_X_y=True)
6feature_names = ['sepal_len', 'sepal_wid', 'petal_len', 'petal_wid']
7
8rf = RandomForestClassifier(n_estimators=100, random_state=42)
9rf.fit(X, y)
10
11# Önem sırasına göre listele
12indices = np.argsort(rf.feature_importances_)[::-1]
13for i in indices:
14 print(f"{feature_names[i]}: {rf.feature_importances_[i]:.3f}")

✦ Quiz

Random Forest'ta 'bootstrap sampling' ne işe yarar?

Random Forest (Bagging)

  • ·Ağaçlar paralel ve bağımsız
  • ·Varyansı azaltır
  • ·Overfitting'e dirençli
  • ·Hiperparametre ayarı kolay

Gradient Boosting

  • ·Ağaçlar seri ve bağımlı
  • ·Bias'ı azaltır
  • ·Dikkatli ayar gerektirir
  • ·Genellikle daha yüksek performans

✦ Quiz

Gradient Boosting'de learning_rate'i düşürmek ne etkisi yapar?

ℹ️Tablo verisi yarışmalarında (Kaggle, vb.) XGBoost/LightGBM + dikkatli özellik mühendisliği kombinasyonu, derin öğrenme modellerini bile çoğu zaman geride bırakır. Sinir ağları her derde deva değil!

Daha derinlemesine