2016-04-25 15 views
4

neuralnetパッケージのさまざまなアルゴリズムを実験していますが、従来のbackpropアルゴリズムを試してみると、結果は非常に奇妙です。ほとんどすべての計算結果は〜.33ですか?私は、デフォルトのrprop+でそれを実行するかのようにアルゴリズム間違って使用しなければならないと仮定します。確かに正常な逆伝播は、特にそれが与えられた閾値にすばやく収束することができれば、これは悪いことではない。R - neuralnet - 伝統的な背景が奇妙に見える

library(neuralnet) 
data(infert) 

set.seed(123) 
fit <- neuralnet::neuralnet(formula = case~age+parity+induced+spontaneous, 
          data = infert, hidden = 3, 
          learningrate = 0.01, 
          algorithm = "backprop", 
          err.fct = "ce", 
          linear.output = FALSE, 
          lifesign = 'full', 
          lifesign.step = 100) 

preds <- neuralnet::compute(fit, infert[,c("age","parity","induced","spontaneous")])$net.result 

summary(preds) 
     V1   
Min. :0.3347060 
1st Qu.:0.3347158 
Median :0.3347161 
Mean :0.3347158 
3rd Qu.:0.3347162 
Max. :0.3347286 

いくつかの設定はここでは異なりますか?

例のデフォルトneuralnet

set.seed(123) 
fit <- neuralnet::neuralnet(formula = case~age+parity+induced+spontaneous, 
          data = infert, hidden = 3, 
          err.fct = "ce", 
          linear.output = FALSE, 
          lifesign = 'full', 
          lifesign.step = 100) 

preds <- neuralnet::compute(fit, infert[,c("age","parity","induced","spontaneous")])$net.result 

summary(preds) 
     V1   
Min. :0.1360947 
1st Qu.:0.1516387 
Median :0.1984035 
Mean :0.3346734 
3rd Qu.:0.4838288 
Max. :1.0000000 

答えて

3

あなたが、ニューラルネットワークに供給する前に、あなたのデータを正規化することをお勧めします。あなたがそれをすれば、あなたは行くことができます:

library(neuralnet) 
data(infert) 

set.seed(123) 
infert[,c('age','parity','induced','spontaneous')] <- scale(infert[,c('age','parity','induced','spontaneous')]) 
fit <- neuralnet::neuralnet(formula = case~age+parity+induced+spontaneous, 
          data = infert, hidden = 3, 
          learningrate = 0.01, 
          algorithm = "backprop", 
          err.fct = "ce", 
          linear.output = FALSE, 
          lifesign = 'full', 
          lifesign.step = 100) 

preds <- neuralnet::compute(fit, infert[,c("age","parity","induced","spontaneous")])$net.result 
summary(preds) 
     V1    
Min. :0.02138785 
1st Qu.:0.21002456 
Median :0.21463423 
Mean :0.33471568 
3rd Qu.:0.47239818 
Max. :0.97874839 

これを扱っている実際にいくつかの質問があります。 Why do we have to normalize the input for an artificial neural network?は最も詳細なもののようです。

+0

興味深いことに、私はスケーリングについて知っていたはずです。ありがとうございました。 'rprop +'アルゴリズムがスケーリングせずにデフォルトでこれを扱うことができる理由はありますか? – cdeterman

+0

私はそうではありません - 私はそれがデフォルトで行われているコードのどこかにあると思いますが、なぜ違うのか分かりません。 – Tchotchke

+0

十分に公正、私の質問に答えてくれてありがとう。私は周りを突き進め、おそらくその質問を後でもう一度聞いてみるでしょう。 – cdeterman

関連する問題