Table of Contents
ドル円の期待値予測モデルを開発している。
単体モデルでも、そこそこのパフォーマンス(例 Val10週/Forward6週 Avg 2 pips/trade)は出る。ただし、トレード数は少ない。
複数のモデルの予測値を単純平均してみると、パフォーマンスが単体モデルよりも明らかに改善した。トレード数も増えた。
複数モデルのアンサンブルは、機械学習において、数少ない 再現性が高い改善手法 の1つと言える。
単体モデルの限界
単体モデルは、訓練期間に存在したパターンへ強く適応しやすい。
学習期間では機能していた特徴量の組み合わせが、未知期間では機能しなくなることも多い。
- 学習期間では良い成績
- Validation でも悪くない
- しかし未知の Forward や Live で崩れる
という現象が起きる。
これが典型的な Overfitting(過学習) だ。
パラメーター過剰適合 p-hacking とも言う。
単体モデルは、ある意味で 「学習の期間に最適化された1つの仮説、モデル」 に近い。
次のステージに、行きたいかい?
アンサンブルは普通で天才か
アンサンブルの核心は、独立した誤差を平均して相殺すること にある。
もし複数のモデルが、
- それぞれ異なる視点を持ち
- 完全には相関しておらず
- 過学習ポイントもズレている
ならば、平均を取ることで個別モデルの「癖」が薄まる。
逆に、複数モデルに共通する部分だけが残る。
つまり、
一般化されたシグナル(共通要素)だけが生き残る
そう、我々が求めている一般化がここにある。
弱学習器(Weak Learner)の条件
アンサンブルで重要なのは、各モデルが「違う」こと だ。
全部似たモデルを集めても意味がない。
例えば、
- 学習期間を変える
- 特徴量セットを変える
- モデル構造を変える
- シード値を変える
- 損失関数を少し変える
- Entry条件を少し変える
などで、モデルの視点をずらす。
非相関(または低相関)なモデルを N個アンサンブルすると、理論上のノイズ(標準偏差)は最大で 1/sqrt(N) に減少する。
理想は、 予測値の相関が中程度(例: 0.3〜0.7程度) で、誤差も独立している状態。
- 相関 0.9以上
- ほぼ同じモデルを21個並べている状態
- ノイズも一緒に増幅しやすい
- 相関 0.3〜0.7
- 共通して学習している有効なパターンがある
- でも各モデル独自の揺らぎもある
- 平均化効果が期待できる
- 相関 0.0〜0.2
- 多様性は高い
- ただし「何も共有していない」可能性もある
相関が高すぎると、全員が同じ場所で失敗する。
逆に独立性があるほど、誤差平均の効果が効く。

この表は、10個のモデル出力のPearson相関係数行列
- 平均的な相関は約 0.35〜0.40 程度
- ほとんどのモデル間は 0.4〜0.55程度の中程度の相関
- 一部モデルはかなり独立した挙動
多くのモデルは同じ学習傾向を持っているが、完全なコピーではなく、いくつかは異なる情報を拾っている。
重要なのは モデル数そのものではなく、多様性(Diversification) である。
Bagging(バギング)
アンサンブルの古典的手法が Bagging(Bootstrap Aggregating) だ。
考え方はシンプルで、
- 訓練データをランダムサンプリング
- 少しずつ異なるデータで複数モデルを学習
- 出力を平均する
というもの。
各モデルが異なるデータを学習するため、予測の癖や誤差が少しずつズレる。
その結果、平均化によって過学習由来のノイズが打ち消される。
特に、
「学習データに合わせ込みやすいモデル」ほど効果が大きい
モデルごとの“癖”を薄め、共通して有効なシグナルだけを残しやすくなる。
なお、金融時系列であるFX予測においては、ブロックに分割して、時系列を維持したまま、サンプリングしている。
アンサンブル方法
複数のモデルの出力を使って、平均、加重平均、閾値越え、投票制などのアンサンブルができる。
組み合わせパターンが多いので、遺伝的アルゴリズム(Genetic Algorithm/GA)で、探索した。
以下のようなアンサンブルを使用している。
- 複数モデルの単純平均
- 上位2つのモデルのそれぞれの閾値以上
- 下位1つのモデルの閾値以下での回避
単体モデルと比較すると、アンサンブルの方が明らかに上回ることが確認できた。
モデル数を増やして飽和点を探す
何個までモデルを増やせば良いのか?については、
モデル数を徐々に増やし、そのたびに評価を実行する。
アンサンブルするモデル数を増やしていって、どの時点で、利益やFitnessがほとんど変わらなくなるか、飽和点が分かる。
- 5→10モデル:かなり改善
- 10→20モデル:まだ改善
- 20→40モデル:少し改善
- 40→80モデル:ほとんど変わらない
という結果になったとすると、40モデル前後で性能が飽和していることが分かる。
この「飽和点」が実用上の最適なモデル数になる。
Leave-One-Out(1モデルずつ除外)
アンサンブルで、モデルを採用するか、入れ替え・除外すべきかの判断をしたい場合は?
モデルを1つだけ除外して、評価を実行し、最終的なTotal PipsやFitnessがどう変化するかを見る。
Trade数、Win rate、Total pips、Avg pipsで集計して、各モデルがどれぐらい寄与しているか分かる。
| 除外してみたモデル | ΔPips | 例 |
|---|---|---|
| A | -168 | 寄与 |
| B | -97 | フィルター役 |
| C | -18 | 寄与がほぼない |
| D | -272 | 中核モデル |
さあ、市場に打ち勝とう