機械学習におけるバギング、ブースティング、スタック


245

これら3つの方法の類似点と相違点は何ですか:

  • バギング、
  • ブースティング、
  • スタッキング?

どれが最高ですか?なぜ?

それぞれの例を教えてもらえますか?


3
教科書の参照については、以下をお勧めします。「アンサンブル法:基礎とアルゴリズム」Zhou、Zhi-Hua
Vadim Smolyakovによる

1
関連する質問はこちらをご覧ください。
リカルドクルーズ

回答:


252

3つすべては、いわゆる「メタアルゴリズム」です。分散(バギング)、バイアス(ブースティング)、または予測力の向上(スタッキングエイリアスアンサンブル)を減らすために、いくつかの機械学習手法を1つの予測モデルに組み合わせるアプローチです。

すべてのアルゴリズムは2つのステップで構成されます。

  1. 元のデータのサブセットで単純なMLモデルの分布を作成します。

  2. 分布を1つの「集約」モデルに結合します。

3つの方法すべての簡単な説明を次に示します。

  1. バギング B ootstrap Agg regat ingの略)は、繰り返しとの組み合わせを使用して元のデータセットからトレーニング用の追加データを生成し、元のデータと同じカーディナリティ/サイズのマルチセットを生成することにより、予測の分散を減らす方法です。トレーニングセットのサイズを大きくしても、モデルの予測力を改善することはできませんが、分散を小さくするだけで、予測を期待される結果に狭く調整できます。

  2. ブースティングは2段階のアプローチで、最初に元のデータのサブセットを使用して一連の平均パフォーマンスモデルを作成し、次に特定のコスト関数(=多数決)を使用してそれらを組み合わせてパフォーマンスを「ブースト」します。バギングとは異なり、古典的なブースティングでは、サブセットの作成はランダムではなく、以前のモデルのパフォーマンスに依存します。すべての新しいサブセットには、以前のモデルによって誤分類された可能性のある要素が含まれます。

  3. スタッキングはブースティングに似ています。元のデータに複数のモデルを適用することもできます。ただし、ここでの違いは、重み関数の経験式だけではなく、メタレベルを導入し、別のモデル/手法を使用して入力を推定し、すべてのモデルの出力と重みを推定するか、言い換えれば、どのモデルがうまく機能し、どのような入力データが不適切に与えられたかを判断します。

比較表は次のとおりです。

比較表

ご覧のとおり、これらはすべて、複数のモデルを組み合わせてより良いモデルにするためのさまざまなアプローチであり、勝者はここだけではありません。すべてがドメインと実行する内容に依存します。スタッキングを一種のより高度なブースティングとして扱うこともできますが、メタレベルに適したアプローチを見つけることが難しいため、このアプローチを実際に適用することは困難です。

それぞれの短い例:

  1. バギングオゾンデータ
  2. ブースティング光学式文字認識(OCR)の精度を向上させるために使用されます。
  3. スタッキング:医学の癌マイクロアレイの分類に使用されます。

8
ブースティングの定義は、Wiki(リンク先)またはこのペーパーの定義とは異なるようです。両方とも、次の分類器をブーストする際に、以前に訓練された分類器の結果を使用すると言いますが、それについては言及していません。一方、あなたが説明する方法は、投票/モデル平均化手法のいくつかに似ています。
アレクサンダーロダン

2
@ a-rodin:この重要な側面を指摘していただきありがとうございます。これをよりよく反映するために、このセクションを完全に書き直しました。あなたの2番目の発言に関して、私の理解は、ブースティングも投票/平均の一種であるということです、または私はあなたが間違っていると理解しましたか?
アレクサンダーガルキン

@AlexanderGalkinコメント時の勾配ブースティングを念頭に置いていました:投票のようではなく、むしろ反復関数近似手法として見えます。しかし、たとえば、AdaBoostは投票のように見えるので、私はそれについて議論しません。
アレクサンダーロダン

3
最初の文では、ブースティングによりバイアスが減少すると言いますが、比較表では予測力が増加すると言います。これらは両方とも本当ですか?
ベンリンゼイ

68

バギング

  1. 並列アンサンブル:各モデルは独立して構築されます

  2. 偏りではなく、分散減らすことを目指します

  3. 高分散低バイアスモデル(複雑なモデル)に適しています

  4. ツリーベースの方法の例は、完全に成長したツリーを開発するランダムフォレストです(RFはツリー間の相関を減らすために成長手順を変更することに注意してください)

ブースティング

  1. 順次アンサンブル:以前のモデルが欠けている場合にうまく機能する新しいモデルを追加しよう

  2. 分散ではなく、バイアス減らすことを目指します

  3. 低分散高バイアスモデルに適しています

  4. ツリーベースの方法の例は勾配ブースティングです


5
なぜそうなのどのように達成されるのを答えるために各ポイントにコメントすることは、あなたの答えを大きく改善するでしょう。
ティム

2
ブーストにより変動が減少することとその方法を説明するドキュメント/リンクを共有できますか?ただ、より深く理解したい
GeorgeOfTheRF

1
ティムのおかげで、後でコメントを追加します。@ML_Pro、ブーストの手順(たとえばcs.cornell.edu/courses/cs578/2005fa/…の 23ページ)から、ブーストによってバイアスを減らすことができることは理解できます。
yuqian

43

Yuqianの答えを少し詳しく説明します。バギングの背後にある考え方は、ノンパラメトリック回帰法(通常は回帰ツリーまたは分類木ですが、ほぼすべてのノンパラメトリック法になります)でオーバーフィットすると、バイアスの高い分散、バイアスなし(または低い)になりがちです/分散のトレードオフ。これは、オーバーフィッティングモデルは非常に柔軟であるため(同じ母集団の多数のリサンプルでバイアスが低い場合)、ばらつきが大きいためです(サンプルを収集してオーバーフィットし、サンプルを収集してオーバーフィットすると、ノンパラメトリック回帰がデータのノイズを追跡するため、結果は異なります)。私たちは何ができる?多くのリサンプル(ブートストラップから)をそれぞれオーバーフィットし、それらを一緒に平均化できます。これは同じバイアス(低)につながるはずですが、分散の一部を相殺し、

勾配ブースティングは基本的にUNDERFITノンパラメトリック回帰で機能します。これは単純すぎて、データの実際の関係を説明するのに十分な柔軟性がありません(つまり、偏りがあります)新しいデータセットを収集する場合に同じ結果を得るため)。これをどのように修正しますか?基本的に、適合していない場合、モデルのRESIDUALSにはまだ有用な構造(母集団に関する情報)が含まれているため、残差に基づいて構築されたツリーを使用してツリー(または任意のノンパラメトリック予測子)を補強します。これは、元のツリーよりも柔軟でなければなりません。より多くのツリーを繰り返し生成します。各ステップkで、ステップk-1からの残差に適合したツリーに基づく重み付きツリーを追加します。これらのツリーの1つが最適である必要があります。そのため、これらのすべてのツリーに重みを付けるか、最適なツリーを選択することになります。したがって、勾配ブースティングは、より柔軟な候補ツリーの束を構築する方法です。

すべてのノンパラメトリック回帰または分類アプローチと同様に、バギングまたはブースティングがうまく機能する場合があり、場合によっては一方または他方のアプローチが平凡であり、一方または他方のアプローチ(または両方)がクラッシュして燃えることがあります。

また、これらの手法はどちらもツリー以外の回帰アプローチに適用できますが、おそらく、アンダーフィッティングまたはオーバーフィッティングを避けるためにパラメーターを設定することが難しいため、ツリーに最も一般的に関連付けられています。


3
オーバーフィット=分散、アンダーフィット=バイアス引数に対して+1!デシジョンツリーを使用する理由の1つは、構造的に不安定であるため、条件のわずかな変更の恩恵を受けることです。(abbottanalytics.com/assets/pdf/...
マークHorvathの


3

要約すると、通常、1つのアルゴリズム内でバギングブースティングが使用され、通常、異なるアルゴリズムからのいくつかの結果を要約するためにスタッキングが使用されます。

  • バギング:特徴とサンプルのサブセットをブートストラップして、いくつかの予測を取得し、結果を平均化(または他の方法)しますRandom Forest
  • ブースト:との違い袋詰めすることは、後でモデルは、例えば、以前のいずれかによって作られたエラーを習得しようとしていることであるGBMXGBoost、分散を排除するが、過学習の問題を持っています。
  • スタッキング:通常、競争で使用され、複数のアルゴリズムを使用して同じデータセットでトレーニングし、予測の精度を高めるために結果を平均(最大、最小、またはその他の組み合わせ)します。

2

バギングとブースティングの両方で、すべてのステップで単一の学習アルゴリズムが使用されます。ただし、トレーニングサンプルの処理にはさまざまな方法が使用されます。両方とも、複数のモデルから決定兼ね備えたアンサンブル学習法です
袋詰め
Mサブセット(ブートストラップ)を取得するには1.リサンプリングのトレーニングデータを、
2. Mデータセット(異なるサンプル)に基づいてM分類器(同じアルゴリズム)をトレーニングします。
3.最終分類器は、投票によりM個の出力を結合します。
サンプルの重量は等しくなります。
分類子の重みは等しくなります。
分散を減らすことでエラーを減らします 。
ブースティング:ここではadaboostアルゴリズムに焦点を当てます

2.次のM-1ラウンドでは、最終ラウンドで誤分類されたサンプルの重みを増やし、最終ラウンドで正しく分類されたサンプルの重みを減らします
。誤分類の少ない分類器へ。
サンプルを段階的に再重み付けします。最後のラウンドの結果に基づいた各ラウンドの重みは
、リサンプリング(袋詰め)の代わりにサンプルを再重み付け(ブースティング)します。


0

バギングとブースティングは、多くの同種モデルを使用する傾向があります。

スタッキングは、異種モデルタイプの結果を組み合わせます。

単一のモデルタイプはすべての分布全体に最適ではないため、これにより予測力が向上する理由がわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.