サポート ベクター マシンなど、スペースを半分に分割するアルゴリズムを一般化して、整数などのセットからのラベルを使用してデータにラベルを付けるにはどうすればよいでしょうか?
たとえば、サポート ベクター マシンは、超平面を構築することによって動作し、超平面の「上」にあるものは 1 つのラベルを取り、その下にあるものは別のラベルを取ります。
これをどのように一般化して、ラベルがたとえば整数やその他の任意の大きなセットになるようにするのでしょうか?
サポート ベクター マシンなど、スペースを半分に分割するアルゴリズムを一般化して、整数などのセットからのラベルを使用してデータにラベルを付けるにはどうすればよいでしょうか?
たとえば、サポート ベクター マシンは、超平面を構築することによって動作し、超平面の「上」にあるものは 1 つのラベルを取り、その下にあるものは別のラベルを取ります。
これをどのように一般化して、ラベルがたとえば整数やその他の任意の大きなセットになるようにするのでしょうか?
1 つのオプションは、「one-vs-all」アプローチです。このアプローチでは、分割したいセットごとに 1 つの分類子を作成し、最も確率の高いセットを選択します。
たとえば、 からのラベルでオブジェクトを分類するとします{1,2,3}
。次に、3 つのバイナリ分類子を作成できます。
これらの分類器を新しいデータ X に対して実行すると、以下が返される可能性があります。
これらの出力に基づいて、X をクラス 3 からのものである可能性が最も高いものとして分類できます (確率の合計は 1 になりません。これは、分類器が互いを認識していないためです)。
出力ラベルが順序付けられている場合 (任意の順序付けではなく、何らかの意味のある順序で)。たとえば、金融では、株式を {BUY, SELL, HOLD} に分類したいとします。これらに対して正当に回帰を実行することはできませんが(データは比率データではなく序数です) 、-1、0、および 1 の値を SELL、HOLD、および BUY に割り当てて、比率データがあるふりをすることができます。理論的に正当化されていなくても、これにより良い結果が得られる場合があります。
もう 1 つのアプローチは Cramer-Singer 法です (「マルチクラス カーネルベースのベクトル マシンのアルゴリズム実装について」)。Svmlight はhttp://svmlight.joachims.org/svm_multiclass.htmlに実装しています。
無限集合 (整数の集合など) への分類は、順序回帰と呼ばれます。通常、これは連続値の範囲をセットの要素にマッピングすることによって行われます。( http://mlg.eng.cam.ac.uk/zoubin/papers/chu05a.pdf、図 1a を参照)