R'de torbalama nasıl yapılır (adım adım)


Belirli bir veri kümesi için karar ağacı oluşturduğumuzda, modeli oluşturmak için yalnızca tek bir eğitim veri kümesi kullanırız.

Bununla birlikte, tek bir karar ağacı kullanmanın dezavantajı, yüksek varyanslara maruz kalma eğiliminde olmasıdır. Yani veri setini ikiye bölüp karar ağacını her iki yarıya da uygularsak sonuçlar çok farklı olabilir.

Tek bir karar ağacının varyansını azaltmak için kullanabileceğimiz yöntemlerden biri, bazen önyükleme toplama olarak da adlandırılan torbalama olarak bilinir.

Torbalama şu şekilde çalışır:

1. Orijinal veri kümesinden b önyüklemeli örnek alın.

2. Her önyükleme örneği için bir karar ağacı oluşturun.

3. Nihai bir model elde etmek için her ağaçtan elde edilen tahminlerin ortalamasını alın.

Yüzlerce, hatta binlerce bireysel karar ağacı oluşturarak ve tüm ağaçların ortalama tahminlerini alarak, genellikle tek bir karar ağacıyla karşılaştırıldığında çok daha düşük bir test hata oranı üreten uygun bir çanta modeli elde ederiz.

Bu eğitimde, R’de paketli bir modelin nasıl oluşturulacağına ilişkin adım adım bir örnek sunulmaktadır.

Adım 1: Gerekli paketleri yükleyin

Öncelikle bu örnek için gerekli paketleri yükleyeceğiz:

 library (dplyr) #for data wrangling
library (e1071) #for calculating variable importance
library (caret) #for general model fitting
library (rpart) #for fitting decision trees
library (ipred) #for fitting bagged decision trees

Adım 2: Torbalı modeli takın

Bu örnek için, New York City’deki 153 ayrı gün boyunca hava kalitesi ölçümlerini içeren, Hava Kalitesi adı verilen yerleşik bir R veri kümesini kullanacağız.

 #view structure of air quality dataset
str(airquality)

'data.frame': 153 obs. of 6 variables:
 $ Ozone: int 41 36 12 18 NA 28 23 19 8 NA ...
 $Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...
 $ Wind: num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
 $ Temp: int 67 72 74 62 56 66 65 59 61 69 ...
 $Month: int 5 5 5 5 5 5 5 5 5 5 ...
 $Day: int 1 2 3 4 5 6 7 8 9 10 ...

Aşağıdaki kod, ipred kütüphanesindeki bagging() işlevini kullanarak torbalanmış bir modelin R’ye nasıl sığdırılacağını gösterir.

 #make this example reproducible
set.seed(1)

#fit the bagged model
bag <- bagging(
  formula = Ozone ~ .,
  data = airquality,
  nbagg = 150 ,   
  coob = TRUE ,
  control = rpart. control (minsplit = 2 , cp = 0 )
)

#display fitted bagged model
bag

Bagging regression trees with 150 bootstrap replications 

Call: bagging.data.frame(formula = Ozone ~ ., data = airquality, nbagg = 150, 
    coob = TRUE, control = rpart.control(minsplit = 2, cp = 0))

Out-of-bag estimate of root mean squared error: 17.4973

Torbalı modeli oluşturmak için 150 önyüklemeli örnek kullanmayı seçtiğimizi ve tahmini torba dışı hatasını elde etmek için coob’un DOĞRU olduğunu belirttiğimizi unutmayın.

Ayrıca rpart.control() işlevinde aşağıdaki özellikleri de kullandık:

  • minsplit = 2: Bu, modele bölmek için bir düğümde yalnızca 2 gözlem gerektirmesini söyler.
  • cp = 0 . Bu karmaşıklık parametresidir. Bunu 0’a ayarlayarak, modelin bölme işlemini gerçekleştirmek için genel uyumu herhangi bir şekilde iyileştirebilmesine gerek duymuyoruz.

Esasen, bu iki argüman bireysel ağaçların son derece derin büyümesine izin vererek varyansı yüksek ancak önyargısı düşük ağaçlara yol açar. Daha sonra, torbalama uyguladığımızda, yanlılığı düşük tutarken son modelin varyansını azaltabiliyoruz.

Model sonuçlarından tahmin edilen çanta dışı RMSE’nin 17,4973 olduğunu görebiliyoruz. Bu, ozon için öngörülen değer ile gözlemlenen gerçek değer arasındaki ortalama farktır.

3. Adım: Tahmincilerin önemini gözünüzde canlandırın

Torbalanmış modeller, bireysel karar ağaçlarından daha doğru tahminler sağlama eğiliminde olsa da, takılan torbalanmış modellerin sonuçlarını yorumlamak ve görselleştirmek zordur.

Bununla birlikte, tüm ağaçlar üzerinden ortalaması alınan belirli bir öngörücü üzerindeki dağılıma bağlı olarak RSS’deki toplam azalmayı (artık kareler toplamı) hesaplayarak öngörücü değişkenlerin önemini görselleştirebiliriz. Değer ne kadar büyük olursa, tahmin edici o kadar önemli olur.

Aşağıdaki kod, şapka kitaplığından varImp() işlevini kullanarak, takılı çanta modeli için değişken önem grafiğinin nasıl oluşturulacağını gösterir:

 #calculate variable importance
VI <- data.frame(var= names (airquality[,-1]), imp= varImp (bag))

#sort variable importance descending
VI_plot <- VI[ order (VI$Overall, decreasing= TRUE ),]

#visualize variable importance with horizontal bar plot
barplot(VI_plot$Overall,
        names.arg= rownames (VI_plot),
        horiz= TRUE ,
        col=' steelblue ',
        xlab=' Variable Importance ')

R'de değişken önem grafiği

Solar.R’nin modeldeki en önemli belirleyici değişken olduğunu, Ay’ın ise en az önemli değişken olduğunu görebiliriz.

Adım 4: Tahminlerde bulunmak için modeli kullanın

Son olarak, yeni gözlemler hakkında tahminlerde bulunmak için takılı çanta modelini kullanabiliriz.

 #define new observation
new <- data.frame(Solar.R=150, Wind=8, Temp=70, Month=5, Day=5)

#use fitted bagged model to predict Ozone value of new observation
predict(bag, newdata=new)

24.4866666666667

Takılan çanta modeli, yordayıcı değişkenlerin değerlerine dayanarak bu günde ozon değerinin 24.487 olacağını öngörüyor.

Bu örnekte kullanılan R kodunun tamamını burada bulabilirsiniz.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir