XGBoost (Makine Öğrenimi Algoritması)

Gradyan artirma algoritmasinin yuksek performansli, duzenlilestirmeli ve hizli implementasyonu; tablo verisi icin standart ML araci.

XGBoost (eXtreme Gradient Boosting), gradyan artırma (gradient boosting) algoritmasının son derece optimize edilmiş, hızlı ve yüksek performanslı bir uygulamasıdır. Tianqi Chen tarafından geliştirilen ve 2016'da yayımlanan makaleyle kamuoyuna sunulan XGBoost, Kaggle ve gerçek dünya veri bilimi projelerinde tablo verisi (tabular data) görevlerinin standart aracı haline gelmiştir. Gradyan artırma, zayıf öğrenenleri (genellikle karar ağaçları) sırayla ekleyen bir topluluk yöntemidir. Her yeni ağaç, önceki ağaçların hatalarını (artıkları) düzeltmeye odaklanır. XGBoost bu prensibi alırken çeşitli özgün yenilikler ekler: ikinci derece Taylor açılımı kullanan kayıp fonksiyonu yaklaşımı, L1/L2 düzenlileştirme, sütun örneklemesi, paralel işlem ve eksik değer yönetimi. XGBoost'un en güçlü özelliklerinden biri düzenlileştirmedir: ağaç derinliğini ve yaprak ağırlıklarını cezalandırarak aşırı uyumu (overfitting) azaltır. Bu özellik, random forest ve standart gradient boosting üzerinde önemli avantaj sunar. Ayrıca eksik değerlere doğal bir yaklaşım sergiler: eğitim sırasında hangi yönde gitmenin daha iyi olduğunu öğrenir. LightGBM (Microsoft) ve CatBoost (Yandex), XGBoost'un başarısı üzerine geliştirilen alternatiflerdir. Büyük veri kümelerinde LightGBM genellikle daha hızlıdır; kategorik özellikler için CatBoost öne çıkabilir. XGBoost, sklearn API uyumluluğu ve geniş dil desteği (Python, R, Java, Scala) ile üretim ortamlarında yaygın tercih olmaya devam etmektedir. SHAP değerleri aracılığıyla tahmin yorumlanabilirliği de XGBoost ekosisteminde olgunlaşmış bir özelliktir; model kararları özellik bazında açıklanabilir. Pratik kullanımda early stopping, n_estimators ve learning_rate üçlüsü en kritik hiperparametrelerdir. Çapraz doğrulama ile birlikte kullanılan early stopping hem aşırı uyumu önler hem de en uygun ağaç sayısını otomatik belirler. GPU hızlandırma (tree_method='gpu_hist') büyük veri kümelerinde eğitim süresini önemli ölçüde kısaltır. Sklearn uyumlu API ile mevcut makine öğrenimi boru hatlarına kolayca entegre edilebilir; XGBClassifier ve XGBRegressor sınıfları standart fit/predict arayüzünü destekler. Özellik önemi (feature importance) ve SHAP değerleri birlikte kullanıldığında hangi değişkenlerin tahminleri ne yönde etkilediği net biçimde ortaya çıkar.

Gradient Boosting Prensibi

Boosting, zayif ogrenenleri ardisik ekleyerek guclu bir topluluk olusturma stratejisidir. Her yeni agac, onceki topluluk modelin tahmin hatalarini (pseudoresiduals) ogrenmeye odaklanir. Bu sekilde model adım adım iyilesir. XGBoost, kayip fonksiyonunun birinci ve ikinci turevlerini (gradient ve hessian) kullanarak hangi agaçın eklenmesi gerektigini cok daha hassas belirler.

XGBoost'un Fark Yaratan Ozellikleri

Duzenlilestirme: agac yaprak isimleri ve sayisi icin L1/L2 ceza terimleri overfitting'i azaltir. Sutun orneklemesi: her agac icin rastgele ozellik altkumesi secilir; cesitlilik artar. Agirlikli nicel veri: eksik degerler icin egitim sirasinda en iyi yol otomatik belirlenir. DART: dropout agaci, yuksek agirlıkli agaclarin baskinligini azaltmak icin dogrudan boosting uygular.

Hiperparametre Ayari

n_estimators: agac sayisi; daha fazlasi her zaman iyi degildir, erken durdurma (early stopping) ile optimize edilir. max_depth: agac derinligi; 3-10 araligı tipiktir; derin agaclar overfitting riskidir. learning_rate (eta): 0.01-0.3; kucuk deger daha saglam genelleme ancak daha fazla agac gerektirir. subsample ve colsample_bytree: gozlem ve ozellik orneklemesi orani. GridSearch, RandomSearch veya Optuna ile otomatik arama yapilabilir.

LightGBM ve CatBoost ile Karsilastirma

LightGBM, yaprak-bazli (leaf-wise) agac buyutme stratejisiyle buyuk veri kumelerinde cok daha hizlidir; bellegi verimli kullanir. CatBoost, kategorik degiskenleri one-hot encoding gerektirmeksizin target encoding benzeri bir yaklasimla isler. XGBoost ise en genis ekosisteme sahiptir: sklearn API uyumlulugu, SHAP entegrasyonu ve genis dil destegi.

🌲 XGBoost Hiperparametre Ayarlama Rehberi

  • check_circle learning_rate (eta): 0.01-0.3; düşük değer daha iyi genelleme ama daha fazla ağaç gerektirir
  • check_circle max_depth: 3-10; derin ağaçlar overfitting yapar, sığ ağaçlar underfitting yapar
  • check_circle subsample + colsample_bytree: 0.7-0.9; stokastik gradient boosting ile regularizasyon
  • check_circle min_child_weight: büyük değer muhafazakarlık; dengesiz sınıflar için artırılmalı
  • check_circle scale_pos_weight: dengesiz sınıflarda negatif/pozitif örnek oranını girerek sınıf ağırlığı

Sikca Sorulan Sorular

XGBoost derin ogrenmeye karsi mi kullanilmali? Tablo verisi icin XGBoost cogu zaman derin ogrenmeye esit veya daha iyi performans verir. Goruntu, ses veya metin icin derin ogrenme tercih edilir.

Erken durdurma nasil ayarlanir? eval_set ve early_stopping_rounds parametreleriyle dogrulama seti kullanilarak agac sayisi otomatik optimize edilir.

SHAP ile XGBoost yorumlamasi nasil yapilir? import shap; explainer = shap.TreeExplainer(model); shap_values = explainer.shap_values(X) ile ozellik onemi ve bireysel tahmin aciklaması elde edilir.

XGBoost kategorik veriyi nasil isler? Varsayilan olarak elle enkodlama gerektirir (OHE, label). Yeni surumler native categorik destekli; ancak CatBoost bu konuda daha gucludur.