SVM(サポートベクターマシン)のカテゴリデータと連続データを混在させることはできますか?


14

私のようなデータセットがあります

+--------+------+-------------------+
| income | year |        use        |
+--------+------+-------------------+
|  46328 | 1989 | COMMERCIAL EXEMPT |
|  75469 | 1998 | CONDOMINIUM       |
|  49250 | 1950 | SINGLE FAMILY     |
|  82354 | 2001 | SINGLE FAMILY     |
|  88281 | 1985 | SHOP & HOUSE      |
+--------+------+-------------------+

LIBSVM形式のベクトル空間に埋め込みます

+1 1:46328 2:1989 3:1
-1 1:75469 2:1998 4:1
+1 1:49250 2:1950 5:1
-1 1:82354 2:2001 5:1
+1 1:88281 2:1985 6:1

機能インデックス:

  • 1は「収入」です
  • 2は「年」です
  • 3は「use / COMMERCIAL EXEMPT」です
  • 4は「使用/コンドミニアム」です
  • 5は「use / SINGLE FAMILY」です
  • 6は「use / SHOP&HOUSE」です

このような連続(年、収入)データとカテゴリ(使用)データを組み合わせてサポートベクターマシン(SVM)をトレーニングしても構いませんか?


3
少なくとも1回は「SVM」と入力する必要があります。
ピーターフロム-モニカの復職

1
そのデータをスケーリングしてください!
パトリックカルドン

回答:


7

はい!しかし、おそらくあなたの言う意味ではありません。私の研究では、再帰的パーティショニングのようアルゴリズムを使用して、継続的に評価されるものからカテゴリフィーチャを頻繁に作成します。通常、このアプローチはサポートベクターマシンのSVMLight実装で使用しますが、LibSVMでも使用しました。トレーニングと分類中に、パーティション化されたカテゴリフィーチャをフィーチャベクトル内の特定の場所に必ず割り当てる必要があります。そうしないと、モデルが不安定になります。

編集:つまり、これを行ったときに、ベクトルの最初のn個の要素を、再帰分割の出力に関連付けられたバイナリ値に割り当てます。バイナリフィーチャモデリングでは、0と1の巨大なベクトルがあるだけなので、異なるフィーチャの場所を明示的に指定しない限り、すべてはモデルと同じように見えます。ほとんどのSVM実装が独自にこれを行うと思うので、これはおそらく過度に具体的ですが、独自にプログラミングしたい場合は、考えてみてください!


1
カイル、ありがとうございます。「パーティション化されたカテゴリ機能を特定の場所に割り当てる」とはどういう意味ですか?
シーマスAbshere

@SeamusAbshere問題ありません!これに対処するために回答を編集しました!
カイル。

libsvmはあなたが話していることを自動的に行うと聞いたように感じます-何か考えはありますか?
シーマスアブシャー

@SeamusAbshereあなたが正しいと思うが、確かにわからない。今考えてみると、どのように他の方法で機能するのかわかりません。
カイル。

@Kyleの答えに惹かれて、カテゴリカル(Murmur32ハッシュを使用)および連続データの両方で、この変換(埋め込み)を自動的に行うRubyライブラリ(VectorEmbed)を作成しました。libsvm形式のファイルを出力します。
シーマスアブシーア13年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.