HKENTO's Blog

日々の記録をつけます セキュリティとかその他のこと

LSTMで日経平均株価を予測する

時系列データを処理できるRNNを使ったなにがしかの実験をしてみたかったので、試しに日経平均株価をLSTMで予測するということをしてみた。

LSTMとは

LSTMとは、1995年に登場したRNNを拡張したモデル。RNNに比べ、時系列データの非常に長い依存関係(長い文章など)も学習することが出来る。通常のRNNでは数十ステップほどだが、LSTMは100ステップを超える依存関係も処理することができる。

実験概要

日経平均株価の2007年から2017のデータを使い、LSTMを使って学習します。10日分のデータを入力とし、その次の日のデータを教師ラベルとすることで、予測を学習します。

結果

LSTMセル数: 50

バッチサイズ: 50

エポック数: 100

損失関数: MAPE(Mean Absolute Percentage Error, 平均絶対パーセント誤差)

f:id:thunders1028:20171112013102p:plain

f:id:thunders1028:20171112013154p:plain

青: 予測 オレンジ: テストデータ

大きく上昇したときに予測が全然追いつかず。その後セル数やエポック数を変えてみても特に変わりなし。

しかし、損失関数をMAPEからMAE (Mean Absolute Error, 平均絶対誤差)に変更したところ、予測が改善。

f:id:thunders1028:20171112013546p:plain

f:id:thunders1028:20171112013604p:plain

損失関数の違いをわかってないので、勉強していきたい。

考察

MAEからMAPEにしたら予測がかなりテストデータに近くなったがあまりに近いので、前日の値をそのまま出力してるのでは疑惑がある。どうしたら確かめられるだろうか…?

参考文献

TensorFlow(LSTM)で株価予想 〜 株予想その1 〜 - Qiita

Deep Learningによる株価変動の予想

RNN(LSTM)で株価予測をやってみた(失敗): EeePCの軌跡