アンサンブルを学習する — 辞書とLassoの融合

ランダムフォレストも勾配ブースティングも最終的に何千もの木を使う。 しかし「全部の木が本当に必要か?」という問いから出発し、 辞書構築→Lassoポストプロセッシングという二段階アプローチを学ぶ。 さらに多様性を意図的に作るISLEアルゴリズム、そして木をより解釈可能な ルールへと変換するルールアンサンブルを探る。

Lassoポストプロセッシング — 「後でまとめて整理する」

機械学習モデルを本番環境で動かすとき、切実な問題が生じる。ランダムフォレストの1000本の木を全部保存し、 予測のたびに1000回計算するのは重い。もっとコンパクトにできないだろうか?

「精度を保ちながらモデルを軽くしたい」——この実用的な動機から出発したのが、 ここで学ぶアプローチだ。

Friedman と Popescu(2003)は巧みな分割統治法を提案した。

フェーズ1:辞書を作る

まず、アルゴリズムが生成する大量の木(辞書 T_L)をそのまま集める。 ランダムフォレストなら1000本の木、勾配ブースティングなら各ステップで得られる木などを全部収集する。 この段階では何も捨てない。

フェーズ2:Lassoで整理する

次に、その辞書からLasso(ラッソ)を使って 「本当に必要な木」だけを選び、重みを割り当てる。 Lasso とは「不要な変数を強制的にゼロに追い込む統計的手法」だ (第3章で学んだ。係数にL1ペナルティを課すことで、多くの係数が自動的にゼロになる)。 ここでは「変数」の代わりに「木」を整理する。予測関数の形はこうなる:

$$f(x) = \alpha_0 + \sum_{T_k \in \mathcal{T}} \alpha_k T_k(x)$$
Lassoが多数の木の係数を次々とゼロに追い込み、少数の重要な木だけを残す過程
20本の木(青い棒)がLassoのλ増大によって次々とゼロに縮小され、4〜5本の重要な木(黄色)だけが選ばれる

Lassoは多くの $\alpha_k$ を強制的にゼロに追い込む。 1000本あった木から、わずか40本だけを選んで、ほぼ同じ(あるいはより高い)精度を実現できるのだ。

嬉しい効果:計算量が大幅に削減される。保存するモデルが小さくなり、 将来の予測が速くなる。実験結果では、ランダムフォレスト(1000本)をLassoポストプロセッシングすると 約40本に絞れる。

最適化問題の式はこうだ。左の損失項と右のL1ペナルティのバランスを、λが制御する:

$$\hat{\alpha}(\lambda) = \underset{\alpha}{\arg\min} \sum_{i=1}^{N} L\left[y_i,\, \alpha_0 + \sum_{m=1}^{M} \alpha_m T_m(x_i)\right] + \lambda \sum_{m=1}^{M} |\alpha_m|$$

この式を分解すると:

良いアンサンブルに必要な「多様性」

Lassoポストプロセッシングが真の力を発揮するには、辞書 T_L の中の木が「十分に多様」である必要がある。 なぜか?

想像してほしい。100本の木が全部ほぼ同じ予測をするなら、その中から40本を選んでも大した情報は得られない。 しかし、それぞれが少し異なる側面を捉えていれば、少数の組み合わせで豊かな表現力が生まれる。

σ小(左)では似たような曲線が密集しているが、σ大(右)では多様な形の曲線が並び、目標曲線(黄色)により近づける
左(σ小):同じ形の曲線ばかりで組み合わせても表現力は増えない。右(σ大):多様な形の曲線があれば、少数の組み合わせで目標(黄色)に近づける

多様性はどう測るか?

まず「損失 $Q(\gamma)$」を定義する。$\gamma$ とはある基底関数(木)のパラメータ(分岐条件や端末ノードの値など)のこと。$Q(\gamma)$ はその木を1本だけ使ったときの損失だ。 最も良い木を使ったときの損失を $Q(\gamma^*)$ とする。

アンサンブルの「多様性(幅 σ)」は、 ランダムに選んだ γ での損失とベストな γ の損失の差として定義される:

$$\sigma = \mathbb{E}_{\mathcal{S}}[Q(\gamma) - Q(\gamma^*)]$$

直感的に言えば、σ は「辞書の中の木がどのくらい散らばっているか」を測る量だ:

適切な多様性こそが、ポストプロセッシングを機能させる鍵なのだ。

ISLEアルゴリズム — 多様性を意図的に生み出す

「多様性を高めるには?」——この問いへの答えがISLE(Importance Sampled Learning Ensemble)だ。

核心はシンプル:ランダムなサブサンプルを使って各木を育てることで、 木の多様性を自然に生み出す。

毎回異なるデータの部分集合(橙色)を選んでフィットした曲線を追加することで、多様な形の曲線が累積される
各ステップでランダムに選ばれたデータ点(橙色)にフィットした曲線が追加されていく。サブサンプルが変わるたびに異なる形の曲線が生まれ、辞書の多様性が高まる

まずアルゴリズムが「何をするか」を日本語で説明しよう:

  1. 定数関数でスタートする
  2. 毎回「訓練データの一部だけ」をランダムに選んで新しい基底関数を追加する
  3. M回繰り返したら、辞書 T_ISLE = {b_1, b_2, ..., b_M} の完成

この手順を式で書くと、各ステップ m での基底関数 γ_m は次の最小化問題を解く:

$$\gamma_m = \arg\min_{\gamma} \sum_{i \in S_m(\eta)} L\left(y_i,\, f_{m-1}(x_i) + b(x_i;\, \gamma)\right)$$

ここで $S_m(\eta)$ は訓練データから η 割をランダムに非復元抽出したサブセットだ。 そしてモデルを更新する:

$$f_m(x) = f_{m-1}(x) + \nu \cdot b(x;\, \gamma_m)$$

2つのパラメータの直感的な意味

既存手法との統一的な理解

この枠組みで見ると、よく知られた手法が特殊ケースとして整理できる:

つまり ISLEは「バギングからブースティングまでを一つの枠組みで捉えなおす」のだ。

最後にLassoポストプロセッシングを適用すれば、M本の木からコンパクトな最終モデルが得られる。 これが「Importance Sampled Learning Ensemble(ISLE)」の全体像だ。

ルールアンサンブル — 木を「読める条件文」へ

ここまでは「木をそのまま基底関数として使う」アプローチだった。 しかし木には欠点がある:木が複雑になるほど、「どんな条件があると予測が変わるのか」を 人間が解釈しにくくなる。

ルールアンサンブル(Friedman & Popescu, 2003)は、 この問題を解決する。アイデアはシンプル:木の各ノード経路から「ルール」を取り出し、 それを基底関数として使う。

ここで「ルール」とは指示関数の形をしている。 指示関数 I(条件) とは「条件が成り立てば1、成り立たなければ0を返す関数」のことだ。

決定木(左)の各ノードがハイライトされると、対応する特徴空間(右)の矩形領域が分割される様子
左の決定木のノードが順次ハイライトされ、右の特徴空間が階層的に矩形分割される。木の分岐 = 特徴空間の矩形への分割

たとえば、次のような木の分岐条件をたどると:

$$\begin{aligned} R_1(X) &= I(X_1 < 2.1) \\ R_2(X) &= I(X_1 \geq 2.1) \\ R_3(X) &= I(X_1 \geq 2.1) \cdot I(X_3 \in \{S\}) \\ R_4(X) &= I(X_1 \geq 2.1) \cdot I(X_3 \in \{M,L\}) \\ R_5(X) &= I(X_1 \geq 2.1) \cdot I(X_3 \in \{S\}) \cdot I(X_7 < 4.5) \\ R_6(X) &= I(X_1 \geq 2.1) \cdot I(X_3 \in \{S\}) \cdot I(X_7 \geq 4.5) \end{aligned}$$

木を1つのまとまりとして扱う代わりに、「どの分岐が予測にどれだけ寄与するか」を個別に評価できる。 木の分岐 = 特徴空間の矩形領域への分割、と対応している点が重要だ(上のGIFで確認しよう)。

アンサンブル中の各木 T_m からルール集合を構築し、全木のルールをまとめると辞書になる:

$$\mathcal{T}_{\text{RULE}} = \bigcup_{m=1}^{M} \mathcal{T}_{\text{RULE}}^m$$

このルール辞書にLassoポストプロセッシングを適用すると、 「どの条件がどのくらい予測に寄与するか」が明確なモデルができあがる。 さらに、各変数の線形項 X_j も辞書に加えると、線形な関係もうまく捉えられる。

ルールアンサンブルの利点

  1. 精度向上:モデル空間が拡大し、細かい表現が可能
  2. 解釈可能性:「X_1 ≥ 2.1 かつ X_3 ∈ {S} のとき +2.3」という形で人間が読める
  3. 線形効果も捉える:線形項を加えることで純粋な比例関係も表現できる

まとめ — アンサンブルの「設計哲学」

この章で学んだことを整理しよう。

核心のアイデア:多数の木(辞書)を集めてから、Lassoで必要な木だけを選ぶ。

この二段階アプローチが機能するための条件が「多様性(σ)」だった。 辞書の中の木が多様でないと、Lassoがどれを選んでも表現力が増えない。

その多様性を意図的に生み出すのがISLE アルゴリズムだ:

そしてルールアンサンブルは、 「木そのもの」の代わりに「木から抽出した条件文(ルール)」を辞書として使う。 これにより、Lassoで整理したあとに「人間が読める」モデルが得られる。

ISLE(辞書生成)→ Lasso(木の選択)→ Rules(ルール変換)という3段階パイプライン
3段階のパイプライン:ISLE(青)で多様な木の辞書を生成 → Lasso(橙)で必要な木だけを選択 → Rules(緑)で解釈可能なルールに変換

最終的な設計思想をまとめると:

多様な基底関数を作る(ISLE)→ 必要なものだけ選ぶ(Lasso)→ 必要なら解釈可能な形に変換する(ルール)

この3ステップこそが、アンサンブル学習の 新しい設計哲学だ。大量の木を生成してから選ぶ、という発想の転換が、 精度・効率・解釈可能性の三つを同時に実現する鍵となっている。