8.7 Bagging — 揺らぐモデルを「平均」で安定させる

決定木のような学習器は、訓練データが少し変わるだけで結果がガラリと変わる「不安定」な性質を持つ。1 本ずつ見ればコロコロと姿を変えるが、同じデータからブートストラップで作った何十本もの木をまとめて平均すると、不思議なほど精度が上がる。

これが Bagging(Bootstrap Aggregating) である。本章では「なぜ平均で精度が上がるのか」「いつ効いて、いつ効かないのか」を、数式とアニメーションで紐解く。

この章で得るもの

  • 不安定な学習器に対して、なぜ「ブートストラップで複製を作って平均化する」と精度が上がるのかが直感的・数学的にわかる
  • 回帰での「予測値の平均」と分類での「投票 vs 確率平均」の使い分けがわかる
  • Bagging が効かない場面(安定な推定器、バイアス支配のモデル)を見極められるようになる

同じデータから違う木 — 不安定さという病

決定木は強力な手法だが、致命的な弱点を一つだけ持っている。それはデータに対する過敏さだ。同じ問題に対し、訓練データから 1 点だけ抜いたり、別の点を追加したりするだけで、木の構造が完全に変わってしまうことがある。

このとき、最初の分割(ルート)で選ばれる変数が変わると、その下に伸びる枝もすべて違う形になる。同じ「学習器」を呼んでいるはずなのに、得られるモデルはまるで別物。これを不安定 (instability) と呼ぶ。

同じ散布図上で、ブートストラップサンプルごとに決定境界がパッと切り替わる様子
同じデータから生成したブートストラップサンプルで訓練した木の決定境界が、毎回大きく変わる。6 本を重ねると、不安定さが一目瞭然だ

不安定さは「悪い」ことのように聞こえるが、実は逆の見方ができる。揺らぎが大きいということは、たくさんの異なる仮説を、データを介して見せてくれているとも言える。ならば、これらをひとつに平均したらどうなるだろう? — ここから Bagging のアイデアが生まれる。

ブートストラップの復習: ブートストラップとは、手元の $N$ 個のデータから重複を許して $N$ 個をランダムに選び直す操作のこと。これにより「元のデータからありえた別の世界線のデータ」を擬似的にたくさん作れる(詳細は 8.2 節)。同じ点が複数回入ったり、入らなかったりするので、できあがるデータセットは元と少し違う。

\hat{f}^{*b}(x) \quad b\text{ 番目のブートストラップサンプル } Z^{*b} \text{ で訓練した木の予測}

記号の読み方:

$B$ 本の木はそれぞれ少し違うデータを見ているから、少し違う予測をする。これが「不安定だが豊かな多様性」を生む。

平均する、ただそれだけで精度が上がる

ここではまず回帰(連続値を予測する場面)を考える。Bagging の核心はあきれるほどシンプルだ。$B$ 個のブートストラップサンプルでそれぞれモデルを訓練し、それらの予測をただ平均するだけ。

\hat{f}_{\text{bag}}(x) = \frac{1}{B} \sum_{b=1}^{B} \hat{f}^{*b}(x)

この一行で、不安定だった予測器が安定し、テスト誤差が大きく下がる。直感的には、「1 本ずつはノイズで揺らいでいるが、平均化すると揺らぎがキャンセルされる」イメージだ。

複数のギザギザな回帰曲線が一斉に表示され、それらが合流して 1 本の滑らかな平均曲線になる
12 本のギザギザな個別予測(薄い青)が重なり合い、平均化で太い黄色の滑らかな曲線が浮かび上がる。背景の薄いグレーが「真の関数」。平均線はほぼ真の関数と一致している

なぜキャンセルされるのか? それは、ブートストラップがデータ分布から「ありえた別のデータ」を擬似的に作っているからだ。それぞれの $\hat{f}^{*b}$ は別世界線での予測。多数の世界線を平均すれば、特定の偶然に依存しない、より「平均的に正しい」予測が得られる。

ブートストラップの本数 $B$ を増やしていくと、平均値はある一定の理想値に近づいていく。式で書くと:

\hat{f}_{\text{bag}}(x) \;\longrightarrow\; \mathbb{E}_{\hat{\mathcal{P}}}\!\left[ \hat{f}^{*}(x) \right] \quad (B \to \infty)

ここで:

要するに「$B$ 本のブートストラップ平均」は、$B$ が大きくなるほど「無限本ブートストラップしたときの理想の平均」に近づく。Baggingこの理想を有限本で近似する作業だ。

なぜ平均で分散が減るのか — バイアスは変わらない

Bagging が効く理由を、もう少し数式の側から覗いてみよう。その前に、ふたつの基本概念をおさらいしておく(前章 7.3 節のバイアス・バリアンス分解を思い出してほしい):

たとえばダーツに例えると、バイアスは「狙いがずれている」、バリアンスは「手元が震えている」イメージだ。良い予測器とは、両方が小さいダーツの腕前を持つもの。

ここで重要な事実が一つある:

Bagging はバイアスを変えない。バリアンスだけを減らす。

なぜか? 平均化の操作は「複数の予測の中心」を取るだけだから、どこを中心と見るか(バイアス)は変わらない。一方、中心からのばらつき(バリアンス)は、$B$ 個のほぼ独立な予測を平均すれば、おおむね $1/B$ に小さくなる。

多数の縦線(個々の予測値)の散らばりが、平均化操作で束ねられると狭くなる様子
上段の 20 個の点(個別予測)は広くばらついている。平均化(矢印)すると、下段の 1 点に集約される。真値ライン(点線)からのズレ(バイアス)は変わらず、散らばり(バリアンス)だけが縮む

これを式で確認しよう。真の分布 $\mathcal{P}$ のもとで予測誤差(2 乗誤差)を、$\hat{f}_{\text{bag}}$ を中心に展開すると:

\mathbb{E}_{\mathcal{P}}\!\left[ Y - \hat{f}^{*}(x) \right]^2 \;=\; \mathbb{E}_{\mathcal{P}}\!\left[ Y - \hat{f}_{\text{bag}}(x) \right]^2 + \mathbb{E}_{\mathcal{P}}\!\left[ \hat{f}^{*}(x) - \hat{f}_{\text{bag}}(x) \right]^2

この分解は $\hat{f}_{\text{bag}}$ が「ブートストラップ平均」であることからクロス項が消えて成立する(個別予測 $\hat{f}^*$ から平均 $\hat{f}_{\text{bag}}$ への偏差は平均 0 になるため)。

右辺の第 2 項は追加の分散項で、必ず非負。だから個別予測の誤差は、Bagging 予測の誤差より必ず大きいか等しい

\mathbb{E}_{\mathcal{P}}\!\left[ Y - \hat{f}^{*}(x) \right]^2 \;\geq\; \mathbb{E}_{\mathcal{P}}\!\left[ Y - \hat{f}_{\text{bag}}(x) \right]^2

不等号は平均化が誤差を悪化させないことを保証する。条件は「予測の平均が真値に近いこと」、すなわち低バイアスな学習器であること。

ただし注意点として、この主張が成り立つには予測の平均が真の関数に近いこと(バイアスが小さいこと)が必要だ。不安定だが平均的には正しい — そういう学習器に Bagging はピタリと刺さる。この前提が崩れると Bagging は効かない(Section 6 で詳しく見る)。

分類では「投票」と「確率平均」を選べる

回帰では「予測値を平均する」ので話は単純だった。だが分類ではどうやって平均する? 各木は「クラス A」「クラス B」のようなラベルしか返さない。

ここで Bagging には 2 つの選択肢がある:

  1. 多数決 (voting): 各木のラベルを集計し、最も票を集めたクラスを選ぶ
  2. 確率平均 (consensus probability): 各木の終端ノード(葉ノード、つまり最終的に到達する一番下の分岐先)でのクラス比率を取り出し、それを平均してから最大クラスを選ぶ

なお「終端ノードでのクラス比率」とは、その葉に落ちる訓練データのうち、各クラスが占める割合のこと(たとえば 8 個中 6 個が「クラス A」なら $p_A = 0.75$)。

左右分割で、左は多数決を 10 個の旗で、右は確率平均を 10 個のバーで表現
左の多数決は「赤 or 青」の 1 ビット情報しか使わない。右の確率平均はバーの高さ(確率)ごと集約するため、情報の損失が少ない

経験的には確率平均の方が安定で、テスト誤差も小さいことが多い。なぜか? 多数決は「最後にハードな決定」を木ごとに行うため、確率 0.51 でも 0.99 でも同じ 1 票になり、情報が失われる。確率平均なら、自信のなさそうな木は弱く重みづけられる効果がある。

たとえば真の確率が $P(Y=1|x) = 0.75$ の点を考えよう。各木の確率推定値を平均すれば、約 0.75 に収束する。一方、多数決でも 75% の木が「クラス 1」と投票して正解クラスを選ぶが、最終的な確率推定値は得られない。確率まで知りたい用途(リスク評価、不確実性の表現)では確率平均が圧倒的に有利だ。

多数決の式:

\hat{G}_{\text{bag}}(x) \;=\; \arg\max_{k} \;\sum_{b=1}^{B} \mathbf{1}\!\left[ \hat{G}^{*b}(x) = k \right]

確率平均の式:

\hat{p}_k(x) \;=\; \frac{1}{B} \sum_{b=1}^{B} \hat{p}_k^{*b}(x), \qquad \hat{G}_{\text{bag}}(x) \;=\; \arg\max_{k} \hat{p}_k(x)

記号の読み方:

群衆の知恵 — なぜ「みんなで決める」と当たるのか

Bagging の効果は、社会心理学で言う群衆の知恵 (wisdom of crowds) に通じる。個々人は完全な専門家でなくとも、独立に判断する大勢の意見を集約すれば、専門家を超える精度が得られる現象だ。

形式的に書くなら: $B$ 人がそれぞれ独立に、正解率 $p > 0.5$ で 2 択を当てるとする。多数決の正解率は、$B$ が増えるにつれて $1$ に近づく。これはCondorcet の陪審定理として 18 世紀から知られており、背景にあるのは「多数の独立な試行を平均すると、真の確率に収束する」という大数の法則だ。

多数の小さな円(投票者)が各自 0 か 1 を表示し、それらの集約が真の答えに収束していく
円形に並ぶ投票者ドット(青)。中央の集約値(緑の大きな円)はドットが増えるにつれて真の確率に収束していく。これが Condorcet の陪審定理の直感

しかし、ここに重要な条件が隠れている。それは「判断が独立であること」。もし全員が同じ情報源を見て、同じバイアスを持っていれば、何人集めても集約精度は上がらない。

ブートストラップサンプルから作った木は、完全に独立ではないが(元のデータは共通)、ある程度のランダム性を持つ。だから Bagging は「不完全に独立な学習器を多数集めた群衆」として機能し、群衆の知恵を引き出せる。

これが後にランダムフォレストで「変数の選択をさらにランダム化して独立性を高める」改良につながる。

$B$ 人の独立な投票者が、各々正解率 $p > 0.5$ で 2 択を当てるとき、多数決の正解率は:

P\!\left(\text{多数決が正解}\right) \;=\; \sum_{k=\lceil B/2 \rceil}^{B} \binom{B}{k} p^k (1-p)^{B-k} \;\xrightarrow{B \to \infty}\; 1

記号の読み方:

つまり投票者数を無限に増やせば、多数決は必ず正解する。ただし $p > 0.5$(コイン投げよりはマシ)と、各人の独立性が前提だ。

Bagging が効かないとき — 安定な推定器とバイアス支配

Bagging は万能ではない。効果が乏しい、あるいは逆効果になることもある。代表的なケースを 2 つ挙げよう。

ケース 1: 既に安定な推定器

線形回帰のような滑らかなパラメトリックモデルは、データが少々変わっても予測がほとんど変わらない(バリアンスが小さい)。こうしたモデルに Bagging をかけても、平均すべき揺らぎが元々ないので、ほぼ何も起こらない。

ケース 2: バイアスが支配的なモデル

モデルがそもそも単純すぎて、真の構造を表現しきれない場合(例: 線形モデルで非線形パターンを近似)、誤差の大半はバイアスに由来する。Bagging はバイアスを変えないので、いくら平均しても誤差は減らない。

左右で安定な推定器と不安定な推定器を Bagging した結果を比較。左は変わらず、右は劇的に改善
左(安定な線形モデル): 5 本の直線がほぼ重なり、平均線(黄)も同じ位置。Bagging の効果は皆無。右(不安定な非線形モデル): 5 本がバラバラで、平均線(黄)は大きく改善される

たとえば XOR 型(2 変数で対角の領域に同じクラスが配置される)の分類問題に対し、「軸並行の単一分割」しか許さない単純なルールで Bagging を行う実験では、確率平均は多少の改善をもたらすが、バイアスを下げる手法には大きく劣る。

Bagging による誤差の変化を、バイアスとバリアンスに分解した形で書くと:

\underbrace{\text{Err}(\hat{f}^{*})}_{\text{個別}} \;=\; \text{Bias}^2 + \text{Var}(\hat{f}^{*}) + \sigma^2
\underbrace{\text{Err}(\hat{f}_{\text{bag}})}_{\text{Bagging}} \;\approx\; \text{Bias}^2 + \tfrac{1}{B}\text{Var}(\hat{f}^{*}) + \sigma^2

ただし注意: $\frac{1}{B}$ という係数は「$B$ 個の予測が完全に独立な場合の理想」だ。実際にはブートストラップ複製は元データを共有するため、予測同士に相関が残り、$\frac{1}{B}$ ほどには減らない。この「予測同士の相関」をさらに弱める工夫が、ランダムフォレストで導入される「変数選択のランダム化」である。

つまり、Bagging は「高分散・低バイアス」な不安定学習器にこそ効く処方箋であり、「高バイアス」を救う薬ではない。この使い分けが、後章で扱うBoosting(誤差を順次学習して足し算する手法。10 章・16 章)やランダムフォレスト(Bagging に変数選択のランダム化を加えた手法。15 章)の動機の理解にもつながる。

まとめ: Bagging が効く場面・効かない場面

項目Bagging の効果
不安定な学習器(決定木、ニューラルネット)◎ バリアンスを大きく減らす
安定な推定器(線形回帰、滑らかなパラメトリックモデル)△ ほぼ効果なし
バイアスが支配的なモデル× 効果なし、Boosting や複雑なモデルが必要
解釈性× Bagging すると単一の木の構造が失われる

Bagging はシンプルだが、「バリアンスを平均でつぶす」という統計学の本質を見せてくれる手法だ。これを変数選択でさらに独立化したランダムフォレスト(Chapter 15)や、誤差そのものを学習するBoosting(Chapter 10, 16)への入り口にもなっている。