これら3つの方法の類似点と相違点は何ですか:
- バギング、
- ブースティング、
- スタッキング?
どれが最適ですか?そしてその理由は?
教えてくださいそれぞれの例?
コメント
- 教科書の参照については、次のことをお勧めします:"アンサンブルメソッド:基礎とアルゴリズム" by Zhou、Zhi-Hua
- こちらの関連の質問をご覧ください。
回答
3つすべては、いわゆる「メタアルゴリズム」です。複数の機械学習手法を組み合わせるアプローチです。分散(バギング)、バイアス(ブースティング)、または予測力の向上(スタッキングエイリアス)を減らすために、1つの予測モデルにまとめます。アンサンブル)。
すべてのアルゴリズムは、次の2つのステップで構成されます。
-
distrの生成元のデータのサブセットに対する単純なMLモデルの実装。
-
分布を1つの「集約」モデルに結合します。
3つの方法すべての簡単な説明は次のとおりです。
-
バギング ( B ootstrap Agg regat ing の略)は減少させる方法です繰り返しとの組み合わせを使用して元のデータセットからトレーニング用の追加データを生成し、マルチセットを生成することによる、予測の分散元のデータと同じカーディナリティ/サイズ。トレーニングセットのサイズを大きくしても、モデルの予測力を向上させることはできませんが、分散を小さくして、予測を期待される結果に狭めることができます。
-
ブースト は2段階のアプローチで、最初に次のサブセットを使用します。元のデータを使用して一連の平均的なパフォーマンスのモデルを作成し、特定のコスト関数(=多数決)を使用してそれらを組み合わせることでパフォーマンスを「ブースト」します。バギングとは異なり、古典的なブースティングサブセットの作成はランダムではなく、以前のモデルのパフォーマンスに依存します。すべての新しいサブセットには、以前のモデルによって誤って分類された(可能性が高い)要素が含まれています。
-
スタッキング はブーストに似ています:元のデータにもいくつかのモデルを適用します。ここでの違いは、ただし、重み関数の実験式だけではなく、メタレベルを導入し、別のモデル/アプローチを使用して、すべてのモデルの出力とともに入力を推定し、重みを推定します。どのモデルがうまく機能し、何がこれらの入力データを与えられたのかを判断するため。
比較表は次のとおりです:
ご覧のとおり、これらはすべて、複数のモデルを組み合わせてより良いモデルにするためのさまざまなアプローチです。ここに勝者は一人もいません。すべてはあなたのドメインとあなたがやろうとしていることに依存します。 スタッキングを一種のより高度なブーストとして扱うことはできますが、メタレベルに適したアプローチを見つけるのが難しいため、このアプローチを実際に適用することは困難です。 。
それぞれの簡単な例:
- バギング:オゾンデータ 。
- ブースト:光学式文字認識(OCR)の精度を向上させるために使用されます。
- スタッキング:医学におけるがんマイクロアレイの分類で使用されます。
コメント
- ブースティングの定義が、wiki(リンク先)またはこのペーパーの定義とは異なるようです。どちらも、ブースト時に次の分類器は以前にトレーニングされたものの結果を使用すると言いますが、'は言及していません。一方、あなたが説明する方法は、投票/モデル平均化手法のいくつかに似ています。
- @ a-rodin:この重要な側面を指摘していただき、ありがとうございます。これをよりよく反映するために、このセクションを完全に書き直しました。あなたの2番目の発言に関して、私の理解は、ブースティングも一種の投票/平均化であるということです、または私はあなたが間違っていることを理解しましたか?
- @AlexanderGalkinコメント時に勾配ブースティングを念頭に置いていました。 ' tは投票のように見えますが、反復関数近似手法として見えます。ただし、例: AdaBoostは投票に似ているので、'それについては議論しません。
- 最初の文では、ブーストはバイアスを減らすと言いますが、比較表ではそれは予測力を高めます。これらは両方とも本当ですか?
回答
バギング :
-
並列アンサンブル:各モデルは個別に構築されます
-
分散を減らすことを目的とします、バイアスではない
-
高分散低バイアスモデル(複雑なモデル)に適しています
-
例ツリーベースの方法の1つは、ランダムフォレストで、完全に成長したツリーを開発します(RFは、相関を減らすために成長した手順を変更することに注意してください木々の間)
ブースト :
-
シーケンシャルアンサンブル:どこでもうまくいく新しいモデルを追加してみてください以前のモデルには欠けている
-
減少bを目指すias 、分散ではない
-
低分散の高バイアスモデルに適しています
-
ツリーベースの方法の例は、勾配ブースト
コメント
- 各ポイントにコメントして、なぜそうなのか、どのように達成したのかを説明します。回答の改善。
- ブーストによって差異が減少し、それがどのように行われるかを説明するドキュメント/リンクを共有できますか?もっと深く理解したいだけです
- ティムに感謝します。'後でコメントを追加します。 @ ML_Pro、ブースティングの手順から(たとえば、 cs.cornell.edu/courses/cs578/2005fa/ … <の23ページ/ a>)、'ブースティングによってバイアスを減らすことができることは理解できます。
回答
Yuqianの答えを少し詳しく説明します。バギングの背後にある考え方は、ノンパラメトリック回帰法(通常は回帰または分類ツリーですが、ほぼすべてのノンパラメトリック法である可能性があります)でオーバーフィットする場合です。バイアス/分散のトレードオフのバイアス部分がない(または低い)高分散になる傾向があります。これは、オーバーフィットモデルが非常に柔軟であるためです(同じ母集団からの多くのリサンプルが利用可能な場合は、バイアスが低いため)。変動性が高い(サンプルを収集してオーバーフィットし、サンプルを収集してオーバーフィットした場合、ノンパラメトリック回帰がデータ内のノイズを追跡するため、結果が異なります)。何ができますか?多くのリサンプルを取得できます(からブートストラップ) 、それぞれが過剰適合し、それらを平均します。これにより、同じバイアス(低)が発生するはずですが、少なくとも理論的には、分散の一部が相殺されます。
基本的な勾配ブースティングは、単純すぎてそうではないUNDERFITノンパラメトリック回帰で機能します。データ内の実際の関係を説明するのに十分な柔軟性(つまりバイアス)がありますが、フィッティングが不十分であるため、分散が低くなります(新しいデータセットを収集した場合、同じ結果が得られる傾向があります)。これをどのように修正しますか?基本的に、適合度が低い場合でも、モデルのRESIDUALSには有用な構造(母集団に関する情報)が含まれているため、残差に基づいて構築されたツリーで、所有しているツリー(またはノンパラメトリック予測子)を拡張します。これは、元のツリーよりも柔軟である必要があります。ステップkで、ステップk-1の残差に適合したツリーに基づいて重み付けされたツリーが追加され、さらに多くのツリーが繰り返し生成されます。これらの木の1つが最適である必要があるため、これらすべての木を一緒に重み付けするか、最適と思われるものを選択することになります。したがって、勾配ブースティングは、より柔軟な候補ツリーの束を構築する方法です。
すべてのノンパラメトリック回帰または分類アプローチと同様に、バギングまたはブースティングがうまく機能する場合もあれば、どちらか一方のアプローチが平凡な場合もあります。または、他のアプローチ(または両方)がクラッシュして燃えます。
また、これらの手法は両方とも、ツリー以外の回帰アプローチに適用できますが、おそらく難しいため、最も一般的にはツリーに関連付けられています。過適合または過剰適合を回避するようにパラメーターを設定します。
コメント
- +1 for overfit =分散、underfit =バイアス引数!デシジョンツリーを使用する理由の1つは、構造的に不安定であるため、条件のわずかな変更からより多くのメリットが得られることです。 ( abbottanalytics。com / assets / pdf / … )
回答
回答
簡単にまとめると、バギングと Boosting は通常、1つのアルゴリズム内で使用されますが、スタッキングは通常使用されますさまざまなアルゴリズムからのいくつかの結果を要約するために使用されます。
- バギング: Bootstrap 機能とサンプルのサブセットで、いくつかの予測と平均(または他の方法)結果、たとえば、
Random Forest
は、分散を排除し、過剰適合の問題はありません。 - ブースト:バギングとの違いは、後のモデルが前のエラー、たとえば
GBM
やXGBoost
によって発生したエラーを学習します。これらは分散を排除しますが、過剰適合の問題があります。 - スタッキング:通常、複数のアルゴリズムを使用して同じデータセットと平均(最大、 minまたは他の組み合わせ)より高い予測精度を得るための結果。
回答
両方のバギングブースティングは、すべてのステップに単一の学習アルゴリズムを使用します。ただし、トレーニングサンプルの処理にはさまざまな方法が使用されます。どちらも、複数のモデルからの決定を組み合わせたアンサンブル学習方法です
バギング:
1.トレーニングデータをリサンプリングして取得しますMサブセット(ブートストラップ);
2. M個のデータセット(異なるサンプル)に基づいてM個の分類器(同じアルゴリズム)をトレーニングします。
3.最終分類器は、投票によってM個の出力を結合します。
サンプルの重みは等しくなります;
分類器の重みは等しくなります;
分散を減らすことでエラーを減らします
ブースト:ここではadaboostアルゴリズムに焦点を当てます
1。最初のラウンドのすべてのサンプルに等しい重みで開始します;
2.次のM-1ラウンドで、最後のラウンドで誤分類されたサンプルの重みを増やし、減らします最終ラウンドで正しく分類されたサンプルの重み
3.加重投票を使用して、最終分類器は前のラウンドの複数の分類器を組み合わせ、誤分類の少ない分類器に大きな重みを与えます。
段階的にサンプルを再重み付けします。前回のラウンドの結果に基づく各ラウンドの重み
リサンプリング(バギング)ではなく、サンプルの重みを再設定(ブースト)します。
回答
バギング
Bootstrap AGGregatING(Bagging)は基本分類器のトレーニングに使用されるサンプルのバリエーションを使用するアンサンブル生成方法。生成される分類器ごとに、バギングはサイズNのトレーニングセットからN個のサンプルを(繰り返しで)選択し、基本分類器をトレーニングします。これは、アンサンブルの目的のサイズに達するまで繰り返されます。
バギングは、不安定な分類器、つまり、決定木やパーセプトロンなどのトレーニングセットの変動に敏感な分類器で使用する必要があります。
ランダムサブスペースは、サンプルのバリエーションの代わりに特徴のバリエーションを使用する興味深い同様のアプローチであり、通常、複数の次元とまばらな特徴空間を持つデータセットで示されます。
ブースト
ブーストはによってアンサンブルを生成します「難しいサンプル」を正しく分類する 分類子を追加します。反復ごとに、ブーストはサンプルの重みを更新します。これにより、アンサンブルによって誤って分類されたサンプルの重みが高くなるため、新しい分類器のトレーニングに選択される可能性が高くなります。
ブーストは興味深いアプローチですが、ノイズに非常に敏感であり、弱い分類器を使用した場合にのみ効果的です。ブースティング手法にはいくつかのバリエーションがあり、AdaBoost、BrownBoost(…)、それぞれに特定の問題(ノイズ、クラスの不均衡…)を回避するための独自の重み更新ルールがあります。
スタッキング
スタッキングはメタ学習アプローチ。アンサンブルを使用して、「機能を抽出」を使用します。アンサンブルの別のレイヤー。次の画像( Kaggle Ensembling Guide から)は、これがどのように機能するかを示しています。
最初(下)のいくつかの異なる分類器がトレーニングセットでトレーニングされ、それらの出力(確率)は次の層(中間層)のトレーニングに使用され、最後に、2番目の層の分類器の出力(確率)が平均(AVG)を使用して結合されます。
を使用するいくつかの戦略があります。スタックの過剰適合を回避するための相互検証、ブレンディング、およびその他のアプローチ。ただし、一般的なルールの中には、小さなデータセットでこのようなアプローチを避け、さまざまな分類子を使用して相互に「補完」できるようにすることです。
スタッキングは、KaggleやTopなどのいくつかの機械学習コンテストで使用されています。コーダー。機械学習では間違いなく知っておく必要があります。
回答
バギングとブースティングでは、多くの同種モデルが使用される傾向があります。
スタッキングは、異種モデルタイプの結果を組み合わせます。
単一のモデルタイプがディストリビューション全体に最適である傾向はないため、これにより予測力が向上する理由がわかります。