The Elements of Statistical Learning , de Hastie et al., Contient un chapitre complet sur les classificateurs de vecteurs de support et les SVM (dans votre cas, commencez la page 418 de la 2e édition). Un autre bon tutoriel est Support Vector Machines in R , par David Meyer.
XTβ+ β0= 0∥ β∥ = 1β02 / ∥ β∥
À partir de l'aide en ligne de ksvm()
dans le package kernlab R, mais voir aussi kernlab - Un package S4 pour les méthodes du noyau dans R , voici un exemple de jouet:
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)
Notez que pour plus de clarté, nous ne considérons pas les échantillons de train et de test. Les résultats sont présentés ci-dessous, où l'ombrage des couleurs permet de visualiser les valeurs de décision ajustées; les valeurs autour de 0 sont sur la frontière de décision.
L'appel attributes(svp)
vous donne des attributs auxquels vous pouvez accéder, par exemple
alpha(svp) # support vectors whose indices may be
# found with alphaindex(svp)
b(svp) # (negative) intercept
Donc, pour afficher la frontière de décision, avec sa marge correspondante, essayons ce qui suit (dans l'espace redimensionné), qui est largement inspiré d'un tutoriel sur SVM fait il y a quelque temps par 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)
Et le voici: