10.11 ブースティング木の「ちょうど良い大きさ」
なぜ 4 枚葉が黄金比なのか
XGBoost や LightGBM を触ったことがあれば、必ず目にするハイパーパラメータがあります ——max_depth や num_leaves。 たいてい「2 〜 8 くらいで試してね」と書かれていて、なぜその範囲なのか深く語られることはありません。 実はこの数字、ブースティングの心臓部に直結する設計判断です。 このページでは「木のサイズ = モデルが許す相互作用の次数」という美しい対応関係を発見していきます。
なぜサイズを決めなければならないのか
最初に、出てくる言葉を 30 秒で押さえておきましょう。
- 決定木:「もしx1 > 0.5 なら左、そうでなければ右」というように、 Yes / No の質問を枝分かれさせてデータを分類・予測する仕組み。 各「葉」が最終的な予測値を持ちます。
- CART:決定木を作る代表的なアルゴリズムの名前。
- 枝刈り(pruning):育てすぎた木の不要な枝を後から切り落とすこと。
- 過学習:訓練データの細かい癖まで覚え込みすぎて、新しいデータでは外す状態。
- ブースティング:弱い予測器(小さな木など)を順に積み重ねて、強い予測器を作る手法。
決定木を作る標準的な手順は、こうでした:まずデータに合わせてできるだけ大きな木を作り、 後から「枝刈り」で適切な大きさまで切り詰める。これが CART の発想です。 木 1 本でモデルが完結するなら、データに合わせて柔軟にサイズを決められる ── 自然なやり方ですね。
しかし、ブースティングはまったく違う世界に立っています。 ブースティングは「小さな木を何百本も積み重ねて、ひとつの予測器を作る」手法です。 木 1 本では弱く、間違いも多い。けれども、誤差を埋めるように次の木を追加し、 さらにその誤差を埋めるように次を追加し ── そうやって少しずつ「合唱」を組み立てます。

ここで問題が起きます。「木 1 本のサイズ」をどう決めればよいでしょう?
- もし毎回大きな木を作ると、1 本ですでに過学習してしまい、積み重ねる余地がなくなります。
- もし毎回極小の木(葉が 2 つの「スタンプ」と呼ばれる最小の木)を作ると、 変数同士の絡みを表現できず、限界が来ます。
ブースティングでは、各反復で「全ての木を同じサイズ J に固定」する戦略がうまく機能します。 なぜか?答えは、木のサイズに「ある統計的な意味」が隠れているからです。 それを次のセクションで発見していきましょう。
木のサイズが「表現できる関係の複雑さ」を決める
ここで、本質的な発見をします。
「木のサイズ」を「葉の数 J」で測ることにしましょう。すると、J の値によって、 その木が表現できる「変数の絡み合い」の複雑さが変わるのです。
なぜ「葉の数」と「変数の数」が結びつくのか? ── ここに鍵となる橋渡しがあります。
木は 1 回分岐するごとに、1 つの変数を使って判断します。ルートから葉に向かって辿る経路上で何回分岐しているかが、 そのまま「組み合わせて使った変数の数」になります。葉が 1 個増えれば、分岐も 1 回増える。 だから「葉の数」と「使える変数の数」は直接連動するのです。

具体的に見てみます。
- J = 2(葉が 2 つの「スタンプ」): 1 つの変数だけで分岐します。変数同士の組み合わせは扱えません。
- J = 3(葉が 3 つ): 一度分岐した先でもう一度別の変数で分岐できる。2 つの変数の組み合わせを表現できます。
- J = 4: 3 変数まで組み合わせ可能。
- J = 8: 最大 7 変数の同時相互作用まで表現可能。
つまり、葉の数 J は「最大 J−1 個の変数の絡み合い」を許容するということ。
木が深くなるごとに、より多くの変数を「掛け合わせて」予測に使えるようになります。 これがブースティング木で J を固定することの意味の核心です ── 「モデルが許す相互作用の最大次数を固定している」わけです。
ANOVA分解 — 関数を「相互作用の次数」で分けて見る
なぜ「木の深さ = 相互作用の次数」と言えるのか? ここで、関数を分解する一般的な視点を導入します。
任意の予測関数 $\eta(X)$ を、変数の絡みの「次数」ごとに分けて書き下すことができます。
記号の読み方を先に押さえます。$\sum_j$ は「全ての変数 $j$ について足し合わせる」、$\sum_{j<k}$ は「変数のペア $(j, k)$ を重複なく全部足す」 という意味です。難しい記号ですが、要するに「全部の組み合わせを集めてくる」と言っているだけです。
この式が言っていること:
- 第1項 $\sum_j \eta_j(X_j)$: 各変数が単独で予測に寄与する部分(主効果)
- 第2項 $\sum_{j<k} \eta_{jk}(X_j, X_k)$: 2 つの変数が「組み合わさって初めて意味を持つ」効果(2 次相互作用)
- 第3項以上:3 つ以上の変数が同時に絡む高次相互作用

例えば住宅価格を予測するとき:
- 「面積が広いほど高い」── 主効果
- 「駅近 × 階数:駅近ならどの階でも価値が出るが、駅遠だと上層階でないと価値が下がる」── 2 次相互作用
- 「駅距離 × 築年数 × 設備 × 周辺環境」の複雑な掛け合わせ ── 高次相互作用(実務ではほとんど発生しません)
ブースティング木で「葉の数 J」を固定するということは、この分解の中で「次数 J−1 以上の項をモデルから消す」ことに等しいのです。
- $J = 2$ → 第 1 項(主効果)だけ使う
- $J = 3$ → 第 2 項(2 次相互作用)まで使う
- $J = J^*$ → 第 $J^* - 1$ 項まで使う
これは「モデルの語彙を制限する」ことに似ています。 語彙が広すぎると意味のないフレーズも作れてしまう。だから意図的に範囲を絞る。 このシンプルな制限が、ブースティングを強力にする秘訣のひとつです。
実験で見えた「黄金比」— なぜ 4 ≤ J ≤ 8 なのか
理論はわかりました。では実際、J をいくつにすれば最良の予測ができるのか?
勾配ブースティングの提唱者 Friedman は、多数の実験から経験則を導きました:
この範囲が、実用的なほとんどのデータセットでうまく機能する、と。 理由を直感的に解きほぐすと:
J = 2(スタンプ)の弱点: 変数同士の組み合わせを一切扱えません。たとえば「高血圧 × 高コレステロール」が組み合わさって 心疾患リスクが急上昇する ── そんな相互作用を捉えられない。多くの実問題では不十分です。
J > 10 の問題: 高次相互作用 ── 例えば「変数 $X_1, X_2, \ldots, X_{10}$ が全て同時に特定の値を取ったときだけ起こる現象」── は、実世界ではほとんど発生しません。にもかかわらず、そういう複雑な構造を表現できる「余裕」があると、過学習(ノイズまで拾って覚えてしまう現象)が起きます。
J = 6 あたりの絶妙さ: 5 次までの相互作用を許容しつつ、それ以上は切り捨てる。実問題でほとんど存在しない高次の絡みを 最初から考慮しないことで、モデルの分散(揺らぎ)を自動的に抑える ── これがブースティング木の「ちょうど良い大きさ」の正体です。

グラフを見ると、J = 4 とJ = 8 の曲線が最も低い誤差を達成しています。J = 2 は頭打ちが高く、J = 20 は途中から再び上昇(過学習)します。
これは「ちょうど良い大きさ」という概念の視覚的な証拠です。J が小さすぎれば表現力不足。大きすぎれば過学習。その中間に「黄金比」が存在します。
「遅く学ぶ」哲学 — サイズ固定が支える戦略
ここまでの議論をまとめます。
ブースティング木は、各反復で「同じサイズ J の小さな木」を積み重ねます。 サイズを固定する理由は:
- モデルの語彙を制限する:J−1 次までの相互作用しか扱わないと事前に決めることで、 高次の不要な複雑さを排除できる
- 過学習を構造的に防ぐ: 1 本ずつでは表現力が弱いから、過学習する余裕がない
- 少しずつ改善できる:「弱い学習器の合唱」の本質に合致する

実際の実装では、J に加えてもう 2 つの工夫(正則化)を組み合わせます。 ここで予告だけしておきます:
- 縮小(shrinkage): 各木の貢献を $\nu < 1$(例: $\nu = 0.1$)に縮める。 新しく学んだ木の効果を「10 分の 1 だけ」採用するイメージ。 「毎回、必要な分の一部しか学ばない」遅い学習です。
- サブサンプリング: 各反復で訓練データの一部だけをランダムに使う。 ランダムフォレストに似た「揺らぎ」の効果でモデルを安定させます。
これら 3 つを組み合わせた哲学: 「ひとつのモデルに大きな仕事をさせない。小さく、ゆっくり、たくさん積み重ねる」。
これがブースティング木の真髄であり、現代の勾配ブースティング(XGBoost、LightGBM、CatBoost)が世界中のデータ競技で圧倒的な成績を残し続けている理由の核心なのです。
次のページでは、この「遅い学習」を支える縮小とサブサンプリングの正則化について深く見ていきます。