機械学習モデルの組み合わせ


20

私は、データマイニング/機械学習/などの初心者です。複数のモデルと同じモデルの実行を組み合わせて予測を改善するいくつかの方法について読んでいます。

いくつかの論文(理論やギリシャ文字では面白くて素晴らしいが、コードや実際の例は短い)を読んだときの印象は、次のようになるはずだということです。

モデル(knnRFなど)を取得し、0〜1の分類子のリストを取得します。私の質問は、これらの分類子の各リストをどのように組み合わせるかです。最終モデルに入る列の数が同じになるようにトレーニングセットで同じモデルを実行しますか、それとも他のトリックがありますか?

提案/例にRコードが含まれていれば素晴らしいと思います。

注:これは、トレーニングセットに100k行、テストセットに70k行、10列のデータセット用です。

回答:


21

実際には、「3B」テクニックの1つ、つまり、バギング、ブースト、またはブレンドに要約されます。

バギングでは、オブジェクトのさまざまなサブセットで多くの分類子をトレーニングし、回帰と分類の投票のために平均で回答を組み合わせます(より複雑な状況には他のオプションがありますが、スキップします)。通常、個々の分類子は独立していると見なされるため、投票の割合/分散は誤差近似として解釈できます。実際、RFはバギングアンサンブルです。

ブースティングはより広い方法のファミリですが、その主なポイントは、前者の残差に次の分類器を構築することです。したがって、予測は通常、それらを合計することによって結合されます。xのテイラー級数の要素の値を合計してxの関数の値を計算するようなものです。
最も人気のあるバージョンは、(確率論的)勾配ブースティング(数学的基盤を備えています)およびAdaBoost(よく知られている、実際にはGBの特定のケース)です。全体的な観点から見ると、決定木は些細なピボット分類子を後押ししています。

ブレンディングは、分類子をネストするという考え方です。つまり、他の分類子の予測から作成された情報システムで1つの分類子を実行します。そのため、これは非常に可変的なメソッドであり、確かに定義されたアルゴリズムではありません。多くのオブジェクトが必要な場合があります(ほとんどの場合、 "blender"分類器は、恥ずかしいオーバーフィットを避けるために、部分分類器の構築に使用されなかったオブジェクトのセットでトレーニングする必要があります)。
部分分類器の予測は、ブレンダーによって予測される情報システムにそれらを融合することによって明らかに結合されます。


7

「モデルの結合」という表現はあいまいですが、私の推測では、アンサンブル学習方法について質問しているのではないでしょうか。それらについて学ぶための最良のリファレンスは、おそらくRich Caruanaの論文です:

http://www.cs.cornell.edu/~caruana/ctp/ct.papers/caruana.icml04.icdm06long.pdf

このペーパーには実際のコードはありませんが、アルゴリズムは明確に説明されているため、好みの言語でコーディングしても問題はありません。


2

上記の答えの助けを借りて少し見て回った後、私は私の問題が何であるかを実現しました。私は他のモデルの予測を、それらの予測に使用されたのと同じモデルで使用しようとしていました。つまり、kNNモデルを実行したときに5つの変数があった場合、モデルの予測で新しい変数を追加kNNし、ランダムフォレストモデルを実行したときに6つの変数でモデルを作成します。代わりに、モデルの結果をセグメント化し、別のモデルとして実行する必要があることがわかりました。私は様々なモデル(からの予測を作成したいのでknnRFsvd、など)を予測するものとちょうど変数として予測と分類を使用して別の組み合わせ/ブレンド/スタッキングモデルを実行します。

私の問題のいくつかは、予測を他の変数と組み合わせることで、過剰適合または多重共線性があったかもしれないが、私には確信が持てなかったと思う。私が間違っていたことを他の誰かがよりよく評価できるかもしれません。とにかくみんなの助けに感謝します。

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