Klasifikasi SVM non-linear dengan kernel RBF

8

Saya menerapkan classifier SVM non-linear dengan RBF kernel. Saya diberitahu bahwa satu-satunya perbedaan dari SVM normal adalah bahwa saya harus mengganti produk dot dengan fungsi kernel: Saya tahu bagaimana SVM linear normal bekerja, yaitu, setelah menyelesaikan masalah optimasi kuadratik (tugas ganda), saya menghitung hyperplane pembagian optimal seperti dan offset dari hyperplane , di mana adalah daftar vektor pelatihan saya, adalah label masing-masing ( ),

K(xi,xj)=exp(||xixj||22σ2)
w=iSVhiyixi
b=1|SV|iSV(yij=1N(hjyjxjTxi))
xyyi{1,1}h adalah koefisien Lagrangian dan adalah sekumpulan vektor dukungan. Setelah itu, saya bisa menggunakan dan sendirian untuk dengan mudah mengklasifikasikan: .SVwbcx=sign(wTx+b)

Namun, saya tidak berpikir saya bisa melakukan hal itu dengan kernel RBF. Saya menemukan beberapa bahan yang menunjukkan bahwa . Itu akan membuatnya mudah. Namun demikian, saya tidak berpikir dekomposisi seperti itu ada untuk kernel ini dan tidak disebutkan di mana pun. Apakah situasinya sehingga semua vektor dukungan diperlukan untuk klasifikasi? Jika demikian, bagaimana cara saya mengklasifikasikan dalam hal itu?K(x,y)=ϕ(x)ϕ(y)

Jan Hadáček
sumber
Bukan jawaban yang lengkap tapi saya punya slide ini di uni: patterns.enm.bris.ac.uk/files/lecture10-2010.pdf
tristan

Jawaban:

19

Biarkan mewakili ruang input Anda, yaitu ruang tempat data Anda berada. Pertimbangkan fungsi sehingga mengambil titik dari ruang input Anda dan memetakannya ke titik di . Sekarang, katakanlah kami telah memetakan semua titik data Anda dari ke ruang baru ini . Sekarang, jika Anda mencoba menyelesaikan linear svm normal di ruang baru ini alih-alih , Anda akan melihat bahwa semua kerja sebelumnya hanya terlihat sama, kecuali bahwa semua titik direpresentasikan sebagaiXΦ:XFXFXFFXxiΦ(xi)dan alih-alih menggunakan (produk titik) yang merupakan produk dalam alami untuk ruang Euclidean, kami menggantinya dengan yang mewakili produk dalam alami di ruang baru . Jadi, pada akhirnya, akan terlihat seperti,xTyΦ(x),Φ(y)Fw

w=iSVhiyiΦ(xi)

dan karenanya,

w,Φ(x)=iSVhiyiΦ(xi),Φ(x)

Demikian pula,

b=1|SV|iSV(yij=1N(hjyjΦ(xj),Φ(xi)))

dan aturan klasifikasi Anda terlihat seperti: .cx=sign(w,Φ(x)+b)

Sejauh ini bagus, tidak ada yang baru, karena kami hanya menerapkan SVM linear normal ke ruang yang berbeda. Namun, bagian ajaibnya adalah ini -

Katakanlah ada fungsi sedemikian rupa sehingga . Kemudian, kita dapat mengganti semua produk titik di atas dengan . Seperti disebut fungsi kernel.k:X×XRk(xi,xj)=Φ(xi),Φ(xj)k(xi,xj)k

Karenanya, dan terlihat seperti, wb

w,Φ(x)=iSVhiyik(xi,x)
b=1|SV|iSV(yij=1N(hjyjk(xj,xi)))

Untuk fungsi kernel manakah substitusi di atas valid? Nah, itu pertanyaan yang sedikit terlibat dan Anda mungkin ingin mengambil bahan bacaan yang tepat untuk memahami implikasinya. Namun, saya hanya akan menambahkan bahwa hal di atas berlaku untuk RBF Kernel.

Untuk menjawab pertanyaan Anda, "Apakah situasinya sehingga semua vektor dukungan diperlukan untuk klasifikasi?" Iya. Seperti yang Anda perhatikan di atas, kami menghitung produk dalam dengan alih-alih menghitung secara eksplisit. Ini mengharuskan kami untuk mempertahankan semua vektor dukungan untuk klasifikasi.wxw

Catatan: The di bagian akhir di sini adalah solusi untuk dua kali dari SVM di ruang dan bukan . Apakah itu berarti bahwa kita perlu tahu berfungsi secara eksplisit? Untungnya, tidak. Jika Anda melihat tujuan ganda, itu hanya terdiri dari produk dalam dan karena kami memiliki yang memungkinkan kami untuk menghitung produk dalam secara langsung, kami tidak perlu mengetahui secara eksplisit. Sasaran ganda hanya terlihat seperti, hiFXΦkΦ

maxihii,jyiyjhihjk(xi,xj)subject to : iyihi=0,hi0
TenaliRaman
sumber
@ JanHadáček Sama-sama! Senang mengetahui bahwa jawaban saya dapat dimengerti, saya khawatir itu mungkin terlalu kental :-)
TenaliRaman
Penjelasan yang sangat bagus
Pria London