Elements of Statistical Learning , z Hastie i wsp., Posiada kompletny rozdział dotyczący wsparcia klasyfikatorów wektorowych i SVMs (w przypadku, zacznij stronę 418 na 2. edycji). Kolejnym dobrym tutorialem jest Support Vector Machines in R autorstwa Davida Meyera.
xT.β+ β0= 0∥ β∥ = 1β02 / ∥ β∥
Z pomocy on-line ksvm()
w kernlab pakietu R, ale patrz też kernlab - An S4 Pakietu jądro Methods in R , tutaj jest przykład zabawki:
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)
Pamiętaj, że dla jasności nie bierzemy pod uwagę próbek pociągów i testów. Wyniki pokazano poniżej, gdzie cieniowanie kolorów pomaga wizualizować dopasowane wartości decyzji; wartości około 0 znajdują się na granicy decyzji.
Wywołanie attributes(svp)
daje atrybuty, do których można uzyskać dostęp, np
alpha(svp) # support vectors whose indices may be
# found with alphaindex(svp)
b(svp) # (negative) intercept
Aby wyświetlić granicę decyzji z odpowiadającym jej marginesem, spróbujmy wykonać następujące czynności (w przeskalowanej przestrzeni), która jest w dużej mierze zainspirowana tutorialem SVM napisanym jakiś czas temu przez Jean-Philippe Vert :
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)
A oto: