Mengapa repot dengan masalah ganda saat memasang SVM?


50

Mengingat titik data dan label y 1 , , y n{ - 1 , 1 } , masalah utama hard margin SVM adalahx1,,xnRdy1,,yn{1,1}

s.t.

minimizew,w012wTw
s.t.i:yi(wTxi+w0)1

yang merupakan program kuadrat dengan variabel harus dioptimalkan untuk dan i kendala. Duald+1i

s.t.

maximizeαi=1nαi12i=1nj=1nyiyjαiαjxiTxj
adalah program kuadratik dengan n + 1 variabel yang akan dioptimalkan untuk dan n ketidaksetaraan dan n kendala kesetaraan.
s.t.i:αi0i=1nyiαi=0
n+1nn

Ketika menerapkan SVM hard margin, mengapa saya harus memecahkan masalah ganda alih-alih masalah primer? Masalah utama terlihat lebih 'intuitif' bagi saya, dan saya tidak perlu khawatir dengan kesenjangan dualitas, kondisi Kuhn-Tucker dll.

Masuk akal bagi saya untuk memecahkan masalah ganda jika , tapi saya curiga ada alasan yang lebih baik. Apakah ini masalahnya?dn


26
Jawaban singkatnya adalah kernel. Jawaban panjangnya adalah keeerneeels (-;

Hal terpenting dari masalah ganda adalah memperkenalkan trik kernel, yang bertujuan memetakan data asli ke ruang angkasa dengan dimensi yang lebih tinggi.
BigeyeDestroyer

Jawaban:


40

Berdasarkan catatan kuliah yang dirujuk dalam jawaban @ user765195 (terima kasih!), Alasan yang paling jelas tampaknya adalah:

wαixwTxd

αiαi=0x

wTx+w0=(i=1nαiyixi)Tx+w0=i=1nαiyixi,x+w0

Istilah ini sangat efisien dihitung jika hanya ada beberapa vektor dukungan. Lebih lanjut, karena sekarang kami memiliki produk skalar yang hanya melibatkan vektor data , kami dapat menerapkan trik kernel .


6
Tunggu tunggu. Katakanlah Anda memiliki dua vektor dukungan x1 dan x2. Anda tidak dapat memiliki kurang dari dua, kan? Apakah Anda mengatakan bahwa komputasi <x1, x> dan <x2, x> lebih cepat dari <w, x>?
Leo

1
@ Leo: Perhatikan bahwa saya menggunakan <x1, x>dan wTx. Yang pertama digunakan sebagai simbol untuk evaluasi kernel K (x1, x), yang memproyeksikan x1 dan x ke ruang dimensi yang sangat tinggi dan menghitung secara implisit produk skalar dari nilai yang diproyeksikan. Yang terakhir adalah produk skalar normal, jadi wdan xharus diproyeksikan secara eksplisit, dan kemudian produk skalar dihitung secara eksplisit. Bergantung pada pilihan kernel, perhitungan tunggal yang eksplisit mungkin membutuhkan lebih banyak perhitungan daripada banyak evaluasi kernel.
blubb

1
ααα

2
"Lebih jauh, karena kita sekarang memiliki produk skalar yang hanya melibatkan vektor data, kita dapat menerapkan trik kernel." - Itu juga benar dalam formulasi primal.
Firebug

2
Jika orang ingin lebih detail pada komentar dari @ Firebug ... lihat persamaan 10-12 dari lib.kobe-u.ac.jp/repository/90001050.pdf (yang merupakan versi primer yang tidak dibatasi).
MrDrFenner


3

Inilah salah satu alasan mengapa formulasi ganda menarik dari sudut pandang optimasi numerik. Anda dapat menemukan detailnya di koran berikut :

Hsieh, C.-J., Chang, K.-W., Lin, C.-J., Keerthi, SS, dan Sundararajan, S., "Metode keturunan ganda koordinat untuk skala besar linear SVM", Prosiding Konferensi Internasional ke 25 tentang Pembelajaran Mesin, Helsinki, 2008.

Formulasi rangkap melibatkan satu kendala kesetaraan afin tunggal dan kendala terikat.

1. Kendala kesetaraan afin dapat "dihilangkan" dari formulasi ganda.

Ini dapat dilakukan dengan hanya melihat data Anda di R ^ (d + 1) melalui penyisipan R ^ d di R ^ (d + 1) yang memutuskan untuk menambahkan koordinat "1" tunggal ke setiap titik data, yaitu R ^ d ----> R ^ (d +1): (a1, ..., iklan) | ---> (a1, ..., iklan, 1).

Melakukan ini untuk semua poin dalam set pelatihan menampilkan kembali masalah keterpisahan linear dalam R ^ (d + 1) dan menghilangkan istilah konstan w0 dari classifier Anda, yang pada gilirannya menghilangkan kendala kesetaraan afin dari dual.

2. Pada poin 1, dual dapat dengan mudah dilemparkan sebagai masalah optimisasi kuadratik cembung yang batasannya hanya kendala terikat.

3. Masalah ganda sekarang dapat diselesaikan secara efisien, yaitu melalui algoritma penurunan koordinat ganda yang menghasilkan solusi epsilon-optimal di O (log (1 / epsilon)).

Ini dilakukan dengan mencatat bahwa memperbaiki semua alpha kecuali satu menghasilkan solusi bentuk-tertutup. Anda kemudian dapat menggilir semua huruf satu per satu (mis. Memilih satu secara acak, memperbaiki semua huruf lain, menghitung solusi bentuk tertutup). Seseorang dapat menunjukkan bahwa Anda akan mendapatkan solusi yang hampir optimal "agak cepat" (lihat Teorema 1 dalam makalah yang disebutkan sebelumnya).

Ada banyak alasan lain mengapa masalah ganda menarik dari sudut pandang optimisasi, beberapa di antaranya mengeksploitasi fakta bahwa ia hanya memiliki satu kendala kesetaraan afin (kendala yang tersisa semuanya merupakan kendala terikat) sementara yang lain mengeksploitasi pengamatan bahwa pada solusi dari masalah ganda "seringkali sebagian besar alpha" adalah nol (bukan nol nol yang sesuai dengan vektor dukungan).

Anda bisa mendapatkan gambaran umum yang baik dari pertimbangan optimasi numerik untuk SVM dari presentasi Stephen Wright di Computational Learning Workshop (2009).

PS: Saya baru di sini. Permintaan maaf karena tidak pandai menggunakan notasi matematika di situs web ini.


1
Informasi tentang cara menggunakan pengetikan matematika ada di sini: math.meta.stackexchange.com/questions/5020/…
Monica

-5

Menurut pendapat saya dalam catatan kuliah Andrew ng, telah dengan jelas disebutkan bahwa masalah utama 1 / || w ||, adalah masalah yang tidak cembung. Dual adalah masalah cembung dan selalu mudah untuk menemukan fungsi cembung yang optimal.


1
Primal SVM seperti disebutkan di atas adalah cembung.
Dougal
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.