# przyklad 6.4 options(OutDec=",") library("ElemStatLearn") library("mlbench") library("rpart") library("adabag") library("gbm") ##################################################### data(spam) m<-nrow(spam) ks<-c(1,seq(5,100,by=5)) spam.bag.bl<-numeric(length=length(ks)) spam.ada.bl<-numeric(length=length(ks)) spam.ada.blad<-numeric(length=length(ks)) spam.bag.blad<-numeric(length=length(ks)) iter<-50 for (j in 1:iter) { print(j) ucz <- sample(1:m, size = 3000, replace = FALSE) spam.ucz<-spam[ucz,] spam.test<-spam[-ucz,] for (k in seq(along=ks)) { #### petla ### lmod<-ks[k] # liczba modeli pojedynczych do klasyfikacji print(lmod) # boosting spam.ada<-adaboost.M1(spam ~.,data=spam.ucz,mfinal=lmod, maxdepth=1) spam.ada.pred <- predict.boosting(spam.ada,newdata=spam.test) spam.ada.blad[k]<-spam.ada.pred$error ## bagging spam.bag<-bagging(spam ~.,data=spam.ucz,mfinal=lmod, maxdepth=1) spam.bag.pred <- predict.bagging(spam.bag,newdata=spam.test) spam.bag.blad[k]<-spam.bag.pred$error } spam.bag.bl<-spam.bag.bl+spam.bag.blad spam.ada.bl<-spam.ada.bl+spam.ada.blad } spam.bag.bl<-spam.bag.bl/iter spam.ada.bl<-spam.ada.bl/iter # rys. 6.4 aa<-min(min(spam.bag.bl),min(spam.ada.bl)) bb<-max(max(spam.bag.bl),max(spam.ada.bl)) plot(ks,spam.ada.bl,type="n",ylim=c(aa,bb),xlab="Liczba modeli bazowych",ylab="Błąd predykcji",main="Zbiór Spam") lines(ks,spam.ada.bl,type="l",lty=1) lines(ks,spam.bag.bl,type="l",lty=2) points(ks,spam.ada.bl,pch=19) points(ks,spam.bag.bl,pch=19) legend("right",lty=c(1,2),legend = c("Boosting","Bagging"))