🎓 上級者
複数のモデルを組み合わせて、単体よりも高い精度を出す手法だよ。代表的な方法がバギングとブースティングの2つだね。
図1: バギングは並列にモデルを作り多数決、ブースティングは直列に誤りを修正
🎲 バギング(Bagging)
🎓 上級者
Bagging = Bootstrap AGGregatINGの略だよ。元データからランダムにデータを抽出して、独立に複数のモデルを作り、その結果を多数決や平均で集約するんだ。
バギングの手順
1. 元データからランダムにデータを抽出(ブートストラップサンプリング、重複あり)
2. それぞれ異なるデータセットで独立にモデルを学習
3. 全モデルの予測を多数決(分類)/ 平均(回帰)で最終結果にする
各モデルは並列に学習できる(独立なので同時に作れる)。バリアンス(ばらつき)を下げる効果があり、過学習しにくい。
図2: ブートストラップサンプリングは復元抽出で、同じデータが複数回選ばれることがある
代表例:ランダムフォレスト
バギング+さらに各分岐で使う特徴量もランダムに選ぶ。木同士の多様性がさらに増し、精度が上がる。
🚀 ブースティング(Boosting)
🔰 初心者
ブースティングはバギングと何が違うんですか?
🎓 上級者
バギングが「並列に作って多数決」なのに対して、ブースティングは前のモデルの間違いを次のモデルが重点的にカバーする手法だよ。直列に学習するのが特徴だね。
ブースティングの手順
1. まず1つ目のモデルを学習
2. 1つ目が間違えたデータに重みを増やす
3. 2つ目はその重みの高い(=難しい)データを重点的に学習
4. これを繰り返し、最終的に全モデルの結果を重み付き合算
各モデルは直列に学習(前のモデルの結果が必要なので同時にはできない)。バイアス(偏り)を下げる効果があるが、過学習しやすい。
| 手法 | 特徴 |
| AdaBoost | 間違えたデータの重みを増やす(元祖ブースティング) |
| 勾配ブースティング | 前のモデルの残差(誤差)を次のモデルで学習 |
| XGBoost | 勾配ブースティングを高速化+正則化を追加 |
| LightGBM | XGBoostをさらに高速化。大規模データ向け |
⚖️ バギング vs ブースティング 比較
バギング
並列に学習(独立に作る)
多数決 / 平均で組み合わせ
バリアンスを下げる
過学習しにくい
並列化できるので速い
代表例:ランダムフォレスト
ブースティング
直列に学習(前のを踏まえる)
重み付き合算で組み合わせ
バイアスを下げる
過学習しやすい
直列なので遅い
代表例:XGBoost、LightGBM
| バギング | ブースティング |
| 学習の仕方 | 並列(独立に作る) | 直列(前のを踏まえて作る) |
| 組み合わせ方 | 多数決 / 平均 | 重み付き合算 |
| 主な効果 | バリアンス低下(ばらつきを減らす) | バイアス低下(偏りを減らす) |
| 過学習 | しにくい | しやすい |
| 速度 | 並列化できるので速い | 直列なので遅い |
| 代表例 | ランダムフォレスト | XGBoost、LightGBM |
🏗️ スタッキング(Stacking)
🔰 初心者
スタッキングってバギングやブースティングと何が違うんですか?
🎓 上級者
バギングもブースティングも同じ種類のモデルを複数使うけど、スタッキングは異なる種類のモデルを組み合わせるんだ。しかも単純に多数決するのではなく、「どのモデルの予測をどれくらい信頼するか」を別のモデル(メタ学習器)が学習して決めるのがポイントだよ。
スタッキングの手順
1. 第1段階(Level 0):複数の異なる種類のモデル(例:決定木、SVM、ロジスティック回帰など)を学習させる
2. 各モデルの予測結果を集める
3. 第2段階(Level 1):集めた予測結果を新しい特徴量として、メタ学習器(上位モデル)が最適な組み合わせを学習
4. メタ学習器が最終予測を出力
第1段階のモデルの予測を作るときは交差検証(CV)を使って、学習データへの過学習を防ぐのが重要。
図3: スタッキングは異なるモデルの予測を新たな特徴量としてメタ学習器に入力する
バギング・ブースティングとの違い
バギングとブースティングは同じ種類のモデル(通常は決定木)を複数使う。スタッキングは異なる種類のモデルを使い、その予測をメタ学習器が最適に組み合わせる。「モデルの多様性」を活かすのがスタッキングの強み。
📊 アンサンブル学習 3手法比較
| バギング | ブースティング | スタッキング |
| 学習の仕方 | 並列 | 直列 | 2段階(Level 0 → Level 1) |
| モデルの種類 | 同種(決定木など) | 同種(決定木など) | 異種(複数の異なるモデル) |
| 組み合わせ方 | 多数決 / 平均 | 重み付き合算 | メタ学習器が学習 |
| 主な効果 | バリアンス低下 | バイアス低下 | 多様なモデルの良いとこ取り |
| 過学習対策 | しにくい | しやすい | 交差検証で防ぐ |
| 代表例 | ランダムフォレスト | XGBoost | Kaggle上位解法で頻出 |
🎯 G検定で押さえるべきポイント
- バギングは並列学習でバリアンスを下げる。覚え方:バリアンスの「バ」とバギングの「バ」
- ブースティングは直列学習でバイアスを下げる
- スタッキングは異なる種類のモデルの予測をメタ学習器が最適に組み合わせる2段階構造
- ランダムフォレストはバギング+特徴量のランダム選択
- XGBoostは勾配ブースティングの高速化+正則化版
- ブートストラップサンプリングはバギングで使うランダムな重複ありデータ抽出