アンサンブル学習

バギング・ブースティング・スタッキング
🔰 初心者

アンサンブル学習って何ですか?

🎓 上級者

複数のモデルを組み合わせて、単体よりも高い精度を出す手法だよ。代表的な方法がバギングブースティングの2つだね。

バギング vs ブースティング バギング(並列) 元データ サンプル1 サンプル2 サンプル3 モデル1 モデル2 モデル3 (独立・並列に学習) 多数決 / 平均 最終予測 バリアンス(ばらつき)を下げる ブースティング(直列) 元データ モデル1 誤りに注目 モデル2 誤りに注目 モデル3 直列に学習 重み付き結合 最終予測 バイアス(偏り)を下げる
図1: バギングは並列にモデルを作り多数決、ブースティングは直列に誤りを修正
🎲 バギング(Bagging)
🔰 初心者

バギングってどういう方法ですか?

🎓 上級者

Bagging = Bootstrap AGGregatINGの略だよ。元データからランダムにデータを抽出して、独立に複数のモデルを作り、その結果を多数決や平均で集約するんだ。

バギングの手順

1. 元データからランダムにデータを抽出(ブートストラップサンプリング、重複あり)
2. それぞれ異なるデータセットで独立にモデルを学習
3. 全モデルの予測を多数決(分類)/ 平均(回帰)で最終結果にする
各モデルは並列に学習できる(独立なので同時に作れる)。バリアンス(ばらつき)を下げる効果があり、過学習しにくい。
ブートストラップサンプリング(復元抽出) 元データセット A B C D E サンプル1 A A C D B Aが2回出現 サンプル2 B C C E D Cが2回出現 サンプル3 A D E E B Eが2回出現 重複あり(復元抽出)のポイント • 元データと同じサイズのサンプルを作る(N個からN個を抽出) 同じデータが複数回選ばれることがある(復元抽出) • 各サンプルは約63.2%の元データを含む(残りは未選択 = OOB
図2: ブートストラップサンプリングは復元抽出で、同じデータが複数回選ばれることがある
代表例:ランダムフォレスト

バギング+さらに各分岐で使う特徴量もランダムに選ぶ。木同士の多様性がさらに増し、精度が上がる。

🚀 ブースティング(Boosting)
🔰 初心者

ブースティングはバギングと何が違うんですか?

🎓 上級者

バギングが「並列に作って多数決」なのに対して、ブースティングは前のモデルの間違いを次のモデルが重点的にカバーする手法だよ。直列に学習するのが特徴だね。

ブースティングの手順

1. まず1つ目のモデルを学習
2. 1つ目が間違えたデータに重みを増やす
3. 2つ目はその重みの高い(=難しい)データを重点的に学習
4. これを繰り返し、最終的に全モデルの結果を重み付き合算
各モデルは直列に学習(前のモデルの結果が必要なので同時にはできない)。バイアス(偏り)を下げる効果があるが、過学習しやすい
手法特徴
AdaBoost間違えたデータの重みを増やす(元祖ブースティング)
勾配ブースティング前のモデルの残差(誤差)を次のモデルで学習
XGBoost勾配ブースティングを高速化+正則化を追加
LightGBMXGBoostをさらに高速化。大規模データ向け
⚖️ バギング vs ブースティング 比較

バギング

並列に学習(独立に作る)
多数決 / 平均で組み合わせ
バリアンスを下げる
過学習しにくい
並列化できるので速い
代表例:ランダムフォレスト

ブースティング

直列に学習(前のを踏まえる)
重み付き合算で組み合わせ
バイアスを下げる
過学習しやすい
直列なので遅い
代表例:XGBoost、LightGBM

バギングブースティング
学習の仕方並列(独立に作る)直列(前のを踏まえて作る)
組み合わせ方多数決 / 平均重み付き合算
主な効果バリアンス低下(ばらつきを減らす)バイアス低下(偏りを減らす)
過学習しにくいしやすい
速度並列化できるので速い直列なので遅い
代表例ランダムフォレストXGBoost、LightGBM
🏗️ スタッキング(Stacking)
🔰 初心者

スタッキングってバギングやブースティングと何が違うんですか?

🎓 上級者

バギングもブースティングも同じ種類のモデルを複数使うけど、スタッキングは異なる種類のモデルを組み合わせるんだ。しかも単純に多数決するのではなく、「どのモデルの予測をどれくらい信頼するか」を別のモデル(メタ学習器)が学習して決めるのがポイントだよ。

スタッキングの手順

1. 第1段階(Level 0):複数の異なる種類のモデル(例:決定木、SVM、ロジスティック回帰など)を学習させる
2. 各モデルの予測結果を集める
3. 第2段階(Level 1):集めた予測結果を新しい特徴量として、メタ学習器(上位モデル)が最適な組み合わせを学習
4. メタ学習器が最終予測を出力
第1段階のモデルの予測を作るときは交差検証(CV)を使って、学習データへの過学習を防ぐのが重要。
スタッキングの仕組み 訓練データ Level 0 (基本学習器) 決定木 SVM ロジスティック回帰 k-NN (異なる種類のモデルを使う) 予測1 予測2 予測3 予測4 予測結果 → 新しい特徴量として入力 Level 1 (メタ学習器) メタ学習器(上位モデル) 最終予測
図3: スタッキングは異なるモデルの予測を新たな特徴量としてメタ学習器に入力する
バギング・ブースティングとの違い

バギングとブースティングは同じ種類のモデル(通常は決定木)を複数使う。スタッキングは異なる種類のモデルを使い、その予測をメタ学習器が最適に組み合わせる。「モデルの多様性」を活かすのがスタッキングの強み。

📊 アンサンブル学習 3手法比較
バギングブースティングスタッキング
学習の仕方並列直列2段階(Level 0 → Level 1)
モデルの種類同種(決定木など)同種(決定木など)異種(複数の異なるモデル)
組み合わせ方多数決 / 平均重み付き合算メタ学習器が学習
主な効果バリアンス低下バイアス低下多様なモデルの良いとこ取り
過学習対策しにくいしやすい交差検証で防ぐ
代表例ランダムフォレストXGBoostKaggle上位解法で頻出

🎯 G検定で押さえるべきポイント