ランダムフォレストの定義 — バギングの弱点を「ランダムな特徴量選択」で克服する
木を増やせば増やすほど精度が上がる——はずだった。 しかし、木たちが「みんな似たような構造」になってしまう問題がバギングには存在する。 各分割でm個の変数だけをランダムに使えるようにした、その一点の変更が驚くほど有効だった。
バギングの限界 — なぜ木を増やしても限界があるのか
バギングの目標は「分散を小さくすること」でした。 分散が小さいということは、予測が安定している——同じ問題に対して何度試しても似たような答えが出る——ということです。 信頼できるモデルの条件です。
N個の完全に独立した推定量(各々の分散がσ²)を平均すれば、 分散はσ²/Nになります。独立なら木を増やすほど分散は縮小します。
しかし現実は甘くありません。相関がある場合、話は変わります。

相関係数ρ(−1〜1の値)を持つB個の推定量の平均の分散は次の式で表されます:
ここでρは任意の2本の木の間の相関係数、σ²は1本の木の予測分散、Bは木の本数です。
この式の第1項(ρσ²)と 第2項((1-ρ)σ²/B)を見てください。 第2項はBを増やすにつれてゼロに近づきます。 しかし第1項(ρσ²)はBをいくら増やしても消えません。
つまり、バギングの限界は「木の数が足りない」ことではなく、木たちの相関が高いことにあります。 相関ρが高いほど、どれだけ木を増やしても改善できる上限が低くなります。
なぜ木たちは「相関」してしまうのか
バギングでは、各ブートストラップサンプル(元データからランダムに復元抽出したサンプル)で決定木を成長させます。 しかし根本的な問題があります。
もし予測に特に強い変数(例えば「年収」)が1つあると、 p個すべての変数から選べる状況では、ほぼすべての木が同じ変数で最初に分割しようとします。 10本の木が全員「年収で最初に分割」すれば、それらの木はほぼ同じ構造になります。

相関係数ρは高いまま——第1項ρσ²は大きく残り続けます。
これはちょうど、同じ教科書を読んだ学生10人に同じ試験を解かせるようなもの。 みんな似たような答えを出すので、平均しても精度は大して上がりません。 それぞれ異なる専門知識を持つ10人の方が、集合的な判断として遥かに有効です。
ランダムフォレストの解決策は驚くほどシンプルです——各分割の前に、使える変数をランダムに絞り込むのです。
解決策 — 各分割でm個の変数をランダムに選ぶ
ランダムフォレストのアイデアは明快です。 各ノードを分割するとき、p個の変数すべてから選ぶのではなく、m個の変数をランダムに選んでその中から最良の分割を探すのです。

典型的にはm = √p が使われます(pが変数の総数)。 この値は理論的根拠より実験的に良いとされる経験則です。
なぜこれが効くのか?強い変数X1がランダムに選ばれないこともあるからです。 選ばれなければ他の変数で分割され、木の構造が多様になります。 木たちの相関係数ρが下がり、分散公式の第1項(ρσ²)も小さくなります。
m を小さくする → 木が多様になる → ρ が小さくなる → 分散が小さくなるmとρのトレードオフ — どこまで絞れるか
mを小さくすると相関ρが下がり分散が減ります。では、mを1にすれば最高でしょうか?
そう単純ではありません。バイアスと分散のトレードオフがあります。
ここで確認:バイアス(偏差)とは「予測の体系的なズレ」、バリアンスとは「予測のばらつき」です。
重要な事実:ランダムフォレストはバイアスを改善しません。 ランダムフォレストの期待値(平均的な予測値)は個々の木と同じです。改善するのは分散だけです。

mとρの関係を整理すると:
- m = p(全変数使用)→ バギングと同一、相関は最大
- m = √p(推奨値)→ 適度な相関削減とバランス
- m = 1(1変数のみ)→ 最小の相関、しかし各木の予測精度は大幅低下
mを減らすと木の多様性(相関の低下)は増すが、各木の精度も低下します。 平均の分散はρσ² + (1-ρ)/B × σ²なので、 ρが小さくなっても各木の精度(σ²)が大きくなれば、トータルでは悪化することもあります。
実践的には、m = √p(分類)または m = p/3(回帰)から始めて、クロスバリデーションで調整します。
アルゴリズム全体の流れ
ランダムフォレストの全体像をまとめましょう。バギングと比べると、違いは「各分割時にm個から選ぶ」という一点だけです。 たった1行の変更が、劇的な改善をもたらします。

Algorithm 15.1(ランダムフォレスト)
b = 1からBまで繰り返す:
- 訓練データからサイズNのブートストラップサンプル Z* を抽出
- Z* に対して決定木を成長させる。各ノードで:
- p個の変数からm個をランダムに選択
- m個の中から最良の変数・分割点を選ぶ
- ノードを2分割
- 最小ノードサイズ n_min に達するまで継続
B個の木 {T_b(x)} を出力。
予測:
回帰では各木の予測値の平均を計算します:
分類では各木 C_b(x) の多数決でクラスを決定します。
このシンプルさが驚きです。 特徴量をランダムに絞るというだけで、現実の問題で優秀な性能を発揮します。
実際のパフォーマンス — スパムデータでの比較
スパムデータ(p=57変数、N=4601サンプル)での実験結果を見てみましょう。 2500本の木で3つの手法を比較しました。
- バギング:5.4%の誤分類率
- ランダムフォレスト(m=√57≈7):4.88%の誤分類率
- 勾配ブースティング(後の章で解説する別の手法):4.5%の誤分類率

4601件のテストデータで0.52%の差は約24件の分類ミスの削減を意味します。 スパムフィルターなら毎日1000通を処理するとして、1日5通余分に正しく分類できる—— 小さいようで現実の影響は積み重なります。
ランダムフォレストは約200本の木で安定しており、それ以上木を増やしても精度はほぼ変化しません (バギングと違い、過学習の心配がほぼない)。
もう一つの魅力はチューニングがほぼ不要なことです。 m = √p で始めれば、多くの場合で良い結果が得られます。 Breimanは「最も強力なブラックボックス機械学習手法の一つ」と評しています。
まとめ — シンプルなランダム性の力
ランダムフォレストが教えてくれることは、機械学習の深い真理の一つです。

| 手法 | 変更点 | 効果 |
|---|---|---|
| バギング | なし(全変数から選択) | 木の相関ρが高い |
| ランダムフォレスト | 各分割でm個に限定 | 木の相関ρが低下 |
変更点はたった一つ:「全変数から選ぶ」を「m個からランダムに選ぶ」にするだけ。
この小さなランダム性の導入が:
- 木たちの多様性を生み出す
- 相関係数ρを劇的に低下させる
- 分散公式の第1項(ρσ²)を小さくする
- 全体として予測精度が向上する
重要な点:ランダムフォレストはバイアス(偏差)を改善しません。 改善するのはバリアンスのみです。 バイアスが大きい問題には、別の手法(ブースティングなど)が向いています。
機械学習のエレガントさはこういうところに宿っています—— 「どの変数を使うか分からなければ、ランダムに決めてしまえばいい」。 その単純な発想が、実用的には最強に近い予測器を生み出したのです。