10.11 ブースティング木の「ちょうど良い大きさ」

なぜ 4 枚葉が黄金比なのか

XGBoost や LightGBM を触ったことがあれば、必ず目にするハイパーパラメータがあります ——max_depthnum_leaves。 たいてい「2 〜 8 くらいで試してね」と書かれていて、なぜその範囲なのか深く語られることはありません。 実はこの数字、ブースティングの心臓部に直結する設計判断です。 このページでは「木のサイズ = モデルが許す相互作用の次数」という美しい対応関係を発見していきます。

なぜサイズを決めなければならないのか

最初に、出てくる言葉を 30 秒で押さえておきましょう。

決定木を作る標準的な手順は、こうでした:まずデータに合わせてできるだけ大きな木を作り、 後から「枝刈り」で適切な大きさまで切り詰める。これが CART の発想です。 木 1 本でモデルが完結するなら、データに合わせて柔軟にサイズを決められる ── 自然なやり方ですね。

しかし、ブースティングはまったく違う世界に立っています。 ブースティングは「小さな木を何百本も積み重ねて、ひとつの予測器を作る」手法です。 木 1 本では弱く、間違いも多い。けれども、誤差を埋めるように次の木を追加し、 さらにその誤差を埋めるように次を追加し ── そうやって少しずつ「合唱」を組み立てます。

CARTは1本の大きな木を育てて枝刈りし、ブースティングは小さな木を順次積み重ねる
左: CART(1本の木を育てて枝刈り)、右: ブースティング(小さな木を順次追加)

ここで問題が起きます。「木 1 本のサイズ」をどう決めればよいでしょう?

ブースティングでは、各反復で「全ての木を同じサイズ J に固定」する戦略がうまく機能します。 なぜか?答えは、木のサイズに「ある統計的な意味」が隠れているからです。 それを次のセクションで発見していきましょう。

木のサイズが「表現できる関係の複雑さ」を決める

ここで、本質的な発見をします。

「木のサイズ」を「葉の数 J」で測ることにしましょう。すると、J の値によって、 その木が表現できる「変数の絡み合い」の複雑さが変わるのです。

なぜ「葉の数」と「変数の数」が結びつくのか? ── ここに鍵となる橋渡しがあります。

木は 1 回分岐するごとに、1 つの変数を使って判断します。ルートから葉に向かって辿る経路上で何回分岐しているかが、 そのまま「組み合わせて使った変数の数」になります。葉が 1 個増えれば、分岐も 1 回増える。 だから「葉の数」と「使える変数の数」は直接連動するのです。

木の深さが増えるにつれて、ルートから葉までの経路に登場する変数の数が増えていく
左: J=2(変数1つ)、中: J=3(変数2つ)、右: J=4(変数3つ)— 赤いパスが「使われた変数の経路」

具体的に見てみます。

つまり、葉の数 J は「最大 J−1 個の変数の絡み合い」を許容するということ。

$$J \text{ 枚葉の木} \Rightarrow \text{最大 } (J-1) \text{ 次の相互作用まで表現可能}$$

木が深くなるごとに、より多くの変数を「掛け合わせて」予測に使えるようになります。 これがブースティング木で J を固定することの意味の核心です ── 「モデルが許す相互作用の最大次数を固定している」わけです。

ANOVA分解 — 関数を「相互作用の次数」で分けて見る

なぜ「木の深さ = 相互作用の次数」と言えるのか? ここで、関数を分解する一般的な視点を導入します。

任意の予測関数 $\eta(X)$ を、変数の絡みの「次数」ごとに分けて書き下すことができます。

$$\eta(X) = \sum_j \eta_j(X_j) + \sum_{j<k} \eta_{jk}(X_j, X_k) + \sum_{j<k<l} \eta_{jkl}(X_j, X_k, X_l) + \cdots$$

記号の読み方を先に押さえます。$\sum_j$ は「全ての変数 $j$ について足し合わせる」、$\sum_{j<k}$ は「変数のペア $(j, k)$ を重複なく全部足す」 という意味です。難しい記号ですが、要するに「全部の組み合わせを集めてくる」と言っているだけです。

この式が言っていること:

関数を主効果層・2次相互作用層・高次相互作用層と積み重なる層として可視化
青: 主効果(単独変数の効果)、黄: 2次相互作用、赤: 高次相互作用 — 上の層を切り捨てるほどシンプルなモデルになる

例えば住宅価格を予測するとき:

ブースティング木で「葉の数 J」を固定するということは、この分解の中で「次数 J−1 以上の項をモデルから消す」ことに等しいのです。

これは「モデルの語彙を制限する」ことに似ています。 語彙が広すぎると意味のないフレーズも作れてしまう。だから意図的に範囲を絞る。 このシンプルな制限が、ブースティングを強力にする秘訣のひとつです。

実験で見えた「黄金比」— なぜ 4 ≤ J ≤ 8 なのか

理論はわかりました。では実際、J をいくつにすれば最良の予測ができるのか?

勾配ブースティングの提唱者 Friedman は、多数の実験から経験則を導きました:

$$4 \le J \le 8$$

この範囲が、実用的なほとんどのデータセットでうまく機能する、と。 理由を直感的に解きほぐすと:

J = 2(スタンプ)の弱点: 変数同士の組み合わせを一切扱えません。たとえば「高血圧 × 高コレステロール」が組み合わさって 心疾患リスクが急上昇する ── そんな相互作用を捉えられない。多くの実問題では不十分です。

J > 10 の問題: 高次相互作用 ── 例えば「変数 $X_1, X_2, \ldots, X_{10}$ が全て同時に特定の値を取ったときだけ起こる現象」── は、実世界ではほとんど発生しません。にもかかわらず、そういう複雑な構造を表現できる「余裕」があると、過学習(ノイズまで拾って覚えてしまう現象)が起きます。

J = 6 あたりの絶妙さ: 5 次までの相互作用を許容しつつ、それ以上は切り捨てる。実問題でほとんど存在しない高次の絡みを 最初から考慮しないことで、モデルの分散(揺らぎ)を自動的に抑える ── これがブースティング木の「ちょうど良い大きさ」の正体です。

異なるJの値でのテスト誤差曲線の比較
反復数(横軸)に対するテスト誤差(縦軸)— J=4〜8(黄・緑)が最も低い誤差を達成し、J=20(紫)は過学習で上昇する

グラフを見ると、J = 4J = 8 の曲線が最も低い誤差を達成しています。J = 2 は頭打ちが高く、J = 20 は途中から再び上昇(過学習)します。

これは「ちょうど良い大きさ」という概念の視覚的な証拠です。J が小さすぎれば表現力不足。大きすぎれば過学習。その中間に「黄金比」が存在します。

「遅く学ぶ」哲学 — サイズ固定が支える戦略

ここまでの議論をまとめます。

ブースティング木は、各反復で「同じサイズ J の小さな木」を積み重ねます。 サイズを固定する理由は:

  1. モデルの語彙を制限するJ−1 次までの相互作用しか扱わないと事前に決めることで、 高次の不要な複雑さを排除できる
  2. 過学習を構造的に防ぐ: 1 本ずつでは表現力が弱いから、過学習する余裕がない
  3. 少しずつ改善できる:「弱い学習器の合唱」の本質に合致する
小さな木が順次追加され、予測曲線が徐々に改善される様子
上段: 同じサイズの小さな木が1本ずつ追加される。下段: 木が増えるたびに予測曲線が少しずつ改善されて最終的に滑らかにフィットする

実際の実装では、J に加えてもう 2 つの工夫(正則化)を組み合わせます。 ここで予告だけしておきます:

これら 3 つを組み合わせた哲学: 「ひとつのモデルに大きな仕事をさせない。小さく、ゆっくり、たくさん積み重ねる」。

これがブースティング木の真髄であり、現代の勾配ブースティング(XGBoost、LightGBM、CatBoost)が世界中のデータ競技で圧倒的な成績を残し続けている理由の核心なのです。

次のページでは、この「遅い学習」を支える縮小とサブサンプリングの正則化について深く見ていきます。