LoginSignup
6
13

More than 1 year has passed since last update.

CNN-LSTMモデルを用いた株式相場予想

Last updated at Posted at 2021-08-28

はじめに

深層強化学習モデルIMPALAを開発する前段階として、CNN-LSTMモデルの実装を行なった。

ソースコードはこちら

使用データについて

トレンド傾向の掴みやすさから、yahoo financeからGSPCの日足を使用した。

訓練データの期間:2015/1/1 - 2017/6/30
テストデータの期間:2017/7/1 - 2021/1/1

以下ソースコード

時系列におけるCNN

一般的なCNN

 CNN(Convolutional Neural Networks)は、畳み込み層を含んだニューラルネットワークで、画像データから意味のあるデータを抽出し、画像認識などを行えるようにする。

cnn_info.png

畳み込み層・・・入力データから特徴量を抽出する層
プーリング層・・・入力データを圧縮する層
全結合層・・・全てのニューロンが繋がった層

時系列におけるCNN

 CNNは、時系列データに置いて、1次元の入力データを2次元の行列に変換することで、特徴量の抽出に用いる。1

cnn.png

LSTM2

 LSTM(Long Short-Term Memory)は,勾配の爆発と勾配の消失を解決するため、1997年にJ.Schmidhuberらによって提案されたネットワークモデルである。2今現在、音声認識,感情分析,テキスト分析、時系列分析の分野で用いられている。LSTM は、長期記憶、短期記憶、忘却の3つの機能がある。このことから、過去の状態が今現在に影響を与える時系列データを取り扱うのに適している。

CNN-LSTM3

 CNN-LSTMを組み合わせることにより、波形のパターンを時系列的に処理することができる。
 モデルの構造図を示す。主な構造は入力層、一次畳み込み層、プーリング層、LSTM隠れ層、完全結合層を持つ。

Screen Shot 2021-08-18 at 13.09.53.png

3より引用

以下の構造図より、LSTMの入力形式(サンプル数、ルックバック数、変数量)を踏襲している。

Screen Shot 2021-08-18 at 13.13.19.png

3より引用

モデル構築3

cnn_lstm_model_flow.png

conv_filter = 4
units = 8
batch_size = 8
look_back = 10

opt = Adam(learning_rate=0.001)

model = Sequential()

model.add(Conv1D(filters=conv_filter, kernel_size=1, padding="same", activation="tanh",batch_input_shape=(None, look_back, 1)))
model.add(MaxPool1D(pool_size=1, padding='same'))
model.add(Activation("relu"))
model.add(LSTM(units, return_sequences=True))
model.add(Dense(1, kernel_initializer='random_uniform'))
model.compile(loss = "mean_absolute_error", optimizer=opt)
print(model.summary())

損失関数

Unknown.png

学習結果

Unknown-2.png

Unknown-3.png


  1. S. Chen and H. He, 'Stock Prediction Using Convolutional Neural Network' (2018),Materials Science and Engineering443 

  2. S. Hochreiter and J. Schmidhuber, 'Long Short Term Memory' (1997),Neural Computation 9,p.1735-1780 

  3. W. Lu,J. Li,Y. Li, A. Sun, and J. Wang, 'A CNN-LSTM-Based Model to Forecast Stock Prices', (2020), Hindawi Complexity Volume 2020,p.10 

6
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
13