Wie erhält man Entscheidungsgrenzen aus linearer SVM in R?

9

Ich benötige ein Paket, das mir die Gleichung für ein lineares SVM-Modell geben kann. Zur Zeit benutze ich e1071 wie folgt :

library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,]  #Weight vector
b = -model$rho #Offset

Ich bin mir jedoch nicht sicher, wie e1071::svm()positive und negative Klassen ausgewählt werden sollen, daher denke ich, dass dies zu unterschiedlichen Datensätzen führen kann. Kann jemand bestätigen, wie diese Funktion entscheidet, welche Klasse positiv und welche negativ ist?

Gibt es dafür auch ein besseres Paket?

reisner
quelle
1
Ich habe einige Informationen dazu in einem verwandten Thread bereitgestellt: Berechnen der Entscheidungsgrenze eines linearen SVM-Modells .
Chl

Antworten:

1

Für den Datenpunkt berechnet Ihre SVM den Entscheidungswert folgendermaßen:dxd

d <- sum(w * x) + b

Wenn dann Label von ist , sonst ist es . Sie können auch Beschriftungen oder Entscheidungswerte für die Datenmatrix erhalten, indem Sie sagenx + 1 - 1d>0x+11newdata

predict(m, newdata)

oder

predict(m, newdata, decision.values = TRUE)

Seien Sie vorsichtig, wenn Sie SVM aus Paket e1071 verwenden, siehe Problem mit e1071 libsvm? Frage. Einige andere SVM-Pakete für R sind kernlab, klaR und svmpath. Siehe diese Übersicht: Support Vector Machines in R von A. Karatzoglou und D. Meyer.

Löwe
quelle
2
Danke, aber meine Frage ist, wie ich die w- und b-Werte erhalte. Außerdem frage ich zum Entscheidungswert, wie e1071 entscheidet, welches Etikett für die Trainingsdaten positiv und negativ ist, wenn Sie die Faktoren übergeben.
Reisner
1
Ich bin nicht mit e1071 vertraut, aber ich kenne SVM. Ob eine Klasse als positiv oder negativ eingestuft wird, hat keinen Einfluss auf das Ergebnis. Sie können einen beliebigen Datensatz verwenden und die Klassenbeschriftungen austauschen, und Sie sollten immer noch das gleiche Ergebnis bei der Klassifizierung von Testpunkten erhalten (für dieselben Parameter). Das Positive und das Negative werden verwendet, um zu bestimmen, ob die Instanz auf die rechte Seite der Entscheidungsgrenze fällt.
Karenu