Gradient Boosting vs Adaboost
Boosting yöntemleri karar ağaçlarını yeniden havalı hale getirdi. Burada, gradient boosting ve adaboost karar ağacı temelli makine öğrenimi modelleri arasında en yaygın boosting teknikleridir. Bu yazımızda bu iki tekniği karşılaştırarak benzeyen ve farklı oldukları yönleri tartışacağız.
İsimlendirmeler
Gradient boosting’de gradient descent algoritması kullanılarak sonuçlar boost edilir yani iyileştirilir. İsmi bu ikisinin bir araya getirilmesinden oluşturulmuştur.
Adaboost ise adaptif boosting’in kısaltılmış halidir.
Boosting
Her iki yöntemde de çok sayıda karar ağacı oluşturulur. Oluşturulan karar ağaçları ise ikisinde de ardışık ve bağımlıdır. Yani bir karar ağacı oluşturulur, ikincisi ilkinin hatalarıyla, üçüncüsü ise ikinci ağacın hataları göz önüne alınarak oluşturulur.
Gradient boosting’in iyileştirme yöntemi bir sonraki turda veri setindeki hedef değerlerin tahmin ve gerçek değerin farkı ile güncellenmesine dayanır. Bu fark mean squared error’ün türevinden gelmektedir.
Adaboost da benzer bir kurgu uygulamaktadır. Bir karar ağacı inşa edilir ve doğru bilinen örneklemlerin hedef değerleri küçültülürken hatalı bilinenlerin değerleri arttırılır. Böylelikle bir sonraki turda hata yapılanların değerliği artmış olur.
Ağırlıklar
Gradient boosting her ağacı eşit ağırlık ile üretir. Nihai karara varırken tüm bu ağaçların tahminlerini toplarız.
Öte yandan adaboost her bir ağaca bir ağırlık atar. Dolayısıyla her ağaç ağırlığı ölçüsünde tahmine katkıda bulunur.
Karar ağacı algoritması
Sınıflandırma veya regresyon probleminde uygulanacak olmasından bağımsız olarak her iki yöntem de regresyon ağacı algoritması kullanılır. Çünkü yapılan hatanın nümerik bir değerinin olması için nümerik olarak tahmin edilmesi gerekmektedir. Dolayısıyla sınıflandırma veri setlerini de önce regresyon veri setine dönüştürmeleri gerekmektedir.
Ağaç derinliği
Adaboost tek seviyeli bir karar ağacı kullanır. Tek bir eğer ve ya da (if-else) ifadesinden oluşan bir program gibi de düşünebilirsiniz. Her tekil ağacın %51 oranında başarı elde etmesi yeterli olacaktır.
Gradient boosting ise daha derin karar ağaçlarını kullanır. Kural olarak bir sınırı bulunmamakla birlikte örneğin lightgbm ve xgboost varsayılan konfigürasyonlarında maksimum 5 derinlikli ağaçlar oluşturur. LightGBM ve XGBoost kütüphanelerini karşılaştırdığımız bu yazıya da bir göz atmanızı tavsiye ederiz.
Lineerlik
Adaboost ile üretilen ağaçlar tek seviyeli oldukları için lineerdirler ancak çok sayıda lineer model bir araya gelerek nihai karar verilir ve buda non-lineer kararlar vermemizi sağlar.
Gradient boosting ise her bir tekil ağacı non-lineer olarak ürettiğinden nihai karar yine non-lineer bir model ile verilecektir.
Kullanım ve Yaygınlık
Gradient boosting, Kaggle gibi günlük veri bilimi yarışmalarında sıklıkla kullanılmakta hatta sıklıkla derin öğrenmeden bile daha iyi performans göstermektedir. Makine öğrenmesi savaşları yazımıza bir göz atmanızı tavsiye ederiz.
Öte yandan adaboost daha eski bir yöntem olup kullanımı günümüzde yaygın değildir. Yine de OpenCV içerisindeki haar cascade yöntemi ile yüz ve göz algılama işlemlerinin adaboost kullanılarak yapıldıklarını biliyoruz.
Sonuç
Bu yazımıda karar ağacı tabalı makine öğrenimi modelleri arasında iki önemli boosting tekniğinden bahsettik. Boosting yöntemlerini büyük kayaların hareket ettirilmesi gibi düşünebiliriz. Tek bir işçi devasa bir kayayı hareket ettiremezken çok sayıda zayıf işçi bir araya gelerek devasa kayaları yerinden oynatabilirler.
Bu yazı Gradient Boosting ve Adaboost yazısından Türkçe’ye çevrilmiştir.