Berechnen der Entscheidungsgrenze eines linearen SVM-Modells


19

Wie kann ich angesichts der Unterstützungsvektoren einer linearen SVM die Gleichung der Entscheidungsgrenze berechnen?


w = Summe über i (ai ti xi). Sie müssen die Lagrange minimieren, um die Werte der Multiplikatoren ai zu finden. Ich frage mich, wie Sie die Support-Vektoren bekommen haben. der gleiche Vorgang sollte auch den Wert von ai angeben.
Euphoria83

2
Ich kann noch keinen Kommentar abgeben, aber ich denke, in der akzeptierten Antwort sollten die Entscheidungslinie und die Ränder nicht lauten: abline (s / w [2], - w [1] / w [2]) abline ((s + 1) / w [2], - w [1] / w [2], lty = 2) abline ((b-1) / w [2], - w [1] / w [2], lty = 2) da abline nimmt Eingabe als Schnittpunkt bzw. Steigung? wx-b = 0 was impliziert: w1.x1 + w2.x2 = b was impliziert (da x2 das "y" ist) abline (b / w [2], -w [1] / w [2]) Sorry this ist ein alter Beitrag, aber ich dachte, ich würde fragen.
Nepze Tyson

Willkommen auf der Site, @Nepze Tyson. Dies ist keine Antwort auf die Frage des OP. Bitte verwenden Sie nur das Feld "Ihre Antwort", um Antworten zu geben. Wenn Sie Ihre eigene Frage haben, klicken Sie [ASK QUESTION]oben auf der Seite auf und stellen Sie sie dort. Dann können wir Ihnen richtig helfen. Da Sie neu hier sind, können Sie unsere Tour-Seite lesen , die Informationen für neue Benutzer enthält.
gung - Reinstate Monica

@Nepze Vielen Dank für Ihren scharfsinnigen Kommentar und für die Zeit und Aufmerksamkeit, die Sie in Anspruch genommen haben, um es zu machen. Ich gehe davon aus, dass dies hier zu einer besseren Antwort führen wird. Ich möchte mich auch gung anschließen, um Sie auf unserer Website begrüßen zu dürfen.
Whuber

Antworten:


29

In den Elementen des statistischen Lernens von Hastie et al. Finden Sie ein vollständiges Kapitel zu Support-Vektorklassifikatoren und SVMs (in Ihrem Fall ab Seite 418 in der 2. Ausgabe). Ein weiteres gutes Tutorial ist Support Vector Machines in R von David Meyer.

xTβ+β0=0β=1β02/β

Von der Online-Hilfe von ksvm()in dem kernlab R - Paket, sondern auch kernlab - Ein S4 - Paket für Kernel - Methoden in R , hier ist ein Spielzeug Beispiel:

set.seed(101)
x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2))
y <- matrix(c(rep(1,60),rep(-1,60)))
svp <- ksvm(x,y,type="C-svc")
plot(svp,data=x)

Beachten Sie, dass wir der Übersichtlichkeit halber keine Zug- und Testmuster berücksichtigen. Die Ergebnisse sind nachstehend aufgeführt, wobei die Farbschattierung die Visualisierung der angepassten Entscheidungswerte erleichtert. Werte um 0 liegen an der Entscheidungsgrenze.

Alt-Text

Durch Aufrufen erhalten attributes(svp)Sie Attribute, auf die Sie zugreifen können, z

alpha(svp)  # support vectors whose indices may be 
            # found with alphaindex(svp)
b(svp)      # (negative) intercept 

Um die Entscheidungsgrenze mit dem entsprechenden Rand anzuzeigen, versuchen wir Folgendes (im neu skalierten Bereich), das weitgehend von einem Tutorial zu SVM inspiriert ist, das vor einiger Zeit von Jean-Philippe Vert erstellt wurde :

plot(scale(x), col=y+2, pch=y+2, xlab="", ylab="")
w <- colSums(coef(svp)[[1]] * x[unlist(alphaindex(svp)),])
b <- b(svp)
abline(b/w[1],-w[2]/w[1])
abline((b+1)/w[1],-w[2]/w[1],lty=2)
abline((b-1)/w[1],-w[2]/w[1],lty=2)

Und hier ist es:

Alt-Text


4
Schön, genau das, wonach ich gesucht habe. Die zwei Zeilen: w <- colSums (coef (svp) [[1]] * x [unlist (alphaindex (svp)),]) b <- b (svp) waren ein Glücksfall. Vielen Dank!
Dshin

@chi: Es kann interessant sein, einen Blick auf meine Antwort auf "Wie berechnet man die Entscheidungsgrenze einer SVM ?

4

Es ist eine lineare Kombination der Unterstützungsvektoren, wobei die Koeffizienten durch die Lagrange-Multiplikatoren angegeben werden, die diesen Unterstützungsvektoren entsprechen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.