2012-01-30 84 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