🐈

Act 30. 強化学習を学んで思ったこと

2024/12/12に公開

はじめに

Act 01. AIで外国為替を自動売買するまでの道のりをベースに学習を進めて行く。

前回は強化学習を少し学んでみて、今回から本格的に強化学習の勉強を…。
と言いたいところだが、実は書籍でずっと勉強していた。

使った教材は知人がプレゼントしてくれたコチラ

学習した感想

面白かったけど正直かなり難しかった。
特にディープラーニングが絡んで来てから難易度がました。

というのも、使用するフレームワークがDeZeroというもので、学習している書籍の1つ前の書籍で作ったのもらしい。
これの中身が良く分からないため、かなり手こずった。

時間がかかるけど1つ前の書籍から勉強するしかないかーと萎えていた時にふと思った。
強化学習は自動売買を行う時に必要だけど、とりあえず相場予測だけなら強化学習はいらないんじゃね??

ということでChatGTPさんに質問してみた。

ChatGPTさんの回答

相場予測が目的であれば、まずは 教師あり学習教師なし学習 を優先して学ぶのが適切です。これらは、予測タスクやパターン認識に特化しており、為替相場のような時系列データの分析に適しています。

1. 教師あり学習の適用と適したアルゴリズム

適用例

  • 過去の価格データ(時系列データ)を学習し、将来の価格や変動の方向を予測。
  • 特徴量(インプット)として以下を使用:
    • 為替の過去価格、移動平均、ボリンジャーバンドなどのテクニカル指標。
    • 経済指標やニュースなどの外部データ(上級レベル)。

適したアルゴリズム

  1. 線形回帰

    • 特徴量と目標値の間に直線的な関係がある場合に適しています。
    • 単純だが、為替相場の複雑な動きには十分でない場合が多い。
  2. ランダムフォレスト

    • 汎用性が高く、ノイズに強い。
    • 特徴量が多くても効果的に処理可能。
  3. 勾配ブースティング(XGBoost、LightGBM、CatBoost)

    • ランダムフォレストよりも高精度で、為替予測にもよく使用されます。
    • 特に、テクニカル指標を使った短期予測で効果的。
  4. ニューラルネットワーク

    • 特に、LSTM(Long Short-Term Memory) が為替予測で人気です。
      • 時系列データの長期的依存関係を捉えるのに優れています。
    • データが大量にある場合は、ディープラーニングも効果的。

2. 教師なし学習の適用と適したアルゴリズム

適用例

  • 為替相場の特定のパターンやクラスター(グループ)を発見する。
  • 目的:
    • 相場の変動パターンを分類。
    • 異常値(突発的な動き)を検知。

適したアルゴリズム

  1. クラスタリング(k-means, 階層型クラスタリング)

    • 為替の価格変動をグループ化し、特定の相場環境(レンジ相場、トレンド相場)を識別。
  2. 主成分分析(PCA)

    • 多数のテクニカル指標を使用する際に、次元を削減し重要な特徴量を抽出。
  3. 異常検知アルゴリズム

    • 突発的な価格変動や相場クラッシュの兆候を検知。
  4. 自己組織化マップ(SOM)

    • 相場データの非線形な特徴を視覚化・分類するのに役立ちます。

3. FX相場予測に適した特徴量

アルゴリズムを適用するには、良い特徴量を準備することが重要です。以下の特徴量を考慮してください:

  • 価格データ(Open, High, Low, Close)
  • 移動平均(SMA, EMA)
  • テクニカル指標(RSI、MACD、ボリンジャーバンド、CCI)
  • 出来高(Volume)
  • 経済イベント(金利発表、雇用統計など)

4. 学習プロセスの推奨フロー

  1. 教師あり学習の基本を学ぶ

    • 線形回帰やランダムフォレストで小さなデータセットからスタート。
    • 次に、XGBoostやLSTMなど高度なアルゴリズムを学習。
  2. 教師なし学習を学ぶ

    • PCAやk-meansを用いてデータの前処理や特徴抽出を試す。
  3. 実際の相場データを扱う

    • 過去の為替データ(例えば、Yahoo FinanceやFX業者のAPIで取得)を使い、特徴量を作成。
  4. モデルの評価

    • テストデータを用いて、予測精度(例えば、MAEやRMSE)を測定。
  5. モデル改善

    • 特徴量の工夫、ハイパーパラメータチューニング、複雑なモデルの導入を行う。

5. 結論と次のステップ

  • 教師あり学習(LSTMやXGBoost)を優先的に学習し、予測モデルを構築。
  • 教師なし学習(k-meansやPCA)を使ってデータを理解し、前処理や相場環境の分類に役立てる。

学習プロセスに関する詳細なアドバイスや、具体的な実装例が必要であれば、さらにサポートします!

今後の方針

検討

ということで、今後の方針が決定した。

まずはLSTMを学習する。これは必須。

次に、LSTMだけでは予測が行えない可能性があるため、欠点を補う内容について学習する。
ChatGTPさん曰く以下の課題があるらしい。

  1. データ前処理が必要
    LSTMはデータの品質に大きく依存します。
    為替相場のノイズが多いデータでは、適切な特徴量エンジニアリング(移動平均やRSIなど)や平滑化が必要。
  2. 単独では外部要因を考慮しにくい
    為替相場は金利政策、経済指標、ニュース、地政学リスクなど多くの外部要因に影響されます。
    LSTM単独では、これらの情報を十分に取り入れられない場合があります。
  3. 学習には大量のデータが必要
    LSTMはパラメータが多く、大量のデータが必要です。データが不足すると過学習のリスクがあります。
  4. 解釈性が低い
    LSTMの出力結果は「なぜその予測に至ったのか」がわかりにくく、相場予測における信頼性を高めるには、他のモデルや分析手法を補助的に使うことが推奨されます

なるほど。2については短期トレードを行う予定なので最悪無視しても良いと思っている。
3については1年分のデータがあるため、いったん大丈夫だろう。
1と4については結構大事になりそう。

ということで、1と4について何を学べばよいのか。
LSTMの効果を引き出し、不足を補うための具体的な方法は以下の通り。

他のアルゴリズムを組み合わせる

  • XGBoostやランダムフォレストとの併用

    • テクニカル指標や経済指標を使った特徴量エンジニアリングを行い、これらのモデルで重要な特徴量を抽出。
    • 抽出した特徴量をLSTMに入力として使う。
  • 異なるモデルの結果をアンサンブル
    LSTMと他のモデル(例えばARIMAやXGBoost)の予測結果を統合し、より正確な予測を行う。

特徴量エンジニアリングを強化

テクニカル指標(RSI, MACD, ボリンジャーバンドなど)や移動平均をLSTMに加えると、モデルが市場のトレンドや過去のパターンをより理解しやすくなる。
※特徴量エンジニアリングとは・・・モデルが学習しやすくするために、データから有益な特徴量を作成・選択するプロセスのこと

データの前処理

ノイズを軽減するために、平滑化や異常値検出を行い、LSTMへの入力データを改善する。

ハイブリッドアプローチ

教師なし学習のk-meansなどを使って市場の状態(例: トレンド相場、レンジ相場)をクラスタリングし、状態ごとにLSTMを適用したり、LSTMの予測を補強するために、単純なルールベース(例えば移動平均クロスオーバー戦略など)を加える。

ということで、XGBoost特徴量エンジニアリングデータ前処理について学習することに決定。

今後の方針まとめ

  1. 以下について、基本的な内容を学習し、どのようなことが出来るのか把握する

    • LSTM
    • XGBoost
    • データ前処理
    • 特徴量エンジニアリング
  2. 実際に手を動かし、簡単なデータから分析を行ってみる
    ※上記で学んだ4つの知識を可能な限り使用する

  3. 各項目について、より詳しく、不明点がなくなるほどにしっかりと学習する

  4. 実際にモデルを構築していく

これは仮決めなので全然順番変わるかもしれない。
それと、恐らく書籍で学習するので詳しい内容は記事にしないと思う。

何か思ったことや進展があったら記事に載せようと思う。

さいごに

2025年に予測モデルを完成させるつもりで進めて行き、2026年は精度の向上を図る。
2027年以降は強化学習に着手して自動化を行うところまで行けたらよいなと思う。

挫折しないように焦り過ぎず。頑張ろう。

ではまた

Discussion