アンサンブル学習の世界へようこそ!

これまで、単一の決定木について学習してきましたね。決定木は理解しやすく、視覚的にもわかりやすいという利点がありますが、大きな弱点もあります。それは「非常に不安定」だということです。データが少し変わるだけで、全く異なる木ができてしまうことがあります。これを高バリアンス(High Variance)と呼びます。

この問題を解決するために登場するのがアンサンブル学習(Ensemble Methods)です。「アンサンブル」とは、合唱団やオーケストラのようなものを想像してみてください。一人の歌手が音を外しても、グループ全体で歌えば、全体として美しく安定したサウンドになりますよね。この章では、たくさんの決定木を組み合わせて強力なモデルを作る方法、つまりバギング(Bagging)ランダムフォレスト(Random Forests)、そしてブースティング(Boosting)について学んでいきましょう。

1. バギング(Bootstrap Aggregating)

バギングは、統計的手法のバリアンスを抑えるための賢いテクニックです。この名前は、ブートストラップ(Bootstrap)集約(Aggregating)という2つの言葉から来ています。

ブートストラップとは?

難しく考える必要はありません!ブートストラップとは「復元抽出(resampling with replacement)」の別の呼び方にすぎません。1から100まで番号が振られたボールが袋に入っていると想像してください。一つ取り出して番号をメモし、また袋に戻す。これを100回繰り返します。同じ番号が2回選ばれることもあれば、一度も選ばれないボールもあるでしょう。こうしてできた100個の標本セットが、ブートストラップ標本です。

バギングの手順

1. 学習データからB個の異なるブートストラップ標本を作成する。
2. それぞれの標本に対して、深くて剪定(プルーニング)されていない決定木を作成する。
3. 結果を統合する:
   - 回帰の場合B個の決定木による予測値を平均する。
   - 分類の場合:多数決(最も多く予測されたクラスを採用する)を行う。

なぜこれを行うのか?

バリアンスの高い多数の木を平均化することで、「ノイズ」を打ち消し、より安定した予測を得ることができます。つまり、バギングはバイアスを低く保ったまま、バリアンスを削減できるのです。

クイックレビュー: バギングは予測をより信頼できるものにしてくれる素晴らしい手法です。ただし欠点として、一つの単純な決定木の図を見ることはできなくなります。つまり、解釈のしやすさを犠牲にして、精度を得ているわけです。

豆知識: 平均すると、一つのブートストラップ標本には元のデータの約3分の2が含まれます。残りの3分の1はOut-of-Bag (OOB)観測値と呼ばれます。このOOB観測値を使えば、別の検証用データセットを用意しなくても、モデルの精度をテストできるんですよ!

2. ランダムフォレスト(Random Forests)

ランダムフォレストは、バギングをさらに「一段階進化」させたものです。バギングは非常に優秀ですが、一つ欠点があります。データの中に非常に強力な予測変数が一つ存在すると、ほとんどの決定木が最初の分割でその変数を使ってしまうことです。その結果、すべての木が似通った形になってしまいます(相関が高い状態)。

似たようなものを平均しても、バラバラなものを平均するほどバリアンスは減りません。ランダムフォレストは、木同士の相関をなくすことでこの問題を解決します。

ランダムフォレストの仕組み

バギングと同じく、ブートストラップ標本を使ってたくさんの木を作ります。ただし一つだけ条件が加わります。決定木の分割を考えるたびに、合計 \( p \) 個の予測変数の中から、ランダムに選ばれた \( m \) 個のサブセットの中からしか変数を選べないというルールです。

通常、次のように設定します:
- 回帰の場合: \( m \approx p/3 \)
- 分類の場合: \( m \approx \sqrt{p} \)

例え: 探偵チームを雇う場面を想像してください。バギングの場合、すべての探偵がまず最初に同じ主要な手がかりを見ます。一方、ランダムフォレストでは、一部の探偵に「主要な手がかりは無視して、別の小さな手がかりを探せ」と指示するようなものです。こうすることで、チーム全体として、単独(あるいは同じ考え方をするグループ)では見落としていたものを見つけることができるのです!

ここが重要: もし \( m = p \) なら、ランダムフォレストはバギングと全く同じになります。\( m < p \) とすることで、木同士を異なるものにし、バリアンスをさらに小さくできるのです。

3. ブースティング(Boosting)

ブースティングは全く異なるアプローチをとります。バギングやランダムフォレストでは、すべての木を同時に(並列に)作成します。しかし、ブースティングでは、木を順次(逐次的に)、つまり一つずつ作成していきます。

コンセプト:失敗から学ぶ

ブースティングでは、新しい木は前の木の情報を利用して成長させます。深く成長させるのではなく、非常に小さな木(切り株(stumps)とよく呼ばれます)を作り、モデルが苦手とする部分を少しずつ改善していきます。

ブースティングの手順(簡略版)

1. 単純なモデル(データの平均値など)から始める。
2. 現在のモデルの「誤差(残差)」を計算する。
3. 元のデータではなく、この残差に対して新しい小さな木を当てはめる。
4. 新しい木をモデルに追加する。ただし、少しだけ(学習率によってスケーリングして)加える。
5. このプロセスを何千回も繰り返す。

例え: ブースティングは彫刻家のようなものだと考えてください。最初の木は、石の大まかな切り出しです。その後に続く一つ一つの木は、ノミで少しずつ削る作業で、前の工程で残った不完全な部分を少しずつ修正しながら形を整えていくイメージです。

ブースティングにおける重要な調整パラメータ

- 木の数 (B): バギングとは異なり、ブースティングは \( B \) が大きすぎると過学習(オーバーフィッティング)を起こす可能性があります。交差検証を用いて最適な数を決めましょう。
- 縮小パラメータ (学習率 \( \lambda \)): 0.01のような小さな値で、学習のスピードを制御します。ゆっくりと学習させることで、一般的にモデルの精度が向上します。
- 交互作用の深さ (d): 各木における分割の数です。多くの場合、\( d=1 \)(切り株)で驚くほど良い結果が出ます。

ここが重要: ブースティングは、前のモデルの失敗を修正することに集中する「じっくり学習派」です。最も高精度な手法になることが多いですが、過学習を避けるために慎重なチューニングが必要です。

4. 変数の重要度(Variable Importance Measures)

数百もの木を扱うようになった今、どの変数が重要かを知るために木を一枚一枚描くことはできません。そこで、変数の重要度という指標を使います。

- 回帰の場合: 特定の予測変数による分割で、残差二乗和 (RSS) がどれだけ減少したかを記録し、すべての木で平均します。値が大きいほど、重要な変数であることを示します。
- 分類の場合: 同様に、ジニ不純度 (Gini Index) の減少量を測定します。

まとめテーブル:それぞれの違い

バギング:
- 木は独立して構築される(並列)。
- 各分割で全変数を使用する。
- 目標:バリアンスの削減。

ランダムフォレスト:
- 木は独立して構築される(並列)。
- 各分割で変数のランダムなサブセットを使用する。
- 目標:木同士の相関を解き、バリアンスを削減する。

ブースティング:
- 木は順次構築される。
- 各木は前のモデルの残差を学習する。
- 目標:バイアスとバリアンスを少しずつ削減する。

注意すべき共通の間違い: 試験では、バギングとランダムフォレストは木の数 (B) を増やしても過学習しないということを忘れないでください。しかし、ブースティングは木の数が多すぎると過学習します。縮小パラメータ(学習率)には常に気を配りましょう!

ここまでくれば大丈夫!これらのアンサンブル手法は、データサイエンティストの武器箱の中でも最も強力なツールです。「平均化(バギング/フォレスト)」と「洗練(ブースティング)」の論理をマスターすれば、Exam SRMの合格は目前です!