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ı
- İ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.
- Belirli bir kayıp fonksiyonuna göre gradyanlar ve Hess matrisleri hesaplanarak her bir gözlem içi kayıp belirlenir.
- 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.
- 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.
- Her ağaç eklemesinden önce, regülarizasyon teknikleri uygulanır ve tahminlerin bir kısmı alınarak (shrinkage) modelin dengesi sağlanır.
- Önceki tahminlerden yola çıkarak yeni bir ağaç oluşturulur.
- Belirli bir iterasyon veya tolerans değerine kadar bu işlemler tekrarlanır.
- En iyi model seçilir.
Genel Parametreler
Parametre | Type | Default | Açıklama |
booster | “gbtree”, “dart”, “gblinear” | “gbtree” | Her iterasyonda çalıştırılacak model türü. |
verbosity | 0 (silent), 1(warning), 2 (info), 3 (debug) | 1 | Çıktı |
nthread | int | mevcut 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
Parametre | Type | Default | Açıklama |
eta / learning_rate | [0-1] | 0.3 | Overfittingi ö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] | 1 | Kayı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] | 3 | Overfittingi ö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-4 | Rastgele ö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-4 | Sütunların alt örnekleme oranı. |
lambda / reg_alpha | (0, 1] | “auto” | L2 regülasyon düzenlemesi. |
alpha / reg_alpha | (0, 1] | 1 | L1 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_weight | int | 1 | Pozitif-negatif ağırlık dengesi. Dengesiz veri setlerinde kullanışlıdır. |
max_leaves | int | 0 | Eklenecek maksimum düğüm sayısı. |
Problem Türü Parametreleri
Parametre | Type | Default | Açı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. |
seed | int | 0 | Rastgelelik. |