Table of Contents
ドル円の期待値予測モデルを開発している。
単体モデルでも、そこそこのパフォーマンス(例 Val10週/Forward6週 Avg 2 pips/trade)は出る。ただし、トレード数は少ない。
複数のモデルの予測値を単純平均してみると、パフォーマンスが単体モデルよりも明らかに改善した。トレード数も増えた。
複数モデルのアンサンブルは、機械学習において、数少ない 再現性が高い改善手法 の1つと言える。
単体モデルの限界
単体モデルは、訓練期間に存在したパターンへ強く適応しやすい。
学習期間では機能していた特徴量の組み合わせが、未知期間では機能しなくなることも多い。
- 学習期間では良い成績
- Validation でも悪くない
- しかし未知の Forward や Live で崩れる
という現象が起きる。
これが典型的な Overfitting(過学習) だ。
単体モデルは、ある意味で 「学習の期間に最適化された1つの仮説」 に近い。
なぜアンサンブルが効くのか
アンサンブルの核心は、独立した誤差を平均して相殺すること にある。
もし複数のモデルが、
- それぞれ異なる視点を持ち
- 完全には相関しておらず
- 過学習ポイントもズレている
ならば、平均を取ることで個別モデルの「癖」が薄まる。
逆に、複数モデルに共通する部分だけが残る。
つまり、
一般化されたシグナル(共通要素)だけが生き残る
そう、我々が求めている一般化がここにある。
弱学習器(Weak Learner)の条件
アンサンブルで重要なのは、各モデルが「違う」こと だ。
全部似たモデルを集めても意味がない。
例えば、
- 学習期間を変える
- 特徴量セットを変える
- モデル構造を変える
- シード値を変える
- 損失関数を少し変える
- Entry条件を少し変える
などで、モデルの視点をずらす。
理想は、 予測相関が中程度(例: 0.3〜0.7程度) で、誤差も独立している状態。
相関が高すぎると、全員が同じ場所で失敗する。
逆に独立性があるほど、誤差平均の効果が効く。
Bagging(バギング)
アンサンブルの古典的手法が Bagging(Bootstrap Aggregating) だ。
考え方はシンプルで、
- 訓練データをランダムサンプリング
- 少しずつ異なるデータで複数モデルを学習
- 出力を平均する
というもの。
各モデルが異なるデータを学習するため、予測の癖や誤差が少しずつズレる。
その結果、平均化によって過学習由来のノイズが打ち消される。
特に、
「学習データに合わせ込みやすいモデル」ほど効果が大きい
モデルごとの“癖”を薄め、共通して有効なシグナルだけを残しやすくなる。
なお、金融時系列であるFX予測においては、ブロックに分割して、時系列を維持したまま、サンプリングしている。
アンサンブル方法
複数のモデルの出力を使って、平均、加重平均、閾値越え、投票制などのアンサンブルができる。
組み合わせパターンが多いので、遺伝的アルゴリズム(Genetic Algorithm/GA)で、探索した。
以下のようなアンサンブルを使用している。
- 複数モデルの単純平均
- 上位2つのモデルのそれぞれの閾値以上
- 下位1つのモデルの閾値以下での回避
単体モデルと比較すると、アンサンブルの方が明らかに上回ることが確認できた。
エッジになる
複数または大量のモデルのアンサンブルを使う、アンサンブルの方法を工夫することは、エッジになる得るだろう。