我是使用R的新手,我一直在尝试构建一个神经网络来预测连续数据集 - 一个带有~15个输入的单个结果。数据集范围超过几个数量级,从0.01到1000。到目前为止,我已经为包NNet,NeuralNet和RSNNS编写了代码。通过所有这些,我的网络可以非常适合训练数据,R2值> 0.95且误差范围小。当应用于测试数据集(约占我总可用数据的20%)时,模型会出现可怕的预测能力。我的代码如下;请温柔的编程技巧!非常新的;)
我使用RSNNS固有的normalizeData函数在此代码中进行规范化,并在开始时将我的行与简单的示例函数混合。
library(neuralnet)
library(RSNNS)
mydata <- read.csv("NewforNeuralNet.csv")
my.dta <- data.frame(mydata[,10:27])
smy.dta <- my.dta[sample(nrow(my.dta)),]
y <- smy.dta[,1]
x <- smy.dta[,2:18]
ny <- normalizeData(y,type="norm")
nx <- normalizeData(x,type="norm")
ytrain <- ny[0:115,]
xtrain <- nx[0:115,]
ytest <- ny[116:143,]
xtest <- nx[116:143,]
RS <- mlp(xtrain,ytrain, size=c(5),linOut=T, maxit=500)
RSPRED <- predict(RS,xtrain)
RSPRED <- denormalizeData(RSPRED, getNormParameters(ny))
plot(ytrain,RSPRED)
model <- lm(ytrain~RSPRED)
summary(model)
这导致一个漂亮的模型,RSE = ~0.25,AR2 = 0.944等。 现在到盲数据集:
blind <- predict(RS,xtest)
blind <- denormalizeData(blind,getNormParameters(ny))
ytest <- denormalizeData(ytest,getNormParameters(ny))
plot(ytest,blind,log="xy")
model2 <- lm(ytest~blind)
summary(model2)
这导致非常差的预测和非常高的错误。如代码中所述,16个预测变量,143行数据。不知道这里发生了什么,也许它根本不是一个足够大的数据集。在这个阶段欢迎任何意见!谢谢你们
-Marty