バイアス・分散とブースティング/バギングの統一視点
ブースティングとバギングは別物に見えて、誤差分解の同じ枠で対比できる。バギングは分散、ブースティングはバイアスを削るという軸で整理すれば、どの手法をいつ選ぶかに理屈が通ります。
- 1.二乗誤差の期待汎化誤差は バイアス² + 分散 + ノイズ に厳密分解できる。アンサンブルはこの3項のどれを下げる手法かで分類でき、バギングは分散、ブースティングはバイアスを主に削る。
- 2.バギングは独立性の高い高分散・低バイアス学習器を平均し、分散を ρσ²+(1-ρ)σ²/B まで下げる。ブースティングは弱学習器を逐次足して残差(負の勾配)を潰し、バイアスを段階的に下げる。
- 3.スタッキングはレベル0の異種モデルの予測を入力に、レベル1のメタ学習器で最適に重み付けする。out-of-fold 予測で訓練すれば漏洩を防げる。ノイズ項はどの手法でも下げられない既約下限。
誤差分解:アンサンブルを測る共通のものさし
アンサンブル手法は数多くありますが、「何を下げているのか」という1つの軸で統一的に整理できます。その軸がバイアス・分散・ノイズへの誤差分解です。真の関数を f(x)、観測を y = f(x) + ε(ノイズ ε は平均0・分散 σ_ε²)とし、訓練データに依存して学習される予測器を g_D(x) とします。データ集合 D 全体にわたる期待二乗誤差は、ある点 x で次のように厳密に分解されます。
E_D,ε[ (y - g_D(x))² ]
= ( f(x) - E_D[g_D(x)] )² … バイアス²
+ E_D[ (g_D(x) - E_D[g_D(x)])² ] … 分散
+ σ_ε² … ノイズ(既約)
第1項のバイアスは、データを変えて平均した予測 E_D[g_D] が真の値からどれだけ系統的にずれているか。第2項の分散は、訓練データの違いによって予測がどれだけばらつくか。第3項のノイズは観測そのものに含まれる既約な誤差で、どんな学習器でも下げられない下限です。詳しい導出と二重降下までの発展はバイアス-バリアンス分解で扱っています。
この枠組みで見ると、アンサンブルの2大系統は狙う項が正反対です。
| 系統 | 主に下げる項 | ベース学習器 | 結合の仕方 | 代表手法 |
|---|---|---|---|---|
| バギング系 | 分散 | 高分散・低バイアス(深い木) | 並列に独立学習し平均/多数決 | Random Forest, Extra Trees |
| ブースティング系 | バイアス | 高バイアス・低分散(浅い木) | 逐次に残差を補正して加算 | AdaBoost, GBDT, XGBoost |
| スタッキング | 両方(メタで再配分) | 異種の強学習器 | メタ学習器で重み付け結合 | Stacked Generalization |
バギング:平均で分散だけを削る
バギング(bagging) は、分散の大きい学習器を多数作って平均することで分散を下げます。ベース学習器には深く育てた決定木のような低バイアス・高分散のモデルを使うのが定石です。平均化は各学習器のバイアスを変えないため、もとのバイアスが低いほど結果も良くなります。
なぜ平均が分散を下げるか。B 本の学習器の予測を確率変数とみなし、各分散を σ²、相異なる2本の相関を ρ とすると、平均 (1/B)Σ g_b(x) の分散は次式になります。
Var( (1/B) Σ_b g_b(x) ) = ρ σ² + (1 - ρ) σ² / B
第2項は B を増やすほど 0 に近づきますが、第1項 ρσ² は学習器どうしの相関が残る限り消えません。いくら本数を増やしても分散は ρσ² までしか下がらない——これが分散低減の下限です。ランダムフォレストは各分割で特徴をランダムに絞って木を脱相関させ ρ 自体を下げます。導出と OOB 誤差・特徴重要度はランダムフォレストとバギングで詳述しています。
平均をとっても各木のバイアス f(x) - E_D[g_b(x)] は打ち消し合いません。期待値の線形性から、平均予測の期待値は各予測の期待値の平均に等しく、全木が同じ分布から学習されるならバイアスは1本のときと変わりません。だからバギングは「分散低減の手法であって、バイアス低減の手法ではない」と割り切るのが正確です。系統的に当て損なう(高バイアスの)問題には効きません。
ブースティング:残差を逐次補正してバイアスを削る
ブースティング(boosting) は逆向きです。高バイアス・低分散の弱学習器(典型的には深さ1〜3の浅い木、決定株)を1本ずつ足し、各ステップで「これまでの予測がまだ当てられていない部分」を新しい学習器に学ばせます。加算するたびにモデルの表現力が増し、バイアスが段階的に下がっていくのが本質です。
最も一般的な勾配ブースティングは、これを「関数空間での勾配降下」として定式化します。現在のモデルを F_{m-1}(x)、損失を L(y, F) とすると、次の弱学習器 h_m は損失の負の勾配(疑似残差)にフィットされ、学習率 η をかけて加えられます。
r_im = -[ ∂L(y_i, F) / ∂F ]_{F = F_{m-1}(x_i)} … 疑似残差
h_m = r_im に最もよくフィットする弱学習器
F_m(x) = F_{m-1}(x) + η · h_m(x)
二乗損失なら負の勾配はちょうど残差 y_i - F_{m-1}(x_i) になり、「残差を次の木で予測して足す」という直感に一致します。XGBoost は損失を2次まで展開し勾配とヘシアンで分割利得を評価します。詳細は勾配ブースティングを参照してください。
バギングは木を増やしても分散の下限に漸近するだけで誤差が悪化しにくい一方、ブースティングは反復しすぎるとバイアスを下げきった後に分散が増え、過学習します。逐次的に同じデータへ適合を強めるため、ベース学習器どうしが独立でなく分散低減が効かないからです。対策は学習率 η を小さく(shrinkage)、木を浅く、行・列サブサンプリング、早期終了(early stopping)の併用です。「弱学習器を弱いまま、ゆっくり多数足す」のが鉄則になります。
ベース学習器の強さの選び方も対照的です。バギングは平均で分散を削る前提なので**各学習器を強く(深く)しておくのが良く、ブースティングは加算で表現力を積み上げる前提なので各学習器は弱く(浅く)**保ち、過学習を学習率と本数で制御します。
スタッキング:メタ学習器で最適に再配分する
スタッキング(stacked generalization) は第3の系統で、性質の異なる複数モデルの予測をメタ学習器で結合します。バギング/ブースティングが同種の弱学習器を均質に束ねるのに対し、スタッキングは決定木・線形モデル・ニューラルネットなど異種の強学習器を組み合わせ、その出力をどう重み付けすれば最良かをデータから学びます。
レベル0: 複数のベースモデル M1..MK を訓練
レベル1: 各 Mk の予測を特徴ベクトルとし、メタ学習器が最終予測を学習
漏洩防止(重要):
訓練データを K 分割し、各 fold を残りで学習したモデルで予測(out-of-fold 予測)
この out-of-fold 予測だけをメタ学習器の入力に使う
要点はout-of-fold 予測で訓練することです。各ベースモデルが自分の学習に使った点をそのまま予測してメタ特徴にすると、過度に楽観的な値が漏れ込み(リーク)、メタ学習器が過学習します。交差検証の枠組みで「未学習の fold だけ」を予測に使えば、汎化を反映したメタ特徴が得られます。誤差分解の言葉でいえば、スタッキングは個々のモデルのバイアスと分散の残り誤差が互いに相関しないことを利用し、メタ層で重みを最適化してバイアスと分散の両方を削りにいく手法です。
「バギングとブースティングの違いを誤差分解で説明せよ」が頻出です。模範解答:汎化誤差は バイアス²+分散+ノイズ に分解でき、ノイズは既約。バギングは独立性の高い高分散・低バイアス学習器を並列に平均して分散を ρσ²+(1-ρ)σ²/B まで下げる(バイアスは不変)。ブースティングは弱学習器を逐次足し残差=負の勾配を潰してバイアスを下げる(過学習で分散が増えうるので学習率・早期終了で抑える)。スタッキングはメタ学習器で異種モデルを out-of-fold 予測上で結合し両項を再配分する、と言えれば十分です。
まとめ
アンサンブルの全体像は、誤差分解 バイアス²+分散+ノイズ という1枚のものさしで見通せます。バギングは分散を削る手法で、相関 ρ の低い高分散・低バイアス学習器を並列に平均し、分散を下限 ρσ² へ近づけます——バイアスは変わりません。ブースティングはバイアスを削る手法で、浅い弱学習器を逐次足して残差(負の勾配)を潰し、表現力を積み上げます——その代償として過学習しうるため学習率や早期終了で分散を抑えます。スタッキングは異種の強学習器をメタ学習器で結合し、out-of-fold 予測で漏洩を防ぎながら両項を再配分します。どの項を下げたいのか——系統的な当て損ない(バイアス)か、データ依存のばらつき(分散)か——を見極めれば、手法選択は当てずっぽうではなく誤差分解に根拠を持つ設計判断になります。最後にノイズ項 σ_ε² はどの手法でも下げられない既約下限であり、ここに到達したら次はデータ品質や過学習対策へ目を向けるべきだと教えてくれます。
AI/機械学習 Article
バイアス・分散とブースティング/バギングの統一視点を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
アンサンブル
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
バギングは独立性の高い高分散・低バイアス学習器を平均し、分散を ρσ²+(1-ρ)σ²/B まで下げる。ブースティングは弱学習器を逐次足して残差(負の勾配)を潰し、バイアスを段階的に下げる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「アンサンブル / バイアス-バリアンス」に近いか確認する。
- 強みである「二乗誤差の期待汎化誤差は バイアス² + 分散 + ノイズ に厳密分解できる。アンサンブルはこの3項のどれを下げる手法かで分類でき、バギングは分散、ブースティングはバイアスを主に削る。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。