見出し画像

4層Affineならどうでしょう? 未来永劫 株価を予測することが可能!? LSTMで今度こそ予測精度向上を図りたい編


今回はLSTMを4層Affine化した効果を検証します

今回は、LSTMを4層Affine化したAIモデルの予測性能を評価します。

ちなみに、私が考えるLSTMを4層Affine化する、とは下記のイメージです。

LSTM 中間層 4層Affine AIモデル
LSTMを4層Affine化したAIモデル(一部抜粋)

RecurrentInput/ReccurentOutput間で繰り返し処理されるのは、3層Affineが対象となります。

最終段の100ベクトル → 4ベクトル(始値、高値、安値、終値)に使用するAffineも数えて、4層Affineと呼んでいます。

つまり、中間層が3層Affineで、出力層が1層Affineの合計4層Affine構造となります。

4層AffineのLSTMで評価する説明変数の構成

今回は、下記の3種類の説明変数を用いて、4層Affine化したLSTMの予測精度の評価を行います。

  • 評価する説明変数の構成

    1. 5日分の日経平均株価 × 5段のRNN

    2. 1日分の日経平均株価およびテクニカル指標 × 5段のRNN

    3. 5日分の日経平均株価およびテクニカル指標 × 5段のRNN

日経平均株価は、始値、高値、安値、終値の4値です。

また、テクニカル指標は、移動平均、ボリンジャーバンド、MACD, RSI, ストキャスティクスです。

評価結果1: 説明変数の構成が5日分の日経平均株価 × 5段のRNNの場合

以下に、説明変数の構成が5日分の日経平均株価 × 5段のRNNの場合における学習曲線を示します。

学習曲線 5日分 日経平均株価 5段 RNN
学習曲線(5日分の日経平均株価 × 5段のRNN)

学習曲線の縦軸は、ログスケールで表示されています。

学習曲線から、VALIDATION ERRORの最小値が70000弱であることが確認できます。

続いて、AIモデルの評価結果に対する実際の日経平均株価と予測値の比較を行います。

下記は、実際の日経平均株価の終値(y__3)とAIモデルの終値に対する予測値(y'__3)を比較したグラフです。

5日分 日経平均株価 5段 RNN 終値 実際の値 予測値 比較
終値に対する実際の値と予測値の比較(5日分の日経平均株価 × 5段のRNN)

グラフの縦軸は日経平均株価([円])を、横軸は評価期間における営業日の日数を表しています。

また、上記の差分を算出し、グラフ化したものが下記となります。

5日分 日経平均株価 5段 RNN 終値 差分
終値の差分(5日分の日経平均株価 × 5段のRNN)

グラフの縦軸は終値の差分([円])を、横軸は評価期間における営業日の日数を表しています。

上記の差分のグラフから、AIモデルの終値に対する予測値は、実際の終値に対して±800円の範囲で収まっていることが確認できます。

さらに、終値に対するRMSE(Root Mean Squared Error, 二乗平均平方根誤差)を算出すると、319.34円となりました。

ちなみに、RMSEの算出式は、下記となります。

  • $${RMSE = \sqrt{\frac{1}{n}\sum\limits_{i=1}^{n}(y_i-\hat{y}_i)^2}}$$

$${y_i}$$が日経平均株価の終値(y__3)に、$${\hat{y}_i}$$がAIモデルの終値に対する予測値(y'__3)に相当します。

評価結果2: 説明変数の構成が1日分の日経平均株価およびテクニカル指標 × 5段のRNNの場合

以下に、説明変数の構成が1日分の日経平均株価およびテクニカル指標 × 5段のRNNの場合における学習曲線を示します。

学習曲線 1日分 日経平均株価 テクニカル指標 5段 RNN
学習曲線(1日分の日経平均株価およびテクニカル指標 × 5段のRNN)

学習曲線の縦軸は、ログスケールで表示されています。

学習曲線から、VALIDATION ERRORの最小値が70000弱であることが確認できます。

続いて、AIモデルの評価結果に対する実際の日経平均株価の終値(y__3)と終値に対する予測値(y'__3)を比較した結果を以下に示します。

1日分 日経平均株価 テクニカル指標 5段 RNN 終値 実際の値 予測値 比較
終値に対する実際の値と予測値の比較(1日分の日経平均株価およびテクニカル指標 × 5段のRNN)

上記の差分を算出し、グラフ化したものが下記となります。

1日分 日経平均株価 テクニカル指標 5段 RNN 終値 差分
終値の差分(1日分の日経平均株価およびテクニカル指標 × 5段のRNN)

上記の差分のグラフから、AIモデルの終値に対する予測値は、実際の終値に対して±800円の範囲で収まっていることが確認できます。

さらに、終値に対するRMSEを算出すると、321.65円となりました。

評価結果3: 説明変数の構成が5日分の日経平均株価およびテクニカル指標 × 5段のRNNの場合

説明変数の構成が5日分の日経平均株価およびテクニカル指標 × 5段のRNNの場合は、説明変数の要素数が多くなってしまいます。

このため、中間層のAffine(Affine_M1~Affine_M3)に対するOutShapeパラメータを100から500に増やしました。

この変更に伴い、他のパラメーターも調整しました。

パラメーターを変更したAIモデルの構造図は次の通りです。

5日分 日経平均株価 テクニカル指標 5段 RNN AIモデル 構造図
AIモデルの構造図(5日分の日経平均株価およびテクニカル指標 × 5段のRNN)

以下に、説明変数の構成が5日分の日経平均株価およびテクニカル指標 × 5段のRNNの場合における学習曲線を示します。

学習曲線 5日分 日経平均株価 テクニカル指標 5段 RNN
学習曲線(5日分の日経平均株価およびテクニカル指標 × 5段のRNN)

学習曲線の縦軸は、ログスケールで表示されています。

流石に、説明変数およびAffineのOutShapeパラメーターが増加したため、AIモデルの学習時間が11時間10分24秒まで伸びました。

さて、肝心のVALIDATION ERRORの最小値ですが、数値的には70000弱でこれまでのケースと変わらないレベルでした。

続いて、AIモデルの評価結果に対する実際の日経平均株価の終値(y__3)と終値に対する予測値(y'__3)を比較した結果を以下に示します。

5日分 日経平均株価 テクニカル指標 5段 RNN 終値 実際の値 予測値 比較
終値に対する実際の値と予測値の比較(5日分の日経平均株価およびテクニカル指標 × 5段のRNN)

上記の差分を算出し、グラフ化したものが下記となります。

5日分 日経平均株価 テクニカル指標 5段 RNN 終値 差分
終値の差分(5日分の日経平均株価およびテクニカル指標 × 5段のRNN)

上記の差分のグラフから、AIモデルの終値に対する予測値は、実際の終値に対してほぼ±800円の範囲で収まっていることが確認できます。

さらに、終値に対するRMSEを算出すると、321.81円となりました。

比較対象として4層Affine構造のAIモデルに対する評価結果を振り返る

比較対象として、過去に行った4層Affine構造のAIモデルに対する評価結果を下記に示します。

4層 Affine AIモデル 構造図
4層Affine構造のAIモデルの構造図

説明変数はの構成は、下記の通りです。

  • 評価する説明変数の構成

    • 5日分の日経平均株価およびテクニカル指標

学習曲線は、以下の通りです。

4層 Affine 学習曲線 5日分 日経平均株価 テクニカル指標
学習曲線(4層Affine構造、5日分の日経平均株価およびテクニカル指標)

VALIDATION ERRORの最小値は70000強であり、LSTM構造のAIモデルを使った場合と比べると、少し大きい印象です。

続いて、AIモデルの評価結果に対する実際の日経平均株価の終値(y__3)と終値に対する予測値(y'__3)を比較した結果を以下に示します。

4層 Affine 5日分 日経平均株価 テクニカル指標  終値 実際の値 予測値 比較
終値に対する実際の値と予測値の比較(4層Affine構造、5日分の日経平均株価およびテクニカル指標)

上記の差分を算出し、グラフ化したものが下記となります。

4層 Affine 5日分 日経平均株価 テクニカル指標 5段 RNN 終値 差分
終値の差分(4層Affine構造、5日分の日経平均株価およびテクニカル指標)

上記の差分のグラフから、AIモデルの終値に対する予測値は、実際の終値に対してほぼ±800円の範囲で収まっていることが確認できます。

さらに、終値に対するRMSEを算出すると、328.04円となりました。

結果に対する考察

終値に対するRMSEの値を整理すると、以下の通りです。

  • 終値に対するRMSEの値

    • LSTM構造(4層Affine)

      • 5日分の日経平均株価 × 5段のRNNの場合 → 319.34円

      • 1日分の日経平均株価およびテクニカル指標 × 5段のRNNの場合 → 321.65円

      • 5日分の日経平均株価およびテクニカル指標 × 5段のRNNの場合 → 321.81円

    • (参考)4層Affine構造

      • 5日分の日経平均株価およびテクニカル指標の場合 → 328.04円

終値に対するRMSEの値は、AIモデルの構造の違い(4層Affine構造、あるいは、LSTM構造(4層Affine))に関係なく、およそ320円前後でした。

また、学習曲線におけるVALIDATION ERRORの最小値にも大きな差分は見られませんでした。

このため、VALIDATION ERRORの最小値と終値に対するRMSEの値には相関関係が成り立ちそうです。

現状は、何をやってもVALIDATION ERRORの最小値が70000前後であり、終値に対するRMSEが320円程度となります。

これ以上の予測精度の向上を図るには何をすれば良いのか、全く見当もつきません。

とりあえず、今回の結果から、説明変数にテクニカル指標を加えなくても、特に予測精度には影響がなさそうだということが分かりました。

このため、説明変数の構成として、もう少し日数を増やしたり、あるいは、RNNの段数を増やしたりした場合に予測精度がどうなるかを確認してみます。

この記事が気に入ったらサポートをしてみませんか?