AI Atlas
Orta· ~2 dk okuma#gradient-boosting#xgboost#lightgbm

Gradient Boosting

Gradyan Yükseltme

Yüzlerce zayıf karar ağacını sırayla eğitip her birinin önceki ağaçların hatasını telafi etmesini sağlayan, tabular veride çoğu zaman birinci seçenek topluluk yöntemi.

GRADIENT BOOSTINGAğaç 1kalıntı hataAğaç 2kalıntı hataAğaç 3kalıntı hataAğaç Nkalıntı hataHer ağaç öncekinin kalıntı hatasına odaklanır.
Tanım

Gradient boosting, bagging'in (random forest) kardeşi olan boosting ailesindendir. Random forest'ta ağaçlar paralel ve bağımsız eğitilir; gradient boosting'de ise sıralı: her yeni ağaç, kendinden öncekilerin yaptığı toplam tahmin hatasının gradyanına (eğimine) bakar ve bu hatayı azaltacak şekilde eğitilir. Bu adım adım iyileştirme, kayıp fonksiyonunu hızla küçültür.

Sınıflandırmada log-loss, regresyonda kareli hata gibi farklı kayıp fonksiyonları seçilebilir; her biri için gradient boosting uyarlanır. Üstün özellik şudur: model, kayıp fonksiyonunu optimize eden yöne bilinçli olarak ilerler — bu yüzden çoğu tabular veri yarışmasında (Kaggle) ilk üçten çıkmaz.

Kütüphaneler arası popüler seçenekler: XGBoost (en eski ve olgun), LightGBM (çok hızlı, büyük veri için), CatBoost (kategorik özellikleri otomatik işler). Hepsi aynı temel fikrin farklı optimizasyonlu uygulamalarıdır.

Benzetme

Bir şirketin satış tahmininde önce stajyer işe alıyorsun. O kabaca bir tahmin veriyor, ama aylık 50 bin sapma yapıyor. Üstüne kıdemli bir analist alıyorsun, ona "stajyerin nerede yanılıyor, sen oraya odaklan" diyorsun. Onun da hatasının üstüne bir senior tahminci alıyorsun, ona "ikisinin birlikte kalan hatasını sen kapat" diyorsun. Üç kişi birlikte, tek başına olduklarından çok daha iyi tahmin yapar — çünkü her biri öncekinin zayıf yanlarına odaklanmıştır. Gradient boosting tam olarak bu mantıkla çalışır.

Gerçek dünyadan örnek

Bir kredi kartı şirketi her işlemin "dolandırıcılık olasılığını" çıkarmak istiyor. Veri çok dengesiz (%0.1 fraud), özellik sayısı yüksek (200+), ilişkiler doğrusal değil (yer + saat + tutar kombinasyonu kritik). Lojistik regresyon AUC=0.78, random forest AUC=0.86, LightGBM ise AUC=0.93 veriyor.

Gradient boosting hangi sırada eğitiliyor? İlk 100 ağaç temel örüntüleri yakalar (yüksek tutar + yurtdışı = riskli). Sonraki 100 ağaç ilk 100'ün kaçırdığı incelikleri öğrenir (gece + küçük tutar + yeni kart = farklı bir dolandırıcılık türü). 1.500. ağaca kadar çıktığında her ağaç bir öncekinin kalıntı hatasını azaltır. Sonuç hem hızlı (saniyede 50.000 işlem skorlanabilir) hem doğru.

Kod örnekleri
LightGBM · pratik kullanımPython
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, stratify=y)

train_set = lgb.Dataset(X_train, label=y_train)
val_set = lgb.Dataset(X_val, label=y_val, reference=train_set)

params = {
    "objective": "binary",
    "metric": "auc",
    "learning_rate": 0.05,
    "num_leaves": 63,
    "feature_fraction": 0.8,
    "bagging_fraction": 0.8,
    "bagging_freq": 5,
    "is_unbalance": True,         # dengesiz sınıf desteği
    "verbose": -1,
}

model = lgb.train(
    params,
    train_set,
    num_boost_round=2000,
    valid_sets=[val_set],
    callbacks=[lgb.early_stopping(50), lgb.log_evaluation(100)],
)

preds = model.predict(X_val)
print(f"AUC: {roc_auc_score(y_val, preds):.4f}")
Ne zaman kullan
  • Tabular veride en iyi doğruluğa ulaşmak istediğinde — çoğu zaman birinci seçim
  • Karmaşık, doğrusal olmayan ilişkiler ve etkileşimler varsa
  • Hem sınıflandırma hem regresyon için tek model arayışında
  • Özellik mühendisliği zaman alıyorsa — gradient boosting'in yüksek toleransı vardır
Ne zaman kullanma
  • Çok küçük veri (~1000 satır altı) — aşırı öğrenme riski yüksek; doğrusal model dene
  • Açıklanabilirlik tek başına yorum gerektiriyorsa (SHAP yardımcı olur ama tam kara kutu yorum değildir)
  • Görüntü, ses, metin gibi yapısal olmayan verilerde — derin öğrenme daha iyi
Sık yapılan hatalar

Erken durdurmayı unutmak

Sınırsız round eğitirsen aşırı öğrenirsin. early_stopping_rounds ile validation setteki ilerleme durduğunda eğitimi kes.

Aşırı öğrenmeyi yanlış kontrol etmek

max_depth, num_leaves, min_child_samples, regularization parametreleri (lambda, alpha) hep birlikte ayarlanır. Tek tek ayarlayıp bırakmak yerine bir tuner (Optuna) kullan.

Kategorik özellikleri yanlış işlemek

XGBoost ve LightGBM kategorik özellikleri ya one-hot ister ya da özel ayar gerektirir. CatBoost bunu otomatik yapar — eğer çok kategorik veri varsa CatBoost'u tercih et.