見出し画像

二値分類の過学習対策 AIを使って日経平均株価の予測に挑戦 ドロップアウトってどうなのよ編


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

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

具体的には、学習データの見直しとして、5日分のローソク足(終値、始値、高値、安値)に下記のデータを追加しました。

  • 新たに追加した学習データ

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

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

    • MACD(MACD, MACDシグナル)

しかし、期待むなしくAccuracy(分類精度)が56.73%から51.20%に低下してしまいました。

今回は、過学習への対策の一つであるドロップアウトを検証します。

ちなみに、学習データは前回のものをそのまま使用することとします。

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

ドロップアウトを追加したLSTMの構造図を下記に示します。

ドロップアウト 追加 RNN LSTM AIモデル 構造図
ドロップアウトを追加したRNN LSTMによるAIモデルの構造図

AffineとTanhの間にDropoutを追加しました。

Neural Network Consoleのマニュアルによると、Dropoutに関する説明は次の通りです。

  • ドロップアウトの説明

    • 入力の要素を指定した確率で0にします。

    • P: 要素を0にする確率を0.0~1.0の範囲で指定します

今回の検証では、Pを0.5(デフォルト値)とします。

ドロップアウトの確率を0.5とした根拠は、隠れ層でドロップアウトを使用する場合は50%前後が良いとのインターネット情報を見つけたからです。

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

ドロップアウトを追加したAIモデルにRNN用の学習データを学習させた際の学習曲線を下記に示します。

ドロップアウト 追加 RNN LSTM AIモデル 二値分類 学習曲線
ドロップアウトを追加したRNN LSTMのAIモデルによる二値分類の学習曲線

Epochを5000としましたが、学習曲線のCOSTとTRAINING ERRORは、
未だ低下している途中の段階です。

一方で、VALIDATION ERRORは、およそ0.680前後を行ったり来たりしているのが確認できます。

ドロップアウトを追加したことにより、VALIDATION ERRORも低下することを期待したのですが、そうはなっていません。

しかし、これまでの過学習の状態とは様子が異なることは理解できます。

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

ロップアウト 追加 RNN LSTM AIモデル 二値分類 混同行列
ロップアウトを追加したRNN LSTMのAIモデルによる二値分類の混同行列

Accuracy(分類精度)が51.20%から54.21%に僅かながら改善しました。

しかし、誤差の範囲内だと考えられます。

学習曲線のCOSTとTRAINING ERRORが低下を続けているため、Epochを増やすことでVALIDATION ERRORが低下する可能性があるのか、やってみないと分からない状況です。

しかし、Epochを5000としても、AIモデルの学習にかなりの時間を要するため、気軽に試すことは難しい状況です。

AIモデルの学習中にWindowsのタスクマネージャーでCPUとメモリの使用状況を確認してみたのですが、CPUは40%程度、メモリは85%程度でした。

CPUのリソースを85%程度まで使ってもらえると有難いのですが、この辺りの制御方法は良く分かりませんでした。

今後の課題

ドロップアウトをAIモデルに追加した結果、以前のように過学習が進むことは無さそうです。

しかし、VALIDATION ERRORを低下させるには至っていないのが現状です。

目指すべきは、VALIDATION ERRORをゼロに近づけることです。

そこで、次回はLSTMの中間層の構造を見直したいと思います。

現状はAffineが1層ですが、以前のようにAffineを4層にした場合にどうなるのかを確認します。

問題は、ドロップアウトをどのように追加すべきかという点ですが、良く分かりません。

このため、ドロップアウトを全く使わないケースドロップアウトを各層に追加したケースで結果を確認したいと思います。

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

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

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

  • N225_LSTM_Affine100N_Dropout_BB-MACD_5Days.sdcproj

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

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