Ana içeriğe atla

Python - Bagged Trees (Regresyon)

Bagging, “bootstrap aggregation” ifadesinin kısaltılmışıdır, yani yeniden örneklem yöntemi ile elde edilen ağaçların bir araya getirilmesi anlamına gelir. Temeli boostrap yöntemi ile oluşturulan birden fazla karar ağacının ürettiği tahminlerin biraraya getirilerek değerlendirilmesine dayanır.

Bu yöntemde örnek veri seti içerisinden yerine koyacak şekilde tekrar tekrar örnekler çekilerek yeni ağaçlar oluşturulur ve bu ağaçlardan ortaya bir topluluk çıkar. Ortaya çıkan ağaçların hepsi modelleme için kullanılarak her birisine fikri sorulur. Her birisinin fikri değerlendirilerek bir oylama/ortalama fikir alınarak tahmin işleminin sonucu tek bir ifade olarak ortaya sunulur.

Bu çabanın sonucunun bir başka şekilde ifadesi: gözlem ve değişken bazında rassallık sağlanır, aşırı öğrenme problemi hafifler ve tahmin başarısı artar.


Yani ben modele koyacağım veri için alt kümeler oluşturuyorum. Sonra bu alt kümelerin her biri için ağaç oluşturuyorum ve ağaçların her birisi için model kuruyorum. Bunun sonrasında her ağaçtan çıkan sonuçların ortalamasını alıyorum.



Bagged Trees analizi için yine “Hitters” verimi kullanacağım. İlk olarak veri setimi hazırlıyorum ve her zamanki gibi test-train ayrımını yapıyorum. Şimdi model kurma aşamasına geçebilirim. Modelimi “BaggingRegressor” fonksiyonu ile kuruyorum ve fit ediyorum.

Modelde ilk olarak kaç tane ağaç oluşturulmuş ona bakıyorum. Model bana bu veri seti için 10 tane ağaç oluşturmuş. Daha sonra 10 adet ağacın özelliklerini getiriyorum ve inceliyorum. 


Bunun sonrasında her bir ağaçta kaç tane örneklem var görmek istiyorum. Burada ağaçlara konu olan örneklemleri ve bunların indekslerini görüyorum. Daha sonra her bir ağacın bağımsız değişkenlerini getir diyorum ve ağaçlara konu olan değişkenlere bir göz atıyorum. Tahmin kısmına geçmeden önce de rastgele seçtiğim ağaçların özelliklerini inceliyorum.


Şimdi tahmin kısmına geçebilirim. Burada her analizde yaptığım gibi test veri setimi tahmin et dedikten sonra hata hesaplaması yapıyorum. Diğer analizlerden farklı olarak burada her bir ağaç özelinde hata hesaplaması yapabilirim. Bunun için 2. Ve 7. Ağaçlara test setimi tahmin ettirip hatalarını karşıaştırıyorum.


Son olarak modelin tuning kısmına geldim. Öncelikle modelimi tekrar çağırıyorum. Modele konu olan ağaç sayısını 2 ile 20 arasında al diyorum. Bunun sonucunda tuning işlemi için 10 katlı cross validation yap dedikten sonra modeli fit ediyorum.



Modele ağaç sayısının aralığını ben söylemiştim. Şimdi ise olması gereken en optimum ağaç sayısını hesapla diyorum ve sonuç 11 çıkıyor. Yani modele uygun en uygun ağaç sayım 11. Bu sebeple, 11 ağaç sayısı üzerinden modelimi tekrar kurup tune ediyorum. Fit ettiğim modelde test setimi tahmin et diyorum ve test hatama bakarak analizimi sonuçlandırıyorum.


Yorumlar