Menghitung batas keputusan model SVM linier

19

Mengingat vektor dukungan SVM linier, bagaimana saya bisa menghitung persamaan batas keputusan?

dshin
sumber
w = jumlah lebih dari i (ai ti xi). Anda harus meminimalkan lagrangian untuk menemukan nilai-nilai pengali, ai. saya bertanya-tanya bagaimana Anda mendapat vektor dukungan? proses yang sama juga harus memberi Anda nilai ai.
euphoria83
2
Saya belum bisa berkomentar, tetapi saya pikir dalam jawaban yang diterima seharusnya garis keputusan dan margin tidak menjadi: abline (b / w [2], - w [1] / w [2]) abline ((b + 1) / w [2], - w [1] / w [2], lty = 2) abline ((b-1) / w [2], - w [1] / w [2], lty = 2) karena abline mengambil input sebagai mencegat dan kemiringan masing-masing? wx-b = 0 yang menyiratkan: w1.x1 + w2.x2 = b yang menyiratkan (karena x2 adalah "y") abline (b / w [2], -w [1] / w [2]) Maaf ini adalah posting lama tapi saya pikir saya akan bertanya.
Nepze Tyson
Selamat datang di situs ini, @Nepze Tyson. Ini bukan jawaban untuk pertanyaan OP. Harap hanya menggunakan bidang "Jawaban Anda" untuk memberikan jawaban. Jika Anda memiliki pertanyaan Anda sendiri, klik [ASK QUESTION]di bagian atas halaman & tanyakan di sana, maka kami dapat membantu Anda dengan baik. Karena Anda baru di sini, Anda mungkin ingin membaca halaman tur kami , yang berisi informasi untuk pengguna baru.
gung - Reinstate Monica
@Nepze Terima kasih atas komentar perseptif Anda dan atas waktu dan perhatian yang Anda ambil untuk membuatnya. Saya berharap ini akan mengarah pada jawaban yang lebih baik di sini. Saya juga ingin bergabung dengan gung dalam menyambut Anda ke situs kami.
whuber

Jawaban:

29

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.

teks alternatif

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:

teks alternatif

chl
sumber
4
Cantik, persis apa yang saya cari. Dua baris: w <- colSums (coef (svp) [[1]] * x [tidak terdaftar (alphaindex (svp)),]) b <- b (svp) adalah anugerah. Terima kasih!
dshin
@chi: mungkin menarik untuk melihat jawaban saya untuk "bagaimana menghitung batas keputusan SVM": stats.stackexchange.com/questions/164935/…
4

Ini adalah kombinasi linear dari vektor dukungan tempat koefisien diberikan oleh pengganda Lagrange yang sesuai dengan vektor dukungan ini.

ebony1
sumber