Neden ilk adresiniz XGBoost?

Source: Deep Learning on Medium


Udemy’de Senior Data Scientist olarak calisiyorum. Gorevim, topladigimiz verileri kullanarak ML modelleri egitmek ve bu modelleri yine “Data Product” olarak websitemizde ve mobil uygulamamizda kullanmak.

Cok Uzun Yazi Okuyamam (CUYO) diyenler icin:

CUYO: “Eger elinizdeki veri, kucuk-orta buyuklukte ve tablo verisi ise adresiniz decision-tree temelli algoritmalar. Bu algoritmalarin yukselen yildizi ise XGBoost.”

XGBoost Nedir?

XGBoost, decison-tree (karar-agaci) temelli ve gradient-boosting (egim-artirmali) bir ML sistemi. Eger verileriniz, resim/yazi/ses gibi yapisal olmayan veriler ise yapay sinir aglari ile derin ogrenme dogru secim olacaktir.

Ancak, eger elinizdeki veri cok fazla degilse (muhtemelen degil ama size oyle geliyor) karar-agaci temelli algoritmalarla baslamanizi oneririm. Karar-agaci temelli algoritmalar zaman icerisinde cok evrildi. Bu evrimi asagidaki akista daha rahat gorebilirsiniz.

Karar-agaci algoritmalarinin XGBoost’a Evrimi [1]

XGBoost, ilk olarak Washington Universitesi’nde iki arastirmaci olan Tianqi Chen ve Carlos Guestrin tarafindan SIGKDD 2016 konferansinda makale olarak sunulmustu ve ML dunyasinda cok ses getirmisti. Sunulmasindan sonra sadece akademik anlamda degil, Kaggle yarismalarinin da yildizi haline gelmis ve endustride uygulama bulmaya baslamisti. Bu sayede, bugun bir cok data scientist tarafindan katkida bulunulan bir acik-kaynakli bir reposu ve guclu bir komunitesi var (bkz. GitHub’da 350+ katilimci and 3,600+ commit).

Biz de Udemy’nin kurs siralamasi icin ML modelini olusturuken, Gradient Boosting temelli karar-agaclarini tercih ediyoruz. Bu modeller, derin sinir aglari gibi buyuk ve kompleks olmadiklari icin real-time kullanilabiliyor ve tablo veriler uzerinden egitmek cok daha hizli ve kolay.


XGBoost’un Neden Iyi Calisiyor?

Aslinda hem XGBoost hem de Gradient-Boosting Makinalar (GBMler) topluluk temelli zayif ogrenenler kullaniyor, zayif ogrenenler gradient-descent metodu ile destekleniyor.

XGBoost’un GBM’e gore avantaji, hem sistem (donanim ve yazilim) optimizasyonu hem de algoritmik gelistirmeler.

XGBoost’un standart GBM’lere gore avantajlari [1]

Sistem Optimizasyonlari

  1. Parallel Calistirma: XGBoost, karar agaclarini olustururken paralelizasyon yaparak cok daha hizli olusturulmasini sagliyor. Bunu yapabilmesinin altinda temel-ogrenenleri (base-learners) olustururken, ic ve dis donguler arasinda gecis yapabiliyor olmasi. Normalde dis donguler, karar-agacinin yapraklarini olustururken ic donguler oznitelikleri hesaplar. Ancak, ic donguler bitmeden dis donguler tamamlanamayacagi icin yani oznitelikler hesaplanmadan agacin yapraklari olusmayacagi icin paralelizasyon sinirlanir. XGBoost, ic ve dis dongulere ayrilan hesaplama gucunu degistirerek runtime hizlandiriyor ve paralelizasyon overhead’ini oldukca dusuruyor.
  2. Agac-Budama: GBM’lerde agac dallarini ayirirken negatif-kayip kriterine gore ayirmayi durdurur. XGBoost, bunun aksine en basindan max_depth parametresi ile agacin derinligini belirleyerek, eger agac asagi yonde fazla ilerledi ise geriye dogru budama yapar. XGBoost derinlige oncelik verdigi icin karmasikligi, dolayisiyla hesaplama performansini onemli olcude artirir.
  3. Donanim Optimizasyonu: XGBoost, en basta gelistirilirken donanim kaynaklarini daha iyi kullanmak uzere tasarlanmistir. Ornegin, her ‘thread’ kendi icinde bir buffer ve bu bufferda egim istatistiklerini (gradient statistics) tutarak, onbellegin doluluguu goz onunde bulunduruyor. Bunun disinda, “out-of-core” hesaplama gibi iyilestirmeler sayesinde disk alanini optimize ederek daha buyuk verileri bellege sigdirabiliyor.

Algoritmik Iyilestirmeler

  1. Regularizasyon: Hem LASSO hem de Ridge regularizasyonu kullanarak over-fitting engellenebiliyor.
  2. Seyreklik Uyumu: Gercek hayatta veri setleri maalesef bir cok eksik deger bulunduruyor. XGBoost, zayif-ogrenenler ile kayip degeri egitim kaybina bakarak en dogru sekilde ogrenebiliyor. Ya da bazen, veri seti belirli bir duzen icerisinde eksik degerlere sahip oluyor (sensor/iletisim hatalari vb.) bu durumlarda XGBoost durumu toparlayabiliyor.
  3. Agirlikli Ceyrek Cizim: XGBoost’un en buyuk avantajlarindan biri agaclara ayirirken en dogru noktadan ayirabilmek icin veri setindeki gozlem noktalarini agirliklandirarak kullaniyor olmasi. Bu konuda daha fazla bilgi sahibi olmak isterseniz: Distributed Weighted Quantile Sketch
  4. Capraz-dogrulama: XGBoost, kendi icinde cross-validation (cv) uygulamasi ile geliyor yani disaridan scikit-learn vs. kullanarak cv yapmaniza gerek yok. Ayrica her calistirmada kac iterasyon yapacagini belirtmenize de gerek yok.

Kaynaklar

  1. Vishal Morde