![見出し画像](https://assets.st-note.com/production/uploads/images/132352922/rectangle_large_type_2_18c920c1cb88f798ebb92a3c311beb75.png?width=1200)
二値分類の過学習対策 AIを使って日経平均株価の予測に挑戦 ドロップアウトってどうなのよ編
前回の記事より、今後の課題を振り返る
前回は、翌営業日の日経平均株価が上がるか、下がるかを予測する二値分類に関して、過学習の状態に陥ってしまったことへの対策の検討を行いました。
具体的には、学習データの見直しとして、5日分のローソク足(終値、始値、高値、安値)に下記のデータを追加しました。
新たに追加した学習データ
移動平均(5, 25, 75日)
ボリンジャーバンド(±2σ, ±1σ, 中心線)
MACD(MACD, MACDシグナル)
しかし、期待むなしくAccuracy(分類精度)が56.73%から51.20%に低下してしまいました。
今回は、過学習への対策の一つであるドロップアウトを検証します。
ちなみに、学習データは前回のものをそのまま使用することとします。
AIモデルに使用したRNN LSTMの構造図
ドロップアウトを追加したLSTMの構造図を下記に示します。
![ドロップアウト 追加 RNN LSTM AIモデル 構造図](https://assets.st-note.com/img/1708865602546-z9pVYMVYRC.png?width=1200)
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モデル 二値分類 学習曲線](https://assets.st-note.com/img/1708866315800-g5pS2F7pLt.png?width=1200)
Epochを5000としましたが、学習曲線のCOSTとTRAINING ERRORは、
未だ低下している途中の段階です。
一方で、VALIDATION ERRORは、およそ0.680前後を行ったり来たりしているのが確認できます。
ドロップアウトを追加したことにより、VALIDATION ERRORも低下することを期待したのですが、そうはなっていません。
しかし、これまでの過学習の状態とは様子が異なることは理解できます。
続いて、今回の評価結果に対する混同行列を示します。
![ロップアウト 追加 RNN LSTM AIモデル 二値分類 混同行列](https://assets.st-note.com/img/1708866715046-BGxMcZfOZ6.png)
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用のプロジェクトファイル