機械学習 で 株価分析 にチャレンジ Part5

machine-learning-part5

これまでの記事はこちら

machine-learning-part5
machine-learning-part5
machine-learning-part5
machine-learning-part5

今回はRandomForestについて解析していきます。

5.1 なぜいまRandomForestを見直すのか

株価予測や時系列リターン予測の文脈では、Gradient Boosting(LightGBMやXGBoost)が圧倒的に人気です。
しかし今回作成する計算モデルは、 LightGBM × RandomForest(RF)のアンサンブルを採る構成となっております。

理由は3つあります。

  1. 過学習耐性:LightGBMは学習速度が速く強力だが、やや攻撃的。RFは“守備”が強い。
  2. ノイズ平均化:RFはバギング(Bagging)により、特徴量のノイズを平均化できる。
  3. 安定性:ハイパラ感度が低く、データのゆらぎに強い。

とくに短期リターン予測のように「正解が曖昧」「特徴量相関が高い」タスクでは、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_1Close_lag_2Close_lag_3SMA_5EMA_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_depthmin_samples_leafCVの分散を最小化
② 分散低減精度↑より安定性重視n_estimators±1%以内で収束
③ 多様性調整特徴量相関対策max_featuresTop-K特徴の偏りを減らす
④ コスト最適化計算量削減n_jobsmax_samples学習時間の合理化

RFはハイパラ感度が低いので、最後は安定性(標準偏差)で評価するのがコツです。


5.9 モデル診断で見る「健全な森」

RandomForestは「木の平均」なので、木ごとの寄与を見ることで直感的に理解できます。

  • Feature Importancefeature_importances_で算出。
    • 上位特徴量が毎回似通っていれば安定
    • スプリットごとにバラけるなら過学習傾向。
  • Out-of-Bag (OOB) Error
    • oob_score=Trueで自動算出。
    • CVに近い概算が即座に得られる。
    • 時系列では完全には独立していないが、初期確認には便利。

5.10 実務での失敗例とリカバリ

  1. 木の本数を少なくして高速化したら不安定に
    → n_estimatorsを最低300に戻す。
  2. max_depthを深くしたらCV分散が爆増
    → 深さ8→5へ下げるとMAPEの±SDが収束。
  3. Volume系が支配的になり、地合い変化で性能悪化
    → max_featuresをsqrt0.5に変更し、多様性を増やす。
  4. 最新データで異常値が多く、RFの精度が急落
    → min_samples_leafを大きく(10)して過剰追随を防ぐ。

5.11 RFの“哲学”:学習しすぎない勇気

LightGBMが「勾配に忠実に追いかける職人」だとすれば、RandomForestは「データの声を平均して聴く賢者」です。
短期ノイズが多い金融市場では、後者の冷静さがときに救いになります。

RFの出力は、まるで「木々のささやきの平均」。
1本1本は不完全でも、森全体が持つ“ゆらぎの方向”は正しい。
その統計的知恵を借りるのが、RFの真価です。


5.12 まとめ:RandomForestを使いこなす5箇条

  1. 木を増やして安定を買う(n_estimators=300〜600)
  2. max_depthは5〜10、min_samples_leafは3〜10で守備的に。
  3. **max_features=’sqrt’**で特徴量の多様性を確保。
  4. LGBMとのアンサンブルで“動と静”を両立。
  5. CVの分散を見る——平均より標準偏差を小さくする調整を。

5.13 次章への橋渡し

次章では、RF・LGBMアンサンブルで得られた「予測リターン」を、
実際のポートフォリオ運用へどう接続するか——
すなわち「シグナルの意思決定変換」を扱います。

  • どのくらいの閾値を超えたらポジションを取るか?
  • MAPEやMAEをどう“リスク許容幅”に変換するか?
  • ATR・HVをどう使って損益比を定義するか?

そこからが、いよいよ“機械学習でトレードする”実務の核心になります。

shota_py

メーカー勤務のエンジニアです。 自分の趣味である、「電気回路」、「ガジェット」「株式投資」、「Python」に関する記事をつらつらと書いています

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


ABOUT US
shota_py
メーカー勤務のエンジニアです。 自分の趣味である、「電気回路」、「ガジェット」「株式投資」、「Python」に関する記事をつらつらと書いています