No.16734 ニューラルネットワークの時系列データについて  【富士】 2012/04/08(Sun) 08:47

ブランド選択について勉強していますが,ニューラルネットワークにおいて,時系列データの扱いがわからず,困っております。Rを用いて分析を試みておりますが,うまくいきません。初歩的な質問になりますが,教えていただけると幸いに存じます。

インプットデータでは,ある時点で対象者が選んだ選択肢を利用しますので

ブランド 1回目 2回目 3回目 ・・・
A     1  0  1  
B     0  0  1  
C     1  1  0   

 ※対象者は,1度の選択時にブランドを複数選べます。

このようなデータが対象者分あります。
これをRの「nnet」で処理しようとすると,インプットデータが「人」「ブランド」「回数」と3次元あってうまく回りません。

このような時系列データを用いて,ニューラルネットワークでブランド選択を予測させる場合は,どのようにしたらよいのでしょうか(もしくは,何を参考にしたらよいですか)。

どなたかご教授いただけますでしょうか。よろしくお願いいたします・

No.16735 Re: ニューラルネットワークの時系列データについて  【青木繁伸】 2012/04/08(Sun) 20:47

少なくとも,あなたの状況を再現できるデータとその解析プログラムを提示する必要があるでしょう。

No.16736 Re: ニューラルネットワークの時系列データについて  【富士】 2012/04/08(Sun) 22:56

データ,プログラムです。
対象者が次にどのブランドを選択するのか予測したく考えております。

<データ>
Aさん

ブランド 1回目 2回目 3回目
a     1  0  1  
b     0  0  1  
c     1  1  0 

Bさん

ブランド 1回目 2回目 3回目
a     0  0  1  
b     0  1  1  
c     1  1  0  

Cさん

ブランド 1回目 2回目 3回目
a     1  0  0  
b     0  1  0  
c     1  1  1

これらのデータを一つのexcelファイルにまとめるために(プログラムのtestに格納)…

     Aさん        Bさん        Cさん
ブランド 1回目 2回目 3回目 1回目 2回目 3回目 1回目 2回目 3回目
a     1  0  1    0  0  1    1  0  0   
b     0  0  1    0  1  1    0  1  0    
c     1  1  0    1  1  0    1  1  1

としています。

<プログラム>

liblary(nnet)

x <- 0
while (x <= 2) { # while ( 条件式 ) 対象者分繰り返す

 input<-test[,3*X+1:3*X+2] #対象者の1回目,2回目選択結果入力
output<-test[,3*(x+1)]   #対象者の3回目の結果入力

yosoku.n<-nnet(input,output,size=3)

x <- x + 1
}  

この方法ですと,nnetが最後のCさんの入力結果だけでパラメータが定まっているようで,A,Bさんが反映されていません。
どうにか,3人のデータを反映できないでしょうか。

No.16738 Re: ニューラルネットワークの時系列データについて  【青木繁伸】 2012/04/09(Mon) 07:41

> プログラムのtestに格納

3行,9列の行列にしたということでしょうか?
それであっても,abc の3 行, A3B3C3 の9列にしたのか
ABC について abc abc abc の 9 列 にしたのか

> test[,3*X+1:3*X+2]

X は x なのでしょうが,
x = 0 のとき,3*x+1:3*x+2 は 2, 2, 2
x = 1 のときは 6,7,8
x = 2 のときは 10, 12, 14 になりますよ

(3*x+1):(3*x+2) 同じだけど 3*x+1:2 では?(しかしこれも,データがどのような行列として与えられているかわからないので,何が正解か分からない)

while ループの中で yosoku.n<-nnet(input,output,size=3) をしているけど,毎回 yosoku.n が置き換えられますね。そのつど yosoku.n を出力すれば,3 通りの答えがでるでしょうけど,それは,あなたの期待するものではないでしょう。毎回の結果を出力しないで,while ループを抜けた後で結果を表示するなら,最後の結果だけが表示されることになるでしょう。

プログラムを提示するときは,それをコピーしてRコンソールにペーストしたら,あなたが得た結果と同じものが出るようにしておかないと,あなたのやり方のどこがまずいのかわかりません。単純な書き間違いなのか,考え方の間違いなのか区別がつかないですね。

● 「統計学関連なんでもあり」の過去ログ--- 045 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る