バギング(Bagging)は、「Bootstrap Aggregating」の略で、機械学習モデルの予測をより安定させるためのアンサンブル学習手法です。
特に、データのちょっとした違いで大きく結果が揺らぎやすいモデルに対し、バギングは強い効果を発揮します。
一言で言えば、“似ているけれど少しずつ内容の違う複数のモデルを作り、その結果をまとめることで、ブレや過剰な反応を抑える仕組み”です。
バギングの基本的な流れ
バギングは、以下の3つのステップで構成されます。
Step 1:データをランダムに再サンプリングする
元の訓練データから、復元抽出という方法を使って複数のサブセットを作ります。
この抽出方法では、同じデータが何度も選ばれることもあれば、まったく選ばれないこともあります。
その結果、元データに似ているけれど微妙に異なる“複数のデータセット”が出来上がります。
Step 2:それぞれのサブセットで独立にモデルを学習する
作成したサブセットごとに、同じ種類のモデル(例:決定木)を個別に学習させます。
重要なのは「複数のモデルが同じデータで学習しているのではなく、それぞれ少しずつ異なるデータで学習している」という点です。
これにより、モデル同士にバリエーションが生まれます。
Step 3:予測するときに結果をまとめる(集約する)
学習した複数のモデルに新しいデータを入力し、
- 回帰なら“平均”
- 分類なら“多数決”
といった形で最終予測を決定します。
多数のモデルが出した結果をまとめることで、個々のモデルの不安定な部分が相殺され、より安定した予測が得られます。
バギングが効果を発揮する理由
バギングが有効なのは、データのわずかな変化に敏感なモデルほど大きなブレを抑えられるからです。
例えば決定木は、データの一部が変わるだけで木の形が大きく変わることがあります。
つまり「揺らぎやすい」モデルです。
そのような特徴を持つ学習器にバギングを適用すると、
- それぞれのモデルは別々の部分で偏った判断をする
- しかし、それらを多数集めてまとめると、極端な判断が薄まり、一般的で安定した判断になっていく
という効果が生まれます。
バギングのメリット
モデルの安定性が大きく向上する
単一のモデルが出す“ゆらぎ”を複数モデルで慣らすため、予測が安定します。
過剰に訓練データへフィットする問題を軽減できる
データに特有のクセを過大に学習してしまう“過学習”を抑える効果があります。
ノイズに強くなる(入力側の揺らぎに対して)
入力データにバラつきがあっても、多数のモデルを平均することで影響を小さくできます。
並列処理しやすい
独立した複数モデルを作るため、計算を並列化しやすいという実装上のメリットもあります。
バギングの弱点・限界
もともと安定したモデルには効果が小さい
線形モデルなど、少しデータが変わっても結果がほぼ変わらないタイプのモデルでは、バギングしても性能向上は限定的です。
計算コストは増える
複数のモデルを作るため、単一モデルを学習させるより時間も計算資源も必要です。
ラベルそのものが誤っている状況には弱い
入力データの揺らぎには強くなる一方、教師ラベル自体が間違っている場合、それを打ち消して正すような機能はありません。
モデル解釈性は下がる
複数モデルをまとめているため、「なぜこの予測になったのか」を単一モデルより説明しづらい側面があります。
ランダムフォレストは“バギングの強化版”
バギングの代表的な応用としてランダムフォレストがあります。
これは、
- データのランダムサンプリング
- 特徴量のランダム選択
という“二重のランダム化”によって、モデル間の偏りをさらに減らした手法です。
バギングの原理をより強力にしたもので、現在でも幅広い分野で利用されています。
バギングが向いている場面
バギングが最も効果的なのは、次のような状況です。
- 決定木など、変動が大きいモデルを使うとき
- データにある程度のノイズやばらつきが含まれているとき
- 安定性を優先したい予測タスクを扱うとき
- 訓練データに偏りがあり、モデルがブレやすい状況
複数のモデルを平均化することで、全体として「揺らぎに強い」予測器が得られます。
まとめ
バギングは、
- データをサブセットに分け
- 各サブセットで別々のモデルを作り
- その結果をまとめる
というシンプルなアイデアに基づくアンサンブル手法です。
その最大のメリットは、個々のモデルの“不安定さ”を和らげ、より信頼性の高い予測を得られることにあります。
特に、決定木のようにデータの違いで結果が変わりやすいモデルとは抜群の相性です。
実務でも研究でも使われる、普遍性の高い技術と言えるでしょう。
以上、機械学習のバギングについてでした。
最後までお読みいただき、ありがとうございました。
