【ばぎんぐ】
バギング とは?
最終更新:
💡 データを選び直して、複数の予測をまとめる
学習データを重複を許してランダムに抽出し、複数のモデルを学習させて予測をまとめる手法。データの違いによる予測のばらつきを抑える狙いと、ランダムフォレストとの関係を説明します。
📌 このページのポイント
- 同じデータが何度も選ばれ得る復元抽出を使う
- 複数のモデルを、それぞれの学習データで育てる
- 予測を多数決・確率の平均・数値の平均などでまとめる
- 予測のばらつきを抑える狙いがあり、改善の程度はデータやモデル次第
バギングは、データを何組かに分けること?
単に分けるのとは違うよ。元のデータから、選んだものを戻しながらランダムに選ぶ復元抽出を繰り返す。例えばA・B・Cから、A・A・Cという組ができてもいい。それぞれの組でモデルを学習させ、最後に予測をまとめるんだ。
複数の答えは、どうまとめるの?
数値を予測する回帰なら平均、分類なら多数決やクラスごとの確率の平均などを使うよ。scikit-learnのBaggingClassifierでは、確率を出せるモデルなら確率を平均し、出せない場合は多数決にする。集約の仕方は実装も確認しよう。
ランダムフォレストも同じ仲間?
バギングに近い考え方で複数の決定木を作るよ。さらに、木の各分岐で候補にする特徴量をランダムに選ぶ工夫がある。どの木も同じ判断ばかりしないようにして、予測のばらつきを減らすことを狙うんだ。
数を増やせば、必ず精度が上がる?
必ずではないよ。予測のばらつきが大きいモデルでは有効なことがあるけれど、似た誤りをするモデルばかりだと効果は限られる。ブースティングとの優劣も一律には決まらない。学習に使わないデータなどで性能を確かめて、比較することが大切だよ。
まとめ:ざっくりこれだけ覚えればOK!
「バギング」って出てきたら「データを重複ありで選び直し、複数の予測をまとめる手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Bagging(Bootstrap Aggregating)」 = ブートストラップ集約
💬 Bootstrapでデータを復元抽出し、Aggregatingで予測を集約することから、Baggingと呼びます。元のデータを重ならない組に分割するだけではありません。