Hi,

i am tryng to run Bagging SVM but I have a problem. I do Bagging SVM based
on algoritm bagging Trees by Breiman. I get the following error and I think
I am wrong in calculating err.mean and err.vote. I also have difficulty in
making the plot.
> library(e1071)
> gendata <- function(N=30,p=5,r=.95,cut=0.5,lop=0.2,hip=0.8) {
+   mat <- chol(diag(p) + r - r*diag(p))
+   X <- matrix(rnorm(N*p),ncol=p)%*%mat
+   X <- sweep(X,2,apply(X,2,mean))
+   X <- sweep(X,2,apply(X,2,sd),"/")
+   u <- runif(N)
+   y <- ifelse(X[,1]<cut,ifelse(u<lop,1,0),ifelse(u<hip,1,0))
+   return(list(X=X,y=y))
+ }
> N <- 100
> tmp <- gendata(N)
> data <- data.frame(x=tmp$X,y=tmp$y)
> index <- 1:nrow(data)
> testindex <- sample(index, trunc(length(index)*30/100))
> test.data <- data[testindex,]
> trainindex <- sample(index, trunc(length(index)*70/100))
> train.data <- data[-testindex,]
> for (b in 1:3) {
+   samp <- sample(1:N,N,replace=T)
+   modelrad <- svm(y ~ ., train.data[samp,], type = "C-classification",
cost = cc,gamma = gg, kernel = "radial")
+ }
> modelrad <- svm(y ~ ., train.data, type = "C-classification", cost =
cc,gamma = gg, kernel = "radial")
> err.base <- mean(abs(test.data$y - round(predict(base.tree,test.data))))
> boots <- c(2:9,seq(10,100,by=5),seq(200,500,by=50))
> Blen <- length(boots)
> err.mean <- rep(NA,Blen)
> err.vote <- rep(NA,Blen)
> for (i in 1:Blen) {
+   B <- boots[i]
+   pred <- matrix(NA,nrow=B,ncol=N)
+     for (b in 1:B) {
+     samp <- sample(1:N,N,replace=T)
+     modelrad <- svm(y ~ ., train.data[samp,], type = "C-classification",
cost = cc,gamma = gg, kernel = "radial")
+     pred <- predict(modelrad,test.data)
+     }
+ err.mean[i] <- mean(abs(test.data$y - round(apply(pred,2,mean))))
+ err.vote[i] <- mean(abs(test.data$y -
round(apply(ifelse(pred>.5,1,0),2,mean))))
+   }
Error in apply(pred, 2, mean) : dim(X) must have a positive length

I'd appreciate any advice about the algorithm. Thanks for any help.

best Regards,


Iut

	[[alternative HTML version deleted]]

