Ich habe einen Datensatz wie
+--------+------+-------------------+
| income | year | use |
+--------+------+-------------------+
| 46328 | 1989 | COMMERCIAL EXEMPT |
| 75469 | 1998 | CONDOMINIUM |
| 49250 | 1950 | SINGLE FAMILY |
| 82354 | 2001 | SINGLE FAMILY |
| 88281 | 1985 | SHOP & HOUSE |
+--------+------+-------------------+
Ich habe es in einen Vektorraum im LIBSVM-Format eingebettet
+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
Merkmalsindizes:
- 1 ist "Einkommen"
- 2 ist "Jahr"
- 3 ist "use / COMMERCIAL EXEMPT"
- 4 ist "use / CONDOMINIUM"
- 5 ist "use / SINGLE FAMILY"
- 6 ist "use / SHOP & HOUSE"
Ist es in Ordnung, eine Support Vector Machine (SVM) mit einer Mischung aus kontinuierlichen Daten (Jahr, Einkommen) und kategorialen Daten (Verwendung) wie diesen zu trainieren?
categorical-data
svm
mixed-type-data
Seamus Abshere
quelle
quelle
Antworten:
Ja! Aber vielleicht nicht so, wie Sie es meinen. In meiner Forschung erstelle ich häufig kategoriale Features aus kontinuierlich bewerteten mithilfe eines Algorithmus wie der rekursiven Partitionierung . Normalerweise verwende ich diesen Ansatz bei der SVMLight- Implementierung von Support-Vektor-Maschinen, aber ich habe ihn auch bei LibSVM verwendet. Sie müssen sicherstellen, dass Sie Ihre partitionierten kategorialen Features während des Trainings und der Klassifizierung einer bestimmten Stelle in Ihrem Feature-Vektor zuweisen, da Ihr Modell sonst ziemlich unruhig wird.
Bearbeiten: Das heißt, wenn ich dies getan habe, ordne ich die ersten n Elemente des Vektors den Binärwerten zu, die mit der Ausgabe der rekursiven Partitionierung verbunden sind. Bei der Modellierung binärer Features haben Sie nur einen riesigen Vektor aus Nullen und Einsen, sodass für das Modell alles gleich aussieht, es sei denn, Sie geben ausdrücklich an, wo sich verschiedene Features befinden. Dies ist wahrscheinlich zu spezifisch, da ich mir vorstelle, dass die meisten SVM-Implementierungen dies von sich aus tun, aber wenn Sie Ihre eigenen programmieren möchten, ist dies möglicherweise eine Überlegung wert!
quelle