【第3弾】LSTMで時系列分析に挑戦【1秒でもいいからソースコードに触れる】
LSTMで時系列データ分析に挑戦中。
冒頭部分はほとんど変わっていないが、今回で第3弾。
テーマは、「1949年1月から1960年12月 の国際線での乗客数」
データの前処理から見直しを開始した。
前回までは、正直サンプルプログラムを動かすことに専念していた。
入力データがどのような形式かを理解していなかったので、
その辺りから、立ち戻って理解を深めていきたい。
■kerasでLSTMを利用する方法をもう少し理解したい
LSTMはRNNベース。
RNNを利用するには、Inputオブジェクトでbatch_shapeの指定が必要。
kerasのリファレンスを参照すると、Inputオブジェクトにおいて、
「**kwargs: deprecated arguments support. Supports batch_shape
and batch_input_shape
.」
といった記載があった。
さらに、batch_shapeについて調査し、バッチサイズの形状?であることが判明。
※Keras入力の説明:input_shape、units、batch_size、dimなど (qastack.jp)
X_train.shapeが(96,3,1)であることから、batch_shapeは(1,3,1)とした。
■Kerasのシーケンシャルモデルの利用
・LSTMの第1引数:出力の次元数(例:8)
・「return_sequences = True」の場合はすべてのセルから出力
KerasのSimpleRNN,LSTM,GRU等のreturn_sequencesについてのメモ (tcom242242.net)
・activation:活性化関数
・Bidirectional:双方向LSTM層、精度向上が図れる
■モデル構築&推論実行
推論する部分はpredictメソッドのみで実現しているわけではないので、
読み解く必要はあるが、その部分の理解はペンディングとする。
ウィンドウサイズを3ヶ月、つまり、過去3ヶ月分のデータを利用して、
予測をすることにしたが、若干右横にずれているような気がする。
ウィンドウサイズの調整が必要か?
LSTMの理論が忘却の彼方なので、こちらも復習した方が良さそうだ。