🚀 Makine Öğrenmesi

XGBoost Nedir? Gradyan Artırma ile Tahmin

📅 5 Haziran 2026 ⏱ 9 dk okuma ✍ FM Analitik

XGBoost (Extreme Gradient Boosting), 2016 yılında Tianqi Chen ve Carlos Guestrin tarafından geliştirilen, yapısal veri problemlerinde olağanüstü performans sergileyen bir makine öğrenmesi algoritmasıdır. Kaggle yarışmalarında elde ettiği başarılarla dünya genelinde büyük ilgi toplayan XGBoost, regularizasyon desteği ve paralel hesaplama yeteneğiyle klasik gradient boosting yöntemlerinin ötesine geçer.

Boosting ve Bagging Arasındaki Fark

Bagging (örn. Random Forest), modelleri paralel olarak ve birbirinden bağımsız biçimde eğitip tahminleri ortalar. Temel amacı varyansı düşürmektir. Boosting ise modelleri sıralı olarak eğitir; her yeni model, bir öncekinin hatalarını düzeltmeye odaklanır. Bu sayede hem varyans hem de yanlılık (bias) azalır.

Bagging'de örnekler eşit ağırlıkla seçilirken, boosting'de önceki modelin yanlış tahmin ettiği örneklere daha fazla ağırlık verilir. Bu iteratif hata düzeltme mekanizması boosting'i çok güçlü kılmakla birlikte overfitting riskini de beraberinde getirir.

Gradient Boosting Mantığı

Gradient Boosting, kaybı minimize etmek için artık hataları (residuals) değil, doğrudan kayıp fonksiyonunun negatif gradyanını öğrenir. Her iterasyonda yeni bir zayıf öğrenici (genellikle sığ karar ağacı), mevcut modelin gradyanını tahmin edecek şekilde eğitilir ve modele küçük bir adım büyüklüğüyle (learning rate) eklenir. Bu süreç, kayıp fonksiyonu üzerinde bir gradyan inişi gerçekleştirir.

XGBoost'un Farkı

XGBoost, klasik Gradient Boosting'e kıyasla birçok kritik iyileştirme sunar:

  • Regularizasyon (L1 ve L2): Ağaç yapraklarının ağırlıklarını cezalandırarak overfitting'i önler. Standart GBDT'de bu özellik yoktur.
  • Paralel hesaplama: Bölünme noktalarını bulmak için çok çekirdekli işlemcilerden yararlanır, eğitim süresini ciddi ölçüde kısaltır.
  • Sütun örneklemesi: Random Forest gibi her ağaç ya da her seviye için rastgele özellik seçimi yaparak overfitting'i azaltır.
  • Eksik değer işleme: Eksik değerleri otomatik olarak en iyi yönde yönlendirir, ön işleme gereksinimini azaltır.
  • Budama stratejisi: "max_depth first" yaklaşımıyla önce tam ağacı büyütür, sonra kazanç sağlamayan yaprakları budayarak gereksiz karmaşıklığı önler.

İpucu: XGBoost'ta learning_rate ile n_estimators birlikte ayarlanmalıdır. Düşük learning_rate (örn. 0.05) daha fazla ağaç (n_estimators) gerektirirken genellikle daha iyi genelleme sağlar. Early stopping ile bu dengeyi otomatik bulmak mümkündür.

Önemli Hiperparametreler

HiperparametreAçıklamaTipik Aralık
learning_rate (eta)Her ağacın katkı oranı0.01 – 0.3
n_estimatorsToplam ağaç sayısı100 – 1000+
max_depthAğaç derinliği3 – 10
subsampleSatır örnekleme oranı0.5 – 1.0
colsample_bytreeSütun örnekleme oranı0.5 – 1.0
reg_alpha (L1)Yaprak ağırlığı L1 cezası0 – 1
reg_lambda (L2)Yaprak ağırlığı L2 cezası1 – 10
min_child_weightYaprak oluşturmak için gereken min. örneklem1 – 10

Erken Durdurma (Early Stopping)

XGBoost'ta erken durdurma, doğrulama kümesindeki performans belirli sayıda tur iyileşmediğinde eğitimi otomatik olarak durdurur. Bu sayede hem fazla ağaç eğitmekten kaynaklanan overfitting önlenir hem de gereksiz hesaplama maliyeti ortadan kalkar. early_stopping_rounds=50 parametresi ile son 50 turda iyileşme yoksa eğitim durur ve en iyi tur sayısı kaydedilir.

Python ile XGBoost Kullanımı

import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np

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

model = xgb.XGBRegressor(
    n_estimators=1000,
    learning_rate=0.05,
    max_depth=6,
    subsample=0.8,
    colsample_bytree=0.8,
    reg_alpha=0.1,
    reg_lambda=1.0,
    early_stopping_rounds=50,
    eval_metric='rmse',
    random_state=42
)

model.fit(
    X_train, y_train,
    eval_set=[(X_val, y_val)],
    verbose=100
)

preds = model.predict(X_val)
rmse = np.sqrt(mean_squared_error(y_val, preds))
print(f"Doğrulama RMSE: {rmse:.4f}")
print(f"En iyi tur: {model.best_iteration}")

Feature Importance ve Kaggle'daki Popülerliği

XGBoost, üç farklı feature importance türü sunar: weight (özelliğin kaç kez bölünme kriteri olarak kullanıldığı), gain (özelliğin getirdiği ortalama kazanç) ve cover (özelliğin kapsadığı ortalama örnek sayısı). Gain, genellikle en bilgilendirici ölçüttür.

XGBoost, 2015–2020 yılları arasında Kaggle'daki yapısal veri yarışmalarının büyük çoğunluğunu kazanan çözümlerin temel bileşeni olmuştur. Günümüzde LightGBM ve CatBoost gibi alternatifler de popülerlik kazanmış olsa da XGBoost sektörde standart referans noktası olmaya devam etmektedir.

Kaynaklar

  • Chen, T., & Guestrin, C. (2016). XGBoost: A Scalable Tree Boosting System. Proceedings of the 22nd ACM SIGKDD, 785–794.
  • Friedman, J. H. (2001). Greedy function approximation: A gradient boosting machine. Annals of Statistics, 29(5), 1189–1232.

XGBoost ile Tahmin Modeli Kurmak İster misiniz?

Verinize özel XGBoost modeli tasarımı, hiperparametre optimizasyonu ve model yorumlama hizmeti için bizimle iletişime geçin.

Ücretsiz Danışmanlık Al