# przykład 3.4 options(OutDec=",") library("ElemStatLearn") library("mlbench") library("rpart") library("adabag") ##################################################### data(spam) m<-nrow(spam) ks<-seq(3,100,by=2) 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)) for (j in 1:10) { 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/10 spam.ada.bl<-spam.ada.bl/10 #################################### data(Satellite) m<-nrow(Satellite) ks<-seq(3,100,by=2) sat.bag.bl<-numeric(length=length(ks)) sat.ada.bl<-numeric(length=length(ks)) sat.ada.blad<-numeric(length=length(ks)) sat.bag.blad<-numeric(length=length(ks)) for (j in 1:10) { print(j) ucz <- sample(1:m, size = 4290, replace = FALSE) sat.ucz<-Satellite[ucz,] sat.test<-Satellite[-ucz,] for (k in seq(along=ks)) { #### petla ### print(ks[k]) lmod<-ks[k] # liczba modeli pojedynczych do klasyfikacji sat.ada<-adaboost.M1(classes~.,data=sat.ucz,mfinal=lmod, maxdepth=1) sat.ada.pred <- predict.boosting(sat.ada,newdata=sat.test) sat.ada.blad[k]<-sat.ada.pred$error print(sat.ada.pred$error) # bagging sat.bag<-bagging(classes~.,data=sat.ucz,mfinal=lmod, maxdepth=3) sat.bag.pred <- predict.bagging(sat.bag,newdata=sat.test) sat.bag.blad[k]<-sat.bag.pred$error print(sat.bag.pred$error) } sat.bag.bl<-sat.bag.bl+sat.bag.blad sat.ada.bl<-sat.ada.bl+sat.ada.blad } sat.bag.bl<-sat.bag.bl/10 sat.ada.bl<-sat.ada.bl/10 ########### rysunki # rys. 3.8 plot(sat.bl[2:100],type="l",ylim=c(0.15,0.18),main="Zbiór Satellite",xlab="Liczba modeli bazowych",ylab="Błąd klasyfikacji") plot(spam.bl[2:100],type="l",ylim=c(0.08,0.11),main="Zbiór Spam",xlab="Liczba modeli bazowych",ylab="Błąd klasyfikacji") blad<-0.001 r<-numeric(length=1000) for (i in 2: 1000) r[i]<-as.numeric(abs(1-spam.bl[i]/spam.bl[i-1])