[R] use nnet

Wensui Liu liuwensui at gmail.com
Fri Mar 9 19:39:37 CET 2007


AM,
Sorry. please ignore the top box in the code. It is not actually a cv
validation but just a simple split-sample validation.
sorry for confusion.

On 3/9/07, Wensui Liu <liuwensui at gmail.com> wrote:
> AM,
> I have a pieice of junk on my blog. Here it is.
> #################################################
> # USE CROSS-VALIDATION TO DO A GRID-SEARCH FOR  #
> # THE OPTIMAL SETTINGS (WEIGHT DECAY AND NUMBER #
> # OF HIDDEN UNITS) OF NEURAL NETS               #
> #################################################
>
> library(nnet);
> library(MASS);
> data(Boston);
> X <- I(as.matrix(Boston[-14]));
> # STANDARDIZE PREDICTORS
> st.X <- scale(X);
> Y <- I(as.matrix(Boston[14]));
> boston <- data.frame(X = st.X, Y);
>
> # DIVIDE DATA INTO TESTING AND TRAINING SETS
> set.seed(2005);
> test.rows <- sample(1:nrow(boston), 100);
> test.set <- boston[test.rows, ];
> train.set <- boston[-test.rows, ];
>
> # INITIATE A NULL TABLE
> sse.table <- NULL;
>
> # SEARCH FOR OPTIMAL WEIGHT DECAY
> # RANGE OF WEIGHT DECAYS SUGGESTED BY B. RIPLEY
> for (w in c(0.0001, 0.001, 0.01))
> {
>   # SEARCH FOR OPTIMAL NUMBER OF HIDDEN UNITS
>   for (n in 1:10)
>   {
>     # UNITIATE A NULL VECTOR
>     sse <- NULL;
>     # FOR EACH SETTING, RUN NEURAL NET MULTIPLE TIMES
>     for (i in 1:10)
>     {
>       # INITIATE THE RANDOM STATE FOR EACH NET
>       set.seed(i);
>       # TRAIN NEURAL NETS
>       net <- nnet(Y~X, size = n, data = train.set, rang = 0.00001,
>                        linout = TRUE, maxit = 10000, decay = w,
>                        skip = FALSE, trace = FALSE);
>       # CALCULATE SSE FOR TESTING SET
>       test.sse <- sum((test.set$Y - predict(net, test.set))^2);
>       # APPEND EACH SSE TO A VECTOR
>       if (i == 1) sse <- test.sse else sse <- rbind(sse, test.sse);
>     }
>     # APPEND AVERAGED SSE WITH RELATED PARAMETERS TO A TABLE
>     sse.table <- rbind(sse.table, c(WT = w, UNIT = n, SSE = mean(sse)));
>   }
> }
> # PRINT OUT THE RESULT
> print(sse.table);http://statcompute.spaces.live.com/Blog/cns!39C8032DBD1321B7!290.entry
>
>
> On 3/9/07, Aimin Yan <aiminy at iastate.edu> wrote:
> > I want to adjust weight decay and number of hidden units for nnet by
> > a loop like
> > for(decay)
> > {
> >   for(number of unit)
> >    {
> >     for(#run)
> >      {model<-nnet()
> >        test.error<-....
> >      }
> >    }
> > }
> >
> > for example:
> > I set decay=0.1, size=3, maxit=200, for this set I run 10 times, and
> > calculate test error
> >
> > after that I want to get a matrix like this
> >
> > decay  size   maxit  #run  test_error
> > 0.1        3        200   1       1.2
> > 0.1        3        200   2       1.1
> > 0.1        3        200   3       1.0
> > 0.1        3        200   4       3.4
> > 0.1        3        200   5        ..
> > 0.1        3        200   6         ..
> > 0.1        3        200   7       ..
> > 0.1        3        200   8      ..
> > 0.1        3        200   9       ..
> > 0.1        3        200   10       ..
> > 0.2        3        200   1       1.2
> > 0.2        3        200   2       1.1
> > 0.2        3        200   3       1.0
> > 0.2        3        200   4       3.4
> > 0.2        3        200   5        ..
> > 0.2        3        200   6         ..
> > 0.2        3        200   7       ..
> > 0.2        3        200   8      ..
> > 0.2        3        200   9       ..
> > 0.2        3        200   10       ..
> >
> > I am not sure if this is correct way to do this?
> > Does anyone tune these parameters like this before?
> > thanks,
> >
> > Aimin
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
>
> --
> WenSui Liu
> A lousy statistician who happens to know a little programming
> (http://spaces.msn.com/statcompute/blog)
>


-- 
WenSui Liu
A lousy statistician who happens to know a little programming
(http://spaces.msn.com/statcompute/blog)



More information about the R-help mailing list