我正在使用神经网络包并使用神经网络功能来训练我的数据和计算预测。
x <- neuralnet( X15 ~ X1 + X2 + X3 + X8, norm_ind[1:15000,],2,act.fct="tanh",linear.output=TRUE)
pr <- compute(x,testdata)
我面临的问题是pr$net.result
值对于所有数据点几乎是不变的。
我预测股票的回报并提前一天提供股票实际回报作为目标函数,即公式中的X15
。我得到的输出几乎是不变的,如下所示。
谁能告诉我需要做什么?
1084 0.00002217204168
1085 0.00002217204168
1086 0.00002217204168
1087 0.00002217204168
1088 0.00002217204168
1089 0.00002217204168
1090 0.00002217204168
1091 0.00002217204168
1092 0.00002217204168
1093 0.00002217204168
1094 0.00002217204168
1095 0.00002217204168
1096 0.00002217204168
1097 0.00002217204168
1098 0.00002217204168
1099 0.00002217204168
1100 0.00002217204168
答案 0 :(得分:3)
在通过neuralnet
教授神经网络之前,强烈建议您扩展数据:
learn <- scale(learn)
# be honest and use the mean and scaling inferred from the training set -
# the test set could in principle contain only one element causing an incorrect scaling
test <- scale(test, center = attributes(learn)$`scaled:center`, scale = attributes(learn)$`scaled:scale`)
model <- neuralnet(formula, learn, ...)
compute(model, test)$net.result
神经网络对移位和缩放数据很敏感。此外,初始权重从分布中随机选择到标准正态分布。
参见Yoshua Bengio [1]的优秀论文中的第3.2章“预处理”(以及更多内容)。
答案 1 :(得分:0)
我不确定这是不是问题,但只有2个隐藏节点可能会导致问题。
答案 2 :(得分:0)
尝试将learningrate
函数中的neuralnet
参数设置为learningrate=0.01
默认值为NULL,我发现在使用nnet()进行类似测试时会出现类似问题
答案 3 :(得分:0)
我遇到了类似的问题,我认为可能是由于传统神经网络中的局部最小值问题。你可能不得不超越神经网络包来获得你想要的东西。
答案 4 :(得分:0)
最可能的问题是您有太多输入变量来获取可用的训练数据量。
以下是有关此主题的好消息
https://stats.stackexchange.com/questions/65292/r-neuralnet-compute-give-a-constant-answer