XGBoost, LightGBM ve CatBoost, tabular verilerde en popüler gradient boosting algoritmalarıdır. Bu algoritmaların başarısı büyük ölçüde doğru hiperparametre seçimine bağlıdır. Bu yazıda her bir algoritma için pratik ipuçları ve kontrol listesi sunuyoruz. Aşırı öğrenmeyi önlemek için L1 ve L2 regularizasyon hakkındaki yazımıza da göz atabilirsiniz.
Genel Hiperparametre Ayarlama Stratejileri
Hiperparametre ayarlamaya başlamadan önce şu prensipleri anlamak kritik:
- Erken Durdurma (Early Stopping): Doğrulama hatası durduğunda eğitimi sonlandır. Bu, en kritik hiperparametredir.
- Öğrenme Oranı ve Ağaç Sayısı: Düşük öğrenme oranı (0.01-0.1) genelde daha iyi genelleme yapar, ancak daha fazla ağaç gerektirir.
- Hiperparametre Arama Yöntemleri: Rastgele arama veya Bayes optimizasyonu genelde ızgaradan daha verimlidir. Grid Search vs Random Search vs Bayesian Optimization yazımızda detaylı karşılaştırma bulabilirsiniz.
XGBoost Kontrol Listesi
Temel Parametreler
n_estimators: Ağaç sayısı. Erken durdurma ile birlikte yüksek başlangıç değeri (1000-5000) kullan.learning_rate: 0.01-0.3 arası. Düşük değerler daha iyi genelleme sağlar.max_depth: 3-10 arası. Düşük tutun (3-6) aşırı öğrenmeyi azaltır.subsample: 0.6-1.0. Verinin fraksiyonu, düşük değerler varyansı azaltır.colsample_bytree: 0.6-1.0. Her ağaçta kullanılacak özellik oranı.
Düzenleme Parametreleri
gamma: Minimum kayıp azalması. 0-5 arası, ayarlaması zor, genelde 0 bırakılır.lambda(L2) vealpha(L1): 0-10 arası, aşırı öğrenme varsa artırın.
Pratik İpuçları
- Küçük veri setlerinde
tree_method='hist'kullanarak eğitimi hızlandırın. - Dengeli sınıflandırma için
scale_pos_weightparametresini ayarlayın. - Erken durdurma için
eval_metricveearly_stopping_rounds(10-50) kullanın.
LightGBM Kontrol Listesi
Temel Parametreler
num_leaves: Yaprak sayısı. Maksimum 2^max_depth, ancak daha düşük tutun (15-127).learning_rate: 0.01-0.1.n_estimators: Erken durdurma ile yüksek.max_depth: -1 (sınırsız) veya 5-15.subsample: 0.6-1.0.colsample_bytree: 0.6-1.0.
LightGBM’e Özgü Parametreler
min_child_samples: 10-100 arası. Düşük değerler aşırı öğrenmeye yol açabilir.min_child_weight: 0.001-0.1. Alternatif olarak kullanılabilir.lambda_l1velambda_l2: 0-10 arası.bagging_freqvebagging_fraction: Düzenli torbalama için kullanın.
Pratik İpuçları
- Kategorik özellikleri
categorical_featureile belirtin, LightGBM bunları otomatik işler. - Veri seti büyükse
num_leavesile başlayıp aşırı öğrenme olana kadar artırın. - Erken durdurma için
early_stopping_roundskullanın.
CatBoost Kontrol Listesi
Temel Parametreler
iterations: Ağaç sayısı (n_estimators).learning_rate: 0.01-0.3.depth: 2-6 arası. CatBoost derinlik konusunda hassastır.l2_leaf_reg: L2 düzenlemesi. 1-10 arası.
CatBoost’a Özgü Parametreler
border_count: Sayısal özelliklerin ayrıklaştırma sayısı. 32-255 arası.one_hot_max_size: Kategorik özellikler için one-hot eşik değeri. 2-10 arası.cat_features: Kategorik sütunların indekslerini açıkça belirtin.auto_class_weights: 'Balanced' veya 'SqrtBalanced' kullanarak sınıf dengesizliğini yönetin.
Pratik İpuçları
- CatBoost’un varsayılan parametreleri genelde iyidir; küçük verilerde varsayılanları deneyin.
- Kategorik özellikleri dönüştürmeden doğrudan kullanın.
- Erken durdurma:
early_stopping_roundsile birlikteeval_setkullanın.
Karşılaştırma: Hangi Algoritma Ne Zaman?
| Durum | Önerilen Algoritma |
|---|---|
| Düşük veri (<10K) | CatBoost (kategorik özellikler varsa) veya XGBoost |
| Yüksek veri (>100K) | LightGBM veya XGBoost (hist) |
| Çok sayıda kategorik özellik | CatBoost (native handling) |
| Yüksek doğruluk gereksinimi | XGBoost (ince ayar ile) |
| Eğitim hızı önemli | LightGBM (büyük veri için) |
Sık Yapılan Hatalar ve Çözümleri
- Hata 1: Aşırı öğrenmeyi erken durdurma ile önlememek – Her zaman erken durdurma kullanın.
- Hata 2: Öğrenme oranını çok yüksek ayarlamak – 0.3 üzeri genellikle dengesiz.
- Hata 3: Hiperparametre aramasında ızgara aramasını çok geniş tutmak – Bayes optimizasyonu veya rastgele arama daha verimli.
- Hata 4: Kategorik özellikleri one-hot encoding yapmak (özellikle high cardinality) – CatBoost doğrudan işler, LightGBM de index olarak kabul eder.
- Hata 5: Veri setini bölmeden hiperparametre ayarlamak – Her zaman doğrulama seti veya cv kullanın.
Bu kontrol listesi ve ipuçlarıyla gradient boosting modellerinizden en iyi performansı alabilirsiniz. Unutmayın: Her veri seti farklıdır; denemeler yaparak en iyi kombinasyonu bulun.
Sık Sorulan Sorular
XGBoost için en önemli hiperparametre nedir?
En önemli hiperparametreler öğrenme oranı (learning_rate) ve ağaç sayısıdır (n_estimators). Bunları erken durdurma ile birlikte ayarlamak genellikle en büyük etkiyi sağlar.
LightGBM'de num_leaves değeri nasıl ayarlanmalı?
num_leaves değeri, aşırı öğrenmeyi önlemek için 2^max_depth'ten küçük tutulmalıdır. Genellikle 15-127 arası önerilir. Veri seti büyüdükçe değer artırılabilir.
CatBoost kategorik özellikleri nasıl işler?
CatBoost, kategorik özellikleri hedef istatistikleri ve sıralı dönüşümlerle işler. Bu nedenle ön işleme gerek yoktur; sadece sütun indekslerini belirtmeniz yeterlidir.
Hiperparametre ayarlamada hangi arama yöntemi daha iyidir?
Rastgele arama veya Bayes optimizasyonu, ızgara aramasına göre daha verimlidir. Özellikle çok sayıda hiperparametre olduğunda rastgele arama iyi sonuç verir.






