2012-01-30 50 views
2

我正在使用neuralnet软件包并使用神经网络函数来训练我的数据并进行计算以预测。R中的神经网络预测股票收益

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

可能应该被迁移到stats.SE? – tdc 2012-01-30 16:20:10

+1

我对R不是很熟悉,但是我使用了Google引用的软件包,根据手册我发现应该是一个包含关于培训如何在输出中进行的数据的结构。你检查过了吗?它说什么?它汇合了吗?多少次迭代等。没有更多的细节,很难说出什么是错误的。另外,当涉及到隐藏的神经元的数量时,没有规则,只有启发式,尝试一个足够大的数目(20?)的初学者。 – Niclas 2012-02-03 07:52:09

回答

0

我不确定是否是问题,但只有2个隐藏节点可能是造成问题的原因。

+1

我甚至尝试了3-4个神经元,但仍然获得了几乎相同的结果。你能告诉我有多少隐藏层应该是适当的。我正在喂养1500天的9维数据。 9维输入我的9输入神经元,隐藏层包含2或3或4个神经元和1输出。你能指导我有多少个神经隐藏层应该有? 2.我应该使用哪种激活函数进行股票回报。我尝试在隐藏层和班轮输出层组合中使用tanh或tanh – user1177819 2012-01-31 19:00:24

+1

N. Wanas,G. Auda,M.S.卡梅尔和F.Karray的题为“关于神经网络中隐藏节点的最佳数量”可能会有所帮助。隐藏层的数量取决于数据的复杂性,但我相信大多数应用程序只需要一个隐藏层。 S.L还有一篇很好的论文。 Ozesmi,C.O. Tan和Uzesi在生态建模中称为“在生态应用中建立,训练和测试人工神经网络的方法学问题”。为什么要担心激活功能而不是错误功能? – 2012-02-02 14:51:36

+1

我可以理清这个问题。但我还有另一个问题,股票价格没有准确预测。 2833.00 2833.69 2835.95 87 2833.25 2834.05 2837.50 88 2834.50 2835.59 2839.50 89 2835.00 2835.90 2840.80 90 2834.20 2833.88 2841.00 91 2835.00 2835.41 2841.55 92 2835.00 2835.80 2841.50 93 2835.85 2836.69 2843.00 94 2834.90 2834.32 2842.00 95 2835.25 2835.37 2842.00 96 2835.95 2836.57 2842.00 – user1177819 2012-02-04 14:15:40

0

尝试在你的neuralnet功能设置learningrate参数类似learningrate=0.01

默认值为NULL我发现这个执行使用NNET()类似的测试

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] http://arxiv.org/abs/1206.5533