カテゴリ属性を持つSVMを扱う方法


18

35次元(属性)のスペースがあります。私の分析上の問題は単純な分類です。

35のディメンションのうち、25を超えるものがカテゴリカルであり、各属性は50を超えるタイプの値を取ります。

そのシナリオでは、ダミー変数の導入も機能しません。

カテゴリ属性が多数あるスペースでSVMを実行するにはどうすればよいですか?

回答:


22
  1. カテゴリ属性が実際に順序属性であることが確実な場合は、数値属性として扱います。
  2. そうでない場合は、コーディングトリックを使用して数値属性に変換します。libsvmの作者による提案によると、単純に1-of-Kコーディングを使用できます。たとえば、から値を取る1次元のカテゴリ属性があるとします。、、などの3次元の数値に変換するだけです。もちろん、これはあなたの問題に大幅に追加の次元をもたらしますが、それは現代のSVMソルバーにとって深刻な問題ではないと思います(採用する線形型やカーネル型に関係なく)。{ABC}A=100B=010C=001

+1これも私が言っていたものです!余談ですが、継続的な価値のある機能の最適なカット場所を特定し、それらをビンに分割するために、再帰的なパーティション分割が時々使用されることも追加します。
カイル。

面白い!「再帰的分割」は、(バイナリ)ツリーに聞こえます。これら2つのアイデアの違いは何ですか?その上、SVMはすでに連続的な機能を処理できますが、なぜそれをビン(再び、カテゴリデータ)に変えるのでしょうか?
pengsun.thu

3
kレベルのカテゴリ変数に対してk-1個のダミー変数を作成するだけでは不十分ですか?たとえば、A =(1,0,0)、B =(0,1,0)、ここではスキップ(0,0,1)?
外れ値14年

追加の質問:ダミー0-1データの追加のスケーリングは不要ですか?
アザオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.