これまでの記事はこちら
今回はRandomForestについて解析していきます。
5.1 なぜいまRandomForestを見直すのか
株価予測や時系列リターン予測の文脈では、Gradient Boosting(LightGBMやXGBoost)が圧倒的に人気です。
しかし今回作成する計算モデルは、 LightGBM × RandomForest(RF)のアンサンブルを採る構成となっております。
理由は3つあります。
- 過学習耐性:LightGBMは学習速度が速く強力だが、やや攻撃的。RFは“守備”が強い。
- ノイズ平均化:RFはバギング(Bagging)により、特徴量のノイズを平均化できる。
- 安定性:ハイパラ感度が低く、データのゆらぎに強い。
とくに短期リターン予測のように「正解が曖昧」「特徴量相関が高い」タスクでは、RFの“丸みのある”挙動がLightGBMの暴れを緩和します。
5.2 木モデルの「直感」:森の中の多数決
RandomForest(RF)は「たくさんの決定木を作って、それらの平均を取る」というシンプルな発想に立ちます。
決定木は1本だと過学習しやすいですが、森(Forest)にすると、平均によってノイズが消えるのです。
数式で表すと下記のようになります
$\hat{f}(x)=\frac{1}{M}\sum_{m=1}^{M} T_m(x)$
ここで
- M:木の本数
- Tm(x):第m本目の決定木の出力(例えば、平均リターン)
各木は、データの一部サンプルと一部特徴量だけを使って訓練されます。
これにより、木ごとに少し違う「視点」を持たせ、全体ではバラバラな過学習を平均で打ち消すことができます。
5.3 「バギング」がノイズを平均化する仕組み
RFの中核は「Bagging(Bootstrap Aggregating)」。
これは「訓練データを何回もランダムに抽出(復元抽出)」して、それぞれに木を学習させる手法です。
その結果:
- 各木は似ているが、完全には一致しない
- それぞれの木の誤差は独立に近い
- 平均を取ると、分散が1/M倍に減少する(統計的な平均効果)
つまりRFは、ノイズを自動的に平均してくれる「分散低減マシン」なのです。
この性質が、「時系列における不安定なシグナル」に強い理由です。
5.4 バイアス・バリアンス分解で見る直感
RFの良さを数式で見える化すると、以下の分解が鍵です。
$$E!\left[(\hat{f}(x) – f(x))^2\right]
= \text{Bias}^2 + \text{Variance} + \text{Irreducible\ Error}$$
- Bias:モデルが単純すぎるために生じる構造的ズレ(例:線形で非線形を表せない)
- Variance:データに過敏に反応しすぎることによるブレ
- Irreducible Error:市場ノイズ(いくら学習しても減らない)
RFはVarianceを平均で下げる戦略を取ります。
その代わり、ややBias(なだらかさ)が増えますが、株価のような高ノイズデータではその方が安全です。
5.5 ハイパーパラメータの構造
RandomForestは、LightGBMのような複雑なハイパラ調整は不要です。
しかし、数値の直感を持っておくと「過学習」「鈍感」「無駄に重い」を避けられます。
(1) n_estimators(木の本数)
- 意味:森の中の木の数。大きいほど平均化効果が高まる。
- デフォルト100だが、300〜600本程度で安定することが多い。
- 1,000を超えても改善はほぼ飽和。CPU負荷だけ増える。
設定:600本 → 妥当。MAPE安定化に寄与。
(2) max_depth(木の深さ)
- 意味:1本あたりの枝分かれの深さ。
- 大きいと複雑な関係を拾えるが、過学習する。
- 小さいと単純すぎてBiasが増える。
- 株価のようなノイズデータでは、5〜10が安全圏。
設定:8 → 攻守バランス◎。
(3) min_samples_leaf
- 意味:葉ノードに残す最小サンプル数。
- 大きくすると木が浅くなり、ノイズに鈍感になる。
- 通常 3〜10 程度が良い。
(4) max_features
- 意味:各木で使う特徴量の割合。
'sqrt'(特徴量の平方根)設定は、ノイズを分散させる標準設定。- 特徴量が50個程度あるなら、1木あたり7前後が毎回ランダムに選ばれる。
- 過度な相関特徴がある場合は、
'log2'や0.3も試す価値あり。
(5) bootstrap
- 意味:復元抽出のON/OFF。
- True(デフォルト)ならBaggingが働く。Falseにすると性能が下がる。
(6) random_state
- 再現性のため固定する。42で固定は定番。
5.6 特徴量の多様性と「ノイズ共鳴」
RFは「木ごとに異なる特徴量の組み合わせ」を見るため、同じ特徴量が複数の文脈で評価される。
これが多様性による安定化を生む一方で、過剰に似た特徴量が多いと平均効果が薄まる。
特徴量が大量(20~)な場合の構成では:
- 相関が強い(例:
Close_lag_1,Close_lag_2,Close_lag_3,SMA_5,EMA_5)が多い。
→ **max_features=’sqrt’**設定により、毎回別々の組み合わせで木が構成され、ノイズ共鳴を防いでいる。 Volume系やATR系を混ぜることで、「リスク」「勢い」「流動性」の3軸がカバーされる。
この多軸性こそRFの強み。LightGBMのように1方向に最適化しすぎない。
5.7 LightGBMとRFの「相補性」
LightGNMとRFを合わせた最終形態の数式が
$$\hat{y}{\text{ensemble}} = 0.6\,\hat{y}{\text{LGBM}} + 0.4\,\hat{y}_{\text{RF}}$$
です。
この設計は直感的に「攻め×守り」。
- LGBM:勾配方向に最適化 → 変化点を素早く捉える
- RF:平均化で安定 → ノイズをなだめる
その結果:
- トレンド転換点ではLGBMが主導し、
- ボラ高期ではRFが全体を安定化させる。
この「動と静の融合」により、CVでMAPE分散が低く抑えられます。
5.8 ハイパラチューニングの実践フロー
実務でやるべき順序をまとめます。
| 段階 | 目的 | 変更パラメータ | 判断基準 |
|---|---|---|---|
| ① 初期安定化 | 過学習防止 | max_depth, min_samples_leaf | CVの分散を最小化 |
| ② 分散低減 | 精度↑より安定性重視 | n_estimators | ±1%以内で収束 |
| ③ 多様性調整 | 特徴量相関対策 | max_features | Top-K特徴の偏りを減らす |
| ④ コスト最適化 | 計算量削減 | n_jobs, max_samples | 学習時間の合理化 |
RFはハイパラ感度が低いので、最後は安定性(標準偏差)で評価するのがコツです。
5.9 モデル診断で見る「健全な森」
RandomForestは「木の平均」なので、木ごとの寄与を見ることで直感的に理解できます。
- Feature Importance:
feature_importances_で算出。- 上位特徴量が毎回似通っていれば安定。
- スプリットごとにバラけるなら過学習傾向。
- Out-of-Bag (OOB) Error:
oob_score=Trueで自動算出。- CVに近い概算が即座に得られる。
- 時系列では完全には独立していないが、初期確認には便利。
5.10 実務での失敗例とリカバリ
- 木の本数を少なくして高速化したら不安定に
→ n_estimatorsを最低300に戻す。 - max_depthを深くしたらCV分散が爆増
→ 深さ8→5へ下げるとMAPEの±SDが収束。 - Volume系が支配的になり、地合い変化で性能悪化
→ max_featuresをsqrt→0.5に変更し、多様性を増やす。 - 最新データで異常値が多く、RFの精度が急落
→min_samples_leafを大きく(10)して過剰追随を防ぐ。
5.11 RFの“哲学”:学習しすぎない勇気
LightGBMが「勾配に忠実に追いかける職人」だとすれば、RandomForestは「データの声を平均して聴く賢者」です。
短期ノイズが多い金融市場では、後者の冷静さがときに救いになります。
RFの出力は、まるで「木々のささやきの平均」。
1本1本は不完全でも、森全体が持つ“ゆらぎの方向”は正しい。
その統計的知恵を借りるのが、RFの真価です。
5.12 まとめ:RandomForestを使いこなす5箇条
- 木を増やして安定を買う(n_estimators=300〜600)
- max_depthは5〜10、min_samples_leafは3〜10で守備的に。
- **max_features=’sqrt’**で特徴量の多様性を確保。
- LGBMとのアンサンブルで“動と静”を両立。
- CVの分散を見る——平均より標準偏差を小さくする調整を。
5.13 次章への橋渡し
次章では、RF・LGBMアンサンブルで得られた「予測リターン」を、
実際のポートフォリオ運用へどう接続するか——
すなわち「シグナルの意思決定変換」を扱います。
- どのくらいの閾値を超えたらポジションを取るか?
- MAPEやMAEをどう“リスク許容幅”に変換するか?
- ATR・HVをどう使って損益比を定義するか?
そこからが、いよいよ“機械学習でトレードする”実務の核心になります。













コメントを残す