By Derrick Mwiti, Data Analyst
編者注:このチュートリアルは LSTM モデルで時系列の予測に着手する方法を説明するものです。 株式市場のデータは、非常に規則的で誰もが広く利用できるため、これには最適な選択です。
このチュートリアルでは、株価の将来の挙動を予測するPythonディープラーニングモデルを構築します。 読者はPythonの深層学習の概念、特にLong Short-Term Memoryに精通していることを前提としています。
実際の株価を予測するのは上り坂ですが、株価が上がるか下がるかを予測するモデルを構築することは可能です。 このチュートリアルで使用したデータとノートブックは、ここで見ることができます。 重要なのは、政治的な雰囲気や市場など、株価に影響を与える他の要因が常に存在することです。
はじめに
LSTM は過去の情報を保存することができるので、シーケンス予測問題では非常に強力です。
まず、科学的計算のための NumPy、グラフをプロットするための Matplotlib、そしてデータセットの読み込みと操作を補助するための Pandas をインポートします。
Loading the Dataset
次のステップは、トレーニング データセットをロードして、モデリングで使用する Open
および High
カラムを選択することです。
どのようなデータセットで作業しているかを垣間見るために、データセットの先頭をチェックします。
列は開始価格で、Close
列は特定の取引日の株の最終価格です。 High
列とLow
列は、特定の日の最高値と最安値を表します。
Feature Scaling
深層学習モデルでの以前の経験から、最適なパフォーマンスを得るためにデータをスケールしなければならないことが分かっています。 今回のケースでは、Scikit-LearnのMinMaxScaler
を使用して、データセットを0から1の間の数にスケールします。
タイムステップによるデータの作成
LSTM は、データが特定の形式、通常は3D配列であることを期待しています。 まず、60タイムステップでデータを作成し、NumPyを使って配列に変換します。 次に、データをX_train
サンプル、60タイムスタンプ、各ステップで1つの特徴を持つ3次元配列に変換します。
LSTMの構築
LSTMを構築するために、Kerasからいくつかのモジュールをインポートする必要があります。
-
Sequential
for initializing the neural network -
Dense
for adding a densely connected neural network layer -
LSTM
for adding the Long Short-Term Memory layer -
Dropout
for adding dropout layers that prevent overfitting
We added the LSTM layer and later add a few Dropout
layers to prevent overfitting.LTM レイアウトのためのモジュールは、以下の通りです。
- 出力空間の次元である50ユニット
-
return_sequences=True
出力シーケンスの最後の出力を返すか、完全なシーケンスを返すかを決める -
input_shape
学習セットの形状として
Dropout
層を定義するとき、0.2を指定して、層の20%が削除されることを意味している。 その後、出力を1単位とするDense
層を追加します。 この後、有名なadam optimizerを使ってモデルをコンパイルし、損失をmean_squarred_error
に設定する。 これにより、二乗誤差の平均が計算される。 次に、バッチサイズ32で100エポックで実行するようにモデルを適合させます。 9050>
Predicting future stock using the Test Set
First we need to import the test set that will use to make our predictions on.これは、テストセットを使用して、将来の株価を予測するものです。
将来の株価を予測するためには、テストセットを読み込んだ後、いくつかのことを行う必要があります:
- 0軸で学習セットとテストセットをマージします。
- 時間ステップを60に設定(以前見たように)
- 新しいデータセットを変換するために
MinMaxScaler
を使用 - 以前行ったようにデータセットを再編成
予測を行った後、inverse_transform
を使って通常の読みやすい形式で株価を取得する。
結果のプロット
最後に、予測された株価と実際の株価の結果を可視化するためにMatplotlibを使用します。
このプロットから、我々のモデルも株価の上昇を予測しているのに実際の株価は上昇したことが見て取れます。 これは、LSTMが時系列や連続したデータの分析にいかに強力であるかを明確に示しています。
結論
移動平均、線形回帰、K-最近傍探索、ARIMAやプロフェットなど、株価予測の他のいくつかのテクニックがあります。 これらは、自分でテストして、Keras LSTMと性能を比較することができる技術です。 Keras と深層学習についてもっと学びたい場合は、それに関する私の記事をこことここで見ることができます。
Reddit と Hacker News でこの投稿について議論してください。 Derrick Mwiti は、データ アナリスト、ライター、そしてメンターです。 彼はすべてのタスクで素晴らしい結果を出すことを原動力としており、Lapid Leaders Africaのメンターでもあります。 許可を得て再掲載。
関連:
- Introduction to Deep Learning with Keras
- Introduction to PyTorch for Deep Learning
- The Keras 4 Step Workflow
関連:
- Introduction to Deep Learning with Keras
- The Deep Learning for PyTorch