Solved – R nnet (Caret) not giving results for size = 8 and above

caretnnetr

This is my first post in CrossValidated hence please let me know if I may have inadvertently violated forum rules.

I am working with nnet using Caret in R and when I am running experiments using the tuning grid I am somehow not able to get any results with size = 8 and above.

enter image description here

My code is as follows:

   set.seed(seedVal)

  ### creating a grid of tuning parameters
  nnetTunegrid <- expand.grid(.size = seq(min_tune,max_tune,step_tune),
                              .decay = seq(0,4,0.125))

  # set seeds array for cross validation
  seeds <- setSeeds(cv_count, cv_repeats, nrow(nnetTunegrid), seedVal)

  # Define cross-validation experiment
  numFolds = trainControl(method = "cv",
                          number = cv_count,
                          #repeats = cv_repeats,
                          seeds = seeds,
                          classProbs = TRUE,
                          summaryFunction = twoClassSummary)

  registerDoParallel(cores = 6)

  nnetFit <- train(x = train_matrix, y = catg_labels,
                   method = "nnet",
                   preProc = preProcessing,
                   trControl = numFolds,
                   tuneGrid = nnetTunegrid,
                   maxit = 500, # max iterations for nnet only
                   metric = metricVal)

My data set has 150 features and I am using nnet to do binary classification.

Any help or pointers to resolve this problem would be appreciated!

Thanks
Ian

Best Answer

The R nnet package cannot work when the number of estimated weights is greater than the number of observations. The number of weights is: H*(P+1) + (H+1) where H is the number of hidden units (size=8) in the layer and P is the number of predictors (150). Maybe this is the problem. I think this restriction is general for other ANN packages and software

Related Question