Umgang mit einer SVM mit kategorialen Attributen

18

Ich habe einen Raum von 35 Dimensionen (Attribute). Mein analytisches Problem ist eine einfache Klassifizierung.

Von 35 Dimensionen sind mehr als 25 kategorial und jedes Attribut akzeptiert mehr als 50 Werttypen.

In diesem Szenario funktioniert die Einführung einer Dummy-Variablen auch für mich nicht.

Wie kann ich eine SVM auf einem Space ausführen, der viele kategoriale Attribute hat?

Hima
quelle

Antworten:

22
  1. Wenn Sie sicher sind, dass das kategoriale Attribut tatsächlich eine Ordnungszahl ist, behandeln Sie es einfach als numerisches Attribut.
  2. Wenn nicht, verwenden Sie einen Codierungstrick, um daraus ein numerisches Attribut zu machen. Nach dem Vorschlag des Autors von libsvm kann man einfach 1-of-K-Codierung verwenden. Angenommen, ein eindimensionales Kategorieattribut nimmt den Wert von . es einfach in dreidimensionale Zahlen, so dass , , . Natürlich wird dies Ihrem Problem erheblich zusätzliche Dimensionen verleihen, aber ich denke, dass dies kein ernstes Problem für moderne SVM-Löser ist (egal, welchen linearen Typ oder Kernel-Typ Sie verwenden).{EIN,B,C}EIN=(1,0,0)B=(0,1,0)C=(0,0,1)
pengsun.thu
quelle
+1 Das wollte ich auch sagen! Abgesehen davon möchte ich hinzufügen, dass die rekursive Partitionierung manchmal verwendet wird, um herauszufinden, wo am besten Schnitte bei kontinuierlich bewerteten Features vorgenommen werden können, um sie in Bins zu unterteilen.
Kyle.
Interessant! Die "rekursive Partitionierung" klingt für mich nach einem (binären) Baum. Gibt es einen Unterschied zwischen diesen beiden Ideen? Außerdem ist SVM bereits in der Lage, sich mit fortlaufenden Merkmalen zu befassen. Warum sollen wir sie in Behälter umwandeln (wieder kategoriale Daten)?
pengsun.thu
3
Reicht die Erstellung von k-1-Dummy-Variablen nicht für eine k-Level-Kategorievariable aus? zB A = (1,0,0), B = (0,1,0) hier, überspringen (0,0,1)?
Ausreißer
Anschlussfrage: Ist für die gedummten 0-1-Daten keine zusätzliche Skalierung erforderlich?
AZhao