見出し画像

二値分類の過学習対策 AIを使って日経平均株価の予測に挑戦 学習データマシマシ編


前回の記事より、今後の課題を振り返る

前回は、翌営業日の日経平均株価が上がるか、下がるかを予測する二値分類に関して、過学習の状態に陥ってしまったことへの対策の検討を行いました。

一般的に、過学習への対策は以下の通りです。

  • 過学習への対策

    • 学習データ(説明変数)の見直し

    • AIモデルの見直し

前回は、学習データの見直しとして、ローソク足の情報(終値、始値、高値、安値)を5日分まとめてAIモデルに入力しました。

その結果、僅かではありますが、Accuracy(分類精度)が50.29%から56.73%に改善しました。

今回は、さらなる学習データの見直しを進めることで、過学習の改善を図りたいと思います。

学習データの内容

前回の学習データと今回の学習データの内容を以下に示します。

  • 学習データの内容

    • 前回の学習データ

      • 下記のデータを5営業日分まとめて1セットとしてAIモデルに入力

        • ローソク足(終値、始値、高値、安値)

      • 1行20列のベクトルデータ

      • ローソク足の最大値、最小値に基づきMin-Max正規化を実施

    • 今回の学習データ

      • 下記のデータを5営業日分まとめて1セットとしてAIモデルに入力

        • ローソク足(終値、始値、高値、安値)

        • 移動平均(5, 25, 75日)

        • ボリンジャーバンド(±2σ, ±1σ, 中心線)

        • MACD(MACD, MACDシグナル)

      • 1行70列のベクトルデータ

      • 下記のグループ毎にMin-Max正規化を実施

        • グループ1: ローソク足、移動平均

        • グループ2: ボリンジャーバンド

        • グループ3: MACD

AIモデルに使用したRNN LSTMの構造図

学習データのフォーマットに合わせてパラメーターを修正したLSTMの構造図を下記に示します。

RNN LSTM AIモデル 構造図
修正したRNN LSTMによるAIモデルの構造図

前回使用したAIモデルに対する修正箇所は、下記の2カ所です。

  • AIモデルの修正箇所

    • InputSize70に修正

    • ReshapeOutShape5,14に修正

Reshapeで1行70列のベクトルデータを5行14列のベクトルデータに変換しています。

そして、RecurrentInputおよびRecurrentOutputで挟まれた層では、分割された1行14列のベクトルデータに対して、処理を合わせて5回行います。

AIモデルの学習および評価を実行

修正したAIモデルに今回作成したRNN用の学習データを学習させた際の学習曲線を下記に示します。

修正したRNN LSTMのAIモデルによる二値分類の学習曲線

学習の途中でリセットのような状況が確認される点も含めて、前回の結果と類似した形状となりました。

続いて、今回の評価結果に対する混同行列を示します。

RNN LSTM AIモデル 二値分類 混同行列
修正したRNN LSTMのAIモデルによる二値分類の混同行列

比較のため、下記に前回の評価結果に対する混同行列を示します。

前回 RNN LSTM AIモデル 二値分類 混同行列
前回のRNN LSTMのAIモデルによる二値分類の混同行列

期待とは裏腹に、Accuracy(分類精度)が56.73%から51.20%に低下してしまいました。

今回は、学習データの情報量をかなり増やしたので、過学習が少しは改善されるだろうと期待していました。

しかし、結果は若干の性能低下でした。

もしかしたら、検討の方向性が間違っているのかもしれません。

二値分類のこれまでの経緯を振り返ると、AIモデルの構造を変えたことによる効果が大きかった事実があります。

このため、過学習に対しても、AIモデルの構造に対する検討に注力した方が良いのかもしれません。

今後の課題

過学習への対策として、AIモデルの構造を見直したいと思います。

インターネットで過学習への対策について調べてみると、ドロップアウトと呼ばれる手法が紹介されていました。

ドロップアウトとは、多層化されたニューラルネットワーク内のノードをランダムで不活性にするというものです。

ノードを不活性にするとは、要するに学習させないということです。

幸いなことに、Neural Network ConsoleにはDropoutが用意されていました。

改めて、Neural Network Consoleの利便性の高さを実感しました。

次回は、過学習に対するドロップアウトの効果について検証したいと思います。

AIモデルのデータについて

今回作成したAIモデルのデータは、Googleドライブにて共有しています。

URL: https://drive.google.com/drive/folders/1VFJ6m5QV2tD2OGHVBBXgc0_jMiaqzP1D?usp=drive_link

  • N225_LSTM_Affine100N_BB-MACD_5Days.sdcproj

    • Neural Network Console用のプロジェクトファイル

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