機械学習におけるバギングの概要
一連の予測変数と応答変数の間の関係が線形の場合、重回帰などの方法を使用して変数間の関係をモデル化できます。
ただし、関係がより複雑になると、多くの場合、非線形な方法に頼らなければなりません。
そのような方法の 1 つは、 分類および回帰ツリー(CART と略されることが多い) です。これは、一連の予測子変数を使用して、応答変数の値を予測する決定木を作成します。
ただし、CART モデルの欠点は、 分散が大きくなる傾向があることです。つまり、データセットを 2 つの半分に分割し、両方の半分に決定木を適用すると、結果は大きく異なる可能性があります。
CART モデルの分散を減らすために使用できる方法の 1 つはバギングとして知られており、ブートストラップ集計とも呼ばれます。
袋詰めとは何ですか?
単一のデシジョン ツリーを作成する場合、モデルの構築に使用するトレーニング データは 1 セットだけです。
ただし、袋詰めには次の方法が使用されます。
1.元のデータセットからb 個のブートストラップ サンプルを取得します。
- ブートストラップされたサンプルは、観測値が置換されて取得された元のデータセットからのサンプルであることを思い出してください。
2.各ブートストラップ サンプルのデシジョン ツリーを作成します。
3.各ツリーからの予測を平均して、最終モデルを取得します。
- 回帰ツリーの場合、 Bツリーによって行われた予測の平均を取ります。
- 分類ツリーについては、 Bツリーによって行われた最も一般的な予測を採用します。
バギングはあらゆる機械学習アルゴリズムで使用できますが、デシジョン ツリーには本質的に分散が大きく、バギングによって分散が大幅に削減され、テスト エラーが減少するため、特にデシジョン ツリーに役立ちます。
デシジョン ツリーにバギングを適用するには、個々のツリーを剪定せずに深く成長させます。これにより、個々のツリーの分散は高くなりますが、バイアスは低くなります。次に、これらのツリーから平均予測を取得すると、分散を減らすことができます。
実際には、通常、50 ~ 500 個のツリーで最適なパフォーマンスが達成されますが、最終モデルを作成するために数千個のツリーを適合させることも可能です。
より多くのツリーをフィッティングすると、より多くの計算能力が必要になることに注意してください。これは、データセットのサイズによっては問題になる場合もあれば、問題にならない場合もあります。
out-of-bag エラーの推定
k 分割相互検証に依存せずに、バギングされたモデルのテスト誤差を計算できることがわかりました。
その理由は、各ブートストラップ サンプルには、元のデータセットの観測値の約 2/3 が含まれることが示されるためです。バギングされたツリーに適合するために使用されなかった残りの 3 分の 1 の観測値は、アウトオブバッグ (OOB) 観測値と呼ばれます。
元のデータセットの i 番目の観測値は、その観測値が OOB であった各ツリーから平均予測を取得することで予測できます。
このアプローチを使用すると、元のデータセット内のn個の観測値すべてについて予測を行うことができ、テスト誤差の有効な推定値である誤差率を計算できます。
このアプローチを使用してテスト誤差を推定する利点は、特にデータセットが大きい場合に、k 分割相互検証よりもはるかに高速であることです。
予測変数の重要性を理解する
デシジョン ツリーの利点の 1 つは、解釈と視覚化が容易であることです。
代わりにバギングを使用すると、最終的なバギングされたモデルは多くの異なるツリーを平均した結果であるため、個々のツリーを解釈したり視覚化したりすることはできなくなります。解釈可能性を犠牲にして予測精度を向上させます。
ただし、すべてのBツリーで平均した、特定の予測子の分布による RSS (残差二乗和) の合計減少を計算することで、各予測子変数の重要性を理解できます。値が大きいほど、予測子の重要性が高くなります。
同様に、分類モデルについては、すべてのBツリーの平均をとった、特定の予測変数にわたる分布によるジニ指数の合計減少量を計算できます。値が大きいほど、予測子の重要性が高くなります。
したがって、最終的な全体モデルを正確に解釈することはできませんが、応答を予測する際に各予測変数がどれほど重要であるかを把握することはできます。
袋詰めを超えて
バギングの利点は、一般に、単一のデシジョン ツリーと比較してテスト エラー率が向上することです。
欠点は、データセット内に非常に強力な予測子がある場合、バギング ツリー コレクションからの予測が高度に相関する可能性があることです。
この場合、バギングされたツリーのほとんどまたはすべてが最初の分割にこの予測子を使用し、その結果、互いに類似し、相関性の高い予測を持つツリーが生成されます。
この問題を回避する 1 つの方法は、ランダム フォレストを使用することです。ランダム フォレストはバギングと同様の方法を使用しますが、装飾されたツリーを生成することができ、多くの場合、テスト エラー率の低下につながります。
ランダム フォレストの簡単な概要はここで読むことができます。