Using nnet for prediction, am i doing it right?

后端 未结 1 451
野趣味
野趣味 2021-01-30 18:22

I\'m still pretty new to R and AI / ML techniques. I would like to use a neural net for prediction, and since I\'m new I would just like to see if this is how it should be done.

相关标签:
1条回答
  • 2021-01-30 19:06

    I really like the caret package, as it provides a nice, unified interface to a variety of models, such as nnet. Furthermore, it automatically tunes hyperparameters (such as size and decay) using cross-validation or bootstrap re-sampling. The downside is that all this re-sampling takes some time.

    #Load Packages
    require(quantmod) #for Lag()
    require(nnet)
    require(caret)
    
    #Make toy dataset
    y <- sin(seq(0, 20, 0.1))
    te <- data.frame(y, x1=Lag(y), x2=Lag(y,2))
    names(te) <- c("y", "x1", "x2")
    
    #Fit model
    model <- train(y ~ x1 + x2, te, method='nnet', linout=TRUE, trace = FALSE,
                    #Grid of tuning parameters to try:
                    tuneGrid=expand.grid(.size=c(1,5,10),.decay=c(0,0.001,0.1))) 
    ps <- predict(model, te)
    
    #Examine results
    model
    plot(y)
    lines(ps, col=2)
    

    It also predicts on the proper scale, so you can directly compare results. If you are interested in neural networks, you should also take a look at the neuralnet and RSNNS packages. caret can currently tune nnet and neuralnet models, but does not yet have an interface for RSNNS.

    /edit: caret now has an interface for RSNNS. It turns out if you email the package maintainer and ask that a model be added to caret he'll usually do it!

    /edit: caret also now supports Bayesian regularization for feed-forward neural networks from the brnn package. Furthermore, caret now also makes it much easier to specify your own custom models, to interface with any neural network package you like!

    0 讨论(0)
提交回复
热议问题