XGBoost

2016 yılında Tianqi Chen ve Carlos Guestrin’in yayınladığı “XGBoost: A Scalable Tree Boosting System” adlı makalede tanıtılmıştır. Extreme Gradient Boosting, ağaç tabanlı bir algoritmadır. Gradient Boosting yöntemini kullanır. XGBoost, gradient boosting’in bazı düzenlileştirme terimleri ile optimize edilmiş yüksek performans gösterebilen bir halidir. XGBoost boş değerle çalışabilir. Modeli eğitirken bu boş değerleri farklı dallara yerleştirerek en yüksek kazanç skorunu bulmaya amaçlar. Böylece boş değerlerin etkisini en aza indirir. XGBoost, histogram yöntemini de kullanılır. Fakat histogram yöntemindeki sıralama işleminden dolayı oluşan yavaşlığı çözmek için ”Sketches” adlı yöntemi kullanır. Ağırlıkları hesaplayarak veri setini parçalara böler.

Çalışma Adımları

  1. İlk olarak başlangıç tahminleri (initial prediction) yapılır. İlk tahminler, hedef değişkenin ortalaması veya bir sabit değerle yapılır. Bu tahminler varsayılan olarak 0.5’tir. Bu, daha sonra modelin hatalarını azaltmak için kullanılır.
  2. Belirli bir kayıp fonksiyonuna göre gradyanlar ve Hess matrisleri hesaplanarak her bir gözlem içi kayıp belirlenir.
  3. Yapılan tahminlere dayanarak bir karar ağacı oluşturulur. Bu ağaç, belirli bir hedef değişkenin tahminini iyileştirmek için özellikleri bölerek veri kümesini böler.
  4. Ağaçların kayıp fonksiyonunu minimize etmek için ağaçların yapısı ve düğümlerindeki bölünmeleri ayarlanarak ağaçlar optimize edilir.
  5. Her ağaç eklemesinden önce, regülarizasyon teknikleri uygulanır ve tahminlerin bir kısmı alınarak (shrinkage) modelin dengesi sağlanır.
  6. Önceki tahminlerden yola çıkarak yeni bir ağaç oluşturulur.
  7. Belirli bir iterasyon veya tolerans değerine kadar bu işlemler tekrarlanır.
  8. En iyi model seçilir.

Genel Parametreler

ParametreTypeDefaultAçıklama
booster“gbtree”, “dart”, “gblinear”“gbtree”Her iterasyonda çalıştırılacak model türü.
verbosity0 (silent), 1(warning), 2 (info), 3 (debug)1Çıktı
nthreadintmevcut maksimum iş parçacığı sayısıKullanılan iş parçacığı sayısıdır. Eğer sistemdeki boşta olan iş parçacığı sayısı ile çalışmak istenirse değer girilmez, algoritma otomatik olarak ayarlar.

Booster Parametreler

ParametreTypeDefaultAçıklama
eta / learning_rate[0-1]0.3Overfittingi önlemek için kullanılan adım boyutu küçültmesidir. Genelde 0.01-0.2 arasında bir değer verilir.
gamma / min_split_loss[0, inf]1Kayıp fonksiyonunda pozitif bir azaltma sağlandığında bölünür.
max_depth[0, inf]mevcut maksimum iş parçacığı sayısıOverfittingi önlemek için kullanılır. Yüksek derinlik, modeli daha karmaşık hale getirerek overfittingi arttıracaktır. Derinlik arttıkça bellek kullanımı artar. CV kullanarak ayarlanmalıdır. Genelde 3-10 arasında değer verilir.
min_child_weight[0, inf]3Overfittingi önlemek için kullanılır. Yüksek değerler, modelin örneğe özgü olabilecek belirli özellikleri öğrenmesini engelleyebilir. Çok yüksek değerler underfittinge yol açabilir. CV kullanarak ayarlanmalıdır.
max_delta_step[0, inf]1e-4Rastgele örneklenecek gözlemlerin oranını belirtir. 0.5 olarak ayarlanırsa, eğitim verilerinin yarısını örnekleyeceği anlamına gelir, bu da overfittingi önler. Düşük olması overfittingi önler, çok küçük olması underfittinge yol açabilir. Gnenelde 0.5-1 arasında değer verilir.
colsample_bytree, colsample_by_level, colsample_by_node[0, inf]1e-4Sütunların alt örnekleme oranı.
lambda / reg_alpha(0, 1]“auto”L2 regülasyon düzenlemesi.
alpha / reg_alpha(0, 1]1L1 regülasyon düzenlemesi.
tree_method“auto”, “exact”, “approx”, “hist”, “gpu_hist”“auto”Ağaç oluşturma algoritması. “auto”‘da kullanılması önerilir. Küçük-orta veri setlerinde “exact”, büyük veri setlerinde “approx” kullanılmalıdır.
scale_pos_weightint1Pozitif-negatif ağırlık dengesi. Dengesiz veri setlerinde kullanışlıdır.
max_leavesint0Eklenecek maksimum düğüm sayısı.

Problem Türü Parametreleri

ParametreTypeDefaultAçıklama
objective“reg:squarederror”, “reg:squarederror”, “reg:logistic”, “binary:logistic”, “binary:hinge”, “multi:softmax”, “multi:softprob”“reg:squarederror”Minimize edilecek kayıp fonksiyonu.
eval_metric“rmse”, “mae”, “logloss”, “error”, “merror”, “mlogloss”, “auc”, “aucpr”regresyon için = “rmse”,
sınflandırma için = “error”,
sıralama için = “mae”
Doğrulama verileri için kullanılacak metrik.
seedint0Rastgelelik.