2017-09-08 10 views
0

私は単変量時系列データを持っています。私は多段階の予測をしたい。単変量時系列多層パーセプトロン(MLP)を用いた多段先行予測

時系列の一歩予測を説明するthis質問に出会った。 しかし、私は多段階先行予測に興味があります。

例えば、典型的な単変量時系列データが

time value 
    ---- ------ 
    t1  a1 
    t2  a2 
    .......... 
    .......... 
    t100 a100. 

と仮定ように見える、私は3歩先の予測をしたいです。 私はバックエンド

まず層としてkerasとtensorflowを使用しています

TrainX     TrainY 
[a1,a2,a3,a4,a5,a6] -> [a7,a8,a9] 
[a2,a3,a4,a5,a6,a7] -> [a8,a9,a10] 
[a3,a4,a5,a6,a7,a8] -> [a9,a10,a11] 
..................  ........... 
..................  ........... 

のように私の問題をCANフレームは50個のニューロンを持っており、6つの入力を期待しています。 中間層は30個のニューロン 出力層は、3個のニューロンすなわち(出力3つの時系列値)

model = Sequential() 
model.add(Dense(50, input_dim=6, activation='relu',kernel_regularizer=regularizers.l2(0.01))) 
model.add(Dense(30, activation='relu',kernel_regularizer=regularizers.l2(0.01))) 
model.add(Dense(3)) 
model.compile(loss='mean_squared_error', optimizer='adam') 

model.fit(TrainX, TrainY, epochs=300, batch_size=16) 

を持っていた私の入力は、A101、A102、A103であるとき私のモデルは、A107、A108、A109 を予測することができるようになります、a104、a105、a106 これは有効なモデルですか?私は何かを逃していますか?

答えて

1

このモデルではそうかもしれませんが、LSTM層(シーケンスの繰り返しネットワーク)を使用すると恩恵を受けるはずです。

#TrainX.shape = (total of samples, time steps, features per step) 
#TrainX.shape = (total of samples, 6, 1) 

model.add(LSTM(50,input_shape=(6,1),return_sequences=True, ....)) 
model.add(LSTM(30,return_sequences=True, ....)) 
model.add(LSTM(3,return_sequences=False, ....)) 

予想される値の可能な範囲に結果を制限するアクティベーション機能がない可能性があります。

0〜1(activation='sigmoid')または-1〜1(activation='tanh')の値で作業することがよくあります。
これは、入力と出力が同じなので、入力をこれらの値に制限する必要があります。

関連する問題