決定木とアンサンブルとは

このページは 決定木アンサンブル を、初学者向けに短く整理するノートです。時系列の背景は 決定木とアンサンブル史、全体の座標は 古典機械学習モデル史 を参照してください。データの形・用語の整理前提と用語 に分けて書いています。

ざっくりいうと

  • 決定木:特徴量の値で「もし〜なら左、そうでなければ右」の 条件分岐を木状に積み上げ、葉で予測値やクラスを返すモデルです。
  • アンサンブル複数の学習器を組み合わせ、全体として誤差や分散を小さくする発想です。大きく 並列型(バギング系)逐次型(ブースティング系) に分けて理解すると整理しやすいです。
  • ランダムフォレスト勾配ブースティング系は、表形式データでいまでも 強い既定候補 になりやすい部類です。

決定木で何をしているか

各ノードで「どの特徴のどのしきい値で切るか」を選びます。分類木では葉で 多数決 や頻度に基づく確率、回帰木では葉の領域の 平均 などが典型です(実装依存の細部あり)。分割の良さは、分類では ジニ係数エントロピー などの 不純度の減少、回帰では 分散の減少 などで評価されることが多いです。

長所(短く):非線形な関係や、特徴同士の 相互作用 を、別途交互作用項を大量に作らなくても取り込みやすい。木構造がそのままルールとして見えるので 説明しやすい ことがある。

短所(短く):深くすると 過学習 しやすい。データや乱数の摂動で分岐が変わり、単体では 不安定 になりやすい。深さ・葉の最小サンプル数・剪定(pruning) などで抑える一方、浅すぎると表現力不足になります。

学習フェーズの全体の流れ(典型)

木の形(どこで葉にするか・枝の深さ)は、最初から一枚の設計図で与えるのではなく、次の手順を根から繰り返し、停止ルールに達したところで葉にすることで決まります。CART 型の 貪欲分割(各ノードで局所的にいちばん良い分割を選ぶ)のイメージです。実装や連続特徴の扱いはライブラリ依存の細部があります。

  1. 最初:全学習サンプルを 根ノード に置く。
  2. 今のノードに残っているサンプルだけを対象にする。
  3. 分割候補を列挙する(例:各特徴について、しきい値の取り方をデータに合わせて試す。カテゴリ特徴は分け方のルールが実装に従う)。
  4. 候補ごとに、分類なら 不純度の減少、回帰なら 分散の減少 などで 良さ を数値化する。
  5. いちばん良い候補を1つ採用し、条件(特徴+しきい値や分岐規則)を確定し、サンプルを 左右の子 に分ける。
  6. 各子ノードに対して 2〜5 を同じように繰り返す(再帰的に学習する)。

**いつ分岐を止めて葉にするか(木の形を決める側)**の例:

  • 深さやノード数などの 上限 に達した。
  • ノード内のサンプル数が これ以下ならこれ以上分けないmin_samples_leaf など)。
  • これ以上分けてもスコアの改善が小さい
  • 分類で クラスがもう1種類だけ(純)など、分ける意味がない。
  • 実装既定の その他の停止条件

要点として、全体で数理最適な木を一発探索しているわけではなく各ステップで「親より子のまとまりがよくなる分割」を順に選んでいく、というのが典型です。より初歩の用語は 前提と用語 を参照してください。

ラベル付けと分岐設計の役割分担

  • 正解ラベルが付く単位は、通常は「特徴次元(列)」ではなく 各サンプル(行) です。
  • どのノードで何を条件に分けるかは、学習時にアルゴリズムが不純度や分散の減少を基準に 自動で選択 します。
  • 人が主に決めるのは、ラベル定義(何を正解とみなすか)、特徴設計(どんな列を用意するか)、および深さや最小サンプル数などの ハイパーパラメータ です。
  • ラベル作成はタスクにより、専門家・熟練アノテータ・既存ルールからの自動付与など、運用形態が変わります。

学習と推論の対応(短く)

学習(訓練) 推論(予測)
やること 各ノードの 条件葉にするか をデータから決める できた木 に入力を流し、葉まで降りて 答え を返す
不純度など どの分割を選ぶか の評価に使うことが多い 普通は使わない(条件どおりに左右へ進むだけ)

アンサンブルで何が起きているか

なぜ組み合わせが効くか(直感):単一モデルの誤りがランダムにばらつくなら、平均や投票で 打ち消し合い やすくなります。木が不安定=学習のたびに少し違う木ができる、という性質は、バギングのように ばらつきを増やしてから平均する 発想と相性がよいです。ブースティングは 前の段階の失敗を次が埋める、という別の力学です。

バギングとランダムフォレスト

バギング:学習データを ブートストラップ標本(復元抽出で何度も引き直した部分集合)ごとに別モデルを学習し、平均または多数決 でまとめます。

ランダムフォレスト:バギングした木に加え、各分割で 使ってよい特徴をランダムに一部だけに制限(特徴サブサンプリング)し、木同士の 相関を下げて 集約の効果を高めます。

ざっくり強み:単木より頑健で、ハイパラ調整の負担が比較的軽いことも多い。特徴量重要度 など説明用の指標を出しやすい一方、後述のとおり 因果の証明にはならない 点に注意します。

ブースティング

弱学習器を 順番に 足し、残った誤差や誤分類を 次が重点的に直す 発想です。古典的には AdaBoost、勾配に沿って足す系は Gradient Boosting と、その実装族(例:XGBoost、LightGBM、CatBoost)が代表です。

バギングとの対比(運用上のイメージ)

観点 バギング/RF(典型) ブースティング(典型)
学習の並行性 木どうしを並列に学習しやすい 逐次で 遅くなりがち
調整 比較的ラクなことが多い 木の数・深さ・学習率・早期停止 などが効きやすい
過学習 単木よりはマシでも無関係ではない 検証設計を誤ると手元精度だけ良く見えやすい、と言われることがある

投票とスタッキング

ソフト/ハード投票:複数モデルの 確率 を平均するか、クラスラベル を多数決するかの違い、という理解で足りることが多いです。

スタッキング:一段目の出力を、二段目のメタモデルの 入力特徴 にします。性能は伸びうる一方、データリーク(検証と学習の混線)に注意が必要で、実装と評価設計の難度が上がります。

強みと限界(短く)

強み

  • 非線形・相互作用を取り込みやすく、表形式データで 強いことが多い
  • ランダムフォレストやブースティング実装は、欠損やカテゴリを ライブラリ側が扱いやすい 設計になりがち。
  • 特徴量重要度など、説明のための材料を出しやすい。

限界

  • 複雑にすると 解釈は簡単ではなくなる(「木だから常に説明可能」ではない)。
  • 特徴量重要度 は相関・寄与の目安であり、因果ではない。特徴が冗長だと重要度が分散して見えることがある。
  • 不均衡データ では多数派に引きずられやすい。指標・重み付け・サンプリングは 評価と汎化 とセット。
  • カテゴリの自動処理が 目的変数リーク を招かないか、ドキュメントとパイプラインを確認する価値がある。
  • 時系列では、ランダムな交差検証が 未来情報を混ぜる と見かけ性能が膨らむ。時間で分割するなど評価設計が効く。

関連