やりたいこと
- 人工知能で株価などを予測させたい
- そのための、下準備
人工知能で時系列データを予測する手法
言語認識や時系列データの分析・予測には、下記の手法を使うらしい。
- RNN (Recurrent Neural Network)
- LSTM (Long Short-Term Memory)
- GPU (Gated Recurrent Unit)
詳しくはこちら:
詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~
LSTMによるSINカーブの予測
元データ: 振幅1のSinカーブに標準偏差0.05のノイズが乗っている
学習結果
10 Epochs程度でlossがなくなっており、非常によく学習できていると分かる。
10 Epochで、loss: 0.0298, val_loss: 0.0199
学習済エンジンによるSinカーブの予測
点線: 元データ、黒実線: 予測データ
参考:
ソースコードはこちらを使ってます
yusugomori/deeplearning-tensorflow-keras
LSTMで株価を予測するときの問題点
上の文献通りに進めれば、株価を予測できるかも! と、思ったけれども、
そのままの価格データを使っても、うまく予測できない場合があるらしい。
機械学習においてデータの前処理は予測の精度を左右します。
今回、そのままの価格データを使ってもうまくいかなった(値のスケールが大きかったせい?)ので、ひとまずmin-maxスケーリングをしてみます。
絶対値が変わったときの影響検証
ディープラーニングのモデル
先ほどと同じもので
検証結果
lossがなくなるまで、40Epochほどかかっており、明らかに学習が遅くなりました。
Sinカーブの予測
こちらも誤差が大きくなっていることが、目視でわかります。
追加: 平均4のSinカーブに対する予測
ちなみに、平均4のSinカーブに対してはトレンド予測が全くできなくなってます。
所見
単純なLSTMを使って時系列のトレンドを予測する場合、データの前処理で精度が全然変わってしまうという問題がありそうです。どうも、平均ゼロ付近の周期的なデータはよく予測できるけど、平均値が0から大きく離れるとLSTMではうまくトレンドを予測できないようです。
株価予測を実装するまでには、ちょっと時間がかかりそうです。