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.
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: