XGBoost ve LightGBM klasik gradient boosting'den hangi açılardan farklıdır? En önemli hiperparametreleri nelerdir?
Cevap
XGBoost ve LightGBM, gradient boosting'in hızlı, ölçeklenebilir ve regularize edilmiş uygulamalarıdır. Temel fikir aynıdır, fark mühendislik ve optimizasyon detaylarındadır.
XGBoost'un yenilikleri
- İkinci dereceden yaklaşım: Loss'un hem gradyanını hem Hessian'ını (Newton adımı) kullanır.
- Regularize edilmiş amaç fonksiyonu: Yaprak sayısı (
gamma) ve yaprak ağırlıkları (lambda,alpha) cezalandırılır. - Eksik değer yönetimi: Her split'te eksik değerler için en iyi yönü kendisi öğrenir.
- Histogram tabanlı split (
tree_method="hist"), GPU desteği, column subsampling.
LightGBM'in farkları
- Leaf-wise büyüme: En çok loss azaltan yaprağı böler (XGBoost varsayılanı level-wise). Daha hızlı ve doğru, ama küçük veride overfit'e açık.
- GOSS: Küçük gradyanlı örneklerin bir kısmını atarak hızlanır.
- EFB: Seyrek, birbirini dışlayan özellikleri paketler.
- Kategorik özellikleri doğrudan destekler.
CatBoost ise ordered boosting ve güçlü kategorik özellik desteğiyle öne çıkar.
Önemli hiperparametreler
| Parametre | Etkisi |
|---|---|
| n_estimators + learning_rate | Düşük LR + çok ağaç + early stopping en güvenli yol |
| max_depth / num_leaves | Model karmaşıklığı, LightGBM'de num_leaves asıl kontrol |
| min_child_weight / min_data_in_leaf | Küçük yaprakları engeller, overfitting'i azaltır |
| subsample, colsample_bytree | Satır/sütun örnekleme, variance azaltır |
| reg_lambda, reg_alpha | L2 / L1 regularization |
| scale_pos_weight | Dengesiz sınıflar |
import xgboost as xgb
model = xgb.XGBClassifier(n_estimators=2000, learning_rate=0.03, max_depth=6,
subsample=0.8, colsample_bytree=0.8,
early_stopping_rounds=100, eval_metric="aucpr")
model.fit(X_tr, y_tr, eval_set=[(X_va, y_va)], verbose=False)Not: XGBoost 1.6'dan itibaren early_stopping_rounds (ve eval_metric) constructor'a verilir. fit() parametresi olarak eski kullanım önce deprecated edildi, güncel sürümlerde ise kaldırıldı.
İlgili Makine Öğrenmesi soruları
- Hiperparametre optimizasyonunu nasıl yaparsınız? Grid search, random search ve Bayesian optimization'ı karşılaştırın.
- Feature scaling nedir? Standardization ile normalization arasındaki fark nedir ve hangi modeller ölçeklendirme gerektirir?
- PCA (Principal Component Analysis) nasıl çalışır? Ne zaman kullanılır, ne zaman kullanılmamalıdır?
- NumPy kullanarak k-means algoritmasını sıfırdan yazın. k değerini nasıl seçersiniz ve algoritmanın sınırlamaları nelerdir?
- Random Forest ile Gradient Boosting arasındaki fark nedir? Bagging ve boosting'i karşılaştırın.
- Lineer regresyon ile lojistik regresyon arasındaki fark nedir? Lojistik regresyonda neden MSE yerine log-loss kullanılır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.