The Elements of Statistical Learning , de Hastie et al., Tiene un capítulo completo sobre clasificadores de vectores de soporte y SVM (en su caso, comience la página 418 en la segunda edición). Otro buen tutorial es Support Vector Machines en R , de David Meyer.
XTβ+ β0 0= 0∥ β∥ = 1β0 02 / ∥ β∥
De la ayuda ksvm()
en línea de en el paquete kernlab R, pero vea también kernlab: un paquete S4 para métodos de kernel en R , aquí hay un ejemplo de juguete:
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)
Tenga en cuenta que, en aras de la claridad, no consideramos muestras de entrenamiento y prueba. Los resultados se muestran a continuación, donde el sombreado de color ayuda a visualizar los valores de decisión ajustados; valores alrededor de 0 están en el límite de decisión.
Llamar attributes(svp)
le proporciona atributos a los que puede acceder, por ejemplo
alpha(svp) # support vectors whose indices may be
# found with alphaindex(svp)
b(svp) # (negative) intercept
Entonces, para mostrar el límite de decisión, con su margen correspondiente, intentemos lo siguiente (en el espacio reescalado), que se inspira en gran medida de un tutorial sobre SVM realizado hace algún tiempo por 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)
Y aquí está: