2012-01-30 16 views
2

私はneuralnetパッケージを使用し、データを訓練して予測するために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

+1

私はRに精通していませんが、あなたが参照しているパッケージをグーグルで調べました。マニュアルによれば、訓練がどのように出力されたかに関するデータを含む構造があるはずです。あなたはそれを確認しましたか?それは何と言いますか?収束しましたか?どのくらいの反復など..詳細がなければ、何が間違っているかを知ることは難しいです。また、隠れたニューロンの数についてはルールはなく、経験則のみで十分に大きな数(20?)を試してみてください。 – Niclas

答えて

0

問題があるかどうかはわかりませんが、2つの隠れたノードしか持たないと問題が発生する可能性があります。

+1

私は3〜4の数のニューロンを使ってみましたが、ほぼ同じ結果を得ました。いくつの隠れたレイヤーが適切であるか教えてください。私は1500日の9次元データを与えています。 9次元の反復性9個の入力ニューロン、隠れたレイヤーに2個または3個または4個のニューロンと1個の出力が含まれています。 1.どのように多くのニューロンの隠れ層が必要がありますか教えてください? 2.私はストックリターンのためにどの活性化関数を使うべきですか?私は隠れたレイヤーとライナーの出力レイヤーの組み合わせでtanhまたはtanhを使用しようとしました – user1177819

+1

N. Wanas、G. Auda、M.S.による多少日付のついた論文があります。カメルとF.Karray氏は「神経ネットワークの隠れたノードの最適数について」と題している。隠されたレイヤーの数はデータの複雑さに依存しますが、ほとんどのアプリケーションでは隠しレイヤーが1つしか必要ないと思います。 S.L.の別の良い紙があります。 Ozesmi、C.O。 TanとU. Ozesmiの「生態学的応用における人工神経回路の構築、訓練および試験における方法論的問題」と呼ばれている。なぜ、エラー機能ではなくアクティベーション機能が心配されていますか? –

+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

0

learningrate=0.01

デフォルトはNULLであると私はNNETを使用して同様の試験()

0

Iを行う際にも同様の問題を引き起こすことがこれを見つけたようなものにあなたのneuralnet機能でlearningrate引数を設定してみてください同様の問題を抱えていますが、これは伝統的なニューラルネットワークのローカルミニマムの問題が原因であると私は考えています。あなたが望むものを得るためには、neuralnetパッケージを超えなければならないかもしれません。 neuralnetを経由して、ニューラルネットワークを教える前に、強く、あなたのデータをスケーリングすることをお勧めし

3

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

関連する問題