The Elements of statistik Learning , dari Hastie et al., Memiliki bab lengkap tentang dukungan vektor pengklasifikasi dan SVMs (dalam kasus Anda, mulai halaman 418 pada edisi ke-2). Tutorial bagus lainnya adalah Support Vector Machines dalam R , oleh David Meyer.
Kecuali saya salah mengerti pertanyaan Anda, batas keputusan (atau hyperplane) didefinisikan oleh (dengan , dan istilah intersep), atau seperti kata @ebony kombinasi linear dari vektor dukungan. Marginnya kemudian, mengikuti Hastie et al. notasi.xTβ+ β0= 0∥ β∥ = 1β02 / ∥ β∥
Dari bantuan on-line ksvm()
di dalam paket kernlab R, tetapi lihat juga kernlab - Paket S4 untuk Metode Kernel di R , berikut adalah contoh mainan:
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)
Perhatikan bahwa demi kejelasan, kami tidak mempertimbangkan melatih dan menguji sampel. Hasil ditunjukkan di bawah ini, di mana naungan warna membantu memvisualisasikan nilai keputusan yang dipasang; nilai sekitar 0 berada pada batas keputusan.
Panggilan attributes(svp)
memberi Anda atribut yang dapat Anda akses, misalnya
alpha(svp) # support vectors whose indices may be
# found with alphaindex(svp)
b(svp) # (negative) intercept
Jadi, untuk menampilkan batas keputusan, dengan margin yang sesuai, mari kita coba yang berikut ini (di ruang yang dihitung ulang), yang sebagian besar terinspirasi dari tutorial tentang SVM yang dibuat beberapa waktu lalu oleh 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)
Dan ini dia: