The Elements of Statistical Learning , di Hastie et al., Ha un capitolo completo sui classificatori di vettori e SVM di supporto (nel tuo caso, inizia a pagina 418 della 2a edizione). Un altro buon tutorial è Support Vector Machines in R , di David Meyer.
A meno che non abbia frainteso la tua domanda, il limite di decisione (o iperpiano) è definito da (con e il termine di intercettazione), o come ha detto @ebony una combinazione lineare dei vettori di supporto. Il margine è quindi, a seguito di Hastie et al. notazioni.‖ β ‖ = 1 β 0 2 / ‖ β ‖XTβ+ β0= 0∥ β∥ = 1β02 / ∥ β∥
Dall'aiutoksvm()
in linea di nel pacchetto kernlab R, ma vedi anche kernlab - Un pacchetto S4 per i metodi del kernel in R , ecco un esempio giocattolo:
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)
Si noti che per motivi di chiarezza, non prendiamo in considerazione la formazione e il test dei campioni. I risultati sono mostrati di seguito, dove l'ombreggiatura dei colori aiuta a visualizzare i valori decisionali adattati; i valori intorno a 0 sono al limite della decisione.
La chiamata attributes(svp)
ti dà gli attributi a cui puoi accedere, ad es
alpha(svp) # support vectors whose indices may be
# found with alphaindex(svp)
b(svp) # (negative) intercept
Quindi, per mostrare il confine decisionale, con il suo margine corrispondente, proviamo quanto segue (nello spazio riscalato), che è in gran parte ispirato a un tutorial su SVM fatto qualche tempo fa da 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)
Ed eccolo qui: