TensorFlow RNN ( LSTM / GRU ) で NY ダウ株価予測
基本モデルと実装
RNN (Recurrent Neural Network) は自然言語処理分野で最も成果をあげていますが、得意分野としては時系列解析もあげられます。定番ですが Yahoo Finance が Web で提供している株価情報をベースに RNN で株価予測をしてみました。
使用した RNN ネットワークのアーキテクチャは今回はシンプルなものとして深く積層せずに LSTM と GRU で個別に試しています。window サイズは取り敢えず 10 としましたが再考は必要です。実装はもちろん TensorFlow ですが、MAE (Mean Absolute Error, 平均絶対誤差) の算出には sklearn を使用しています。
提供される情報カラムは Daily で Open, High, Low, Close, Volume, Adj Close ですが、今回は Adj Close prices を使用しました。2000 年 1 月 1 日から 2016 年 10 月 31 日までのデータを取得しています。データの割り振りはトレーニングに 90 %、verification に 5 %、そして予測に 5 % を使用しました。つまり最後の約 10 ヶ月分を予測に回していることになります。(トレーニングの収束は高速です。)
予測誤差が小さい例
(1) アップル社
最初に予測が比較的きれいに当てはまった例を幾つかあげておきます。
まず、以下はアップル社の Adj Close の実値をそのままグラフにしたものです :
そして以下は予測曲線を重ね合わせたものですが、誤差によるズレが殆どないのでこれだけでは分かりにくいので :
予測期間を zoom in してみた画像が以下です。
LSTM における MAE は 1.042638 ; GRU では 1.060532 でした :
(2) SONY 社
MAE: 0.428332 :
(3) Yahoo 社
MAE: 0.080035 :
予測誤差が大きい例
予測誤差が小さい例だけを見ていると上手くいっているのか判断しづらいので、誤差が大きい例も見てみます。
直感的には stationarity の考慮が必要なものと思われます。
(1) Amazon 社
以下は、実数曲線に予測曲線を重ね合わせたものです :
そして zoom in した画像です。MAE は 198.287123 です :
以上