Bagaimana cara kerja Mesin Vector Support (SVM) bekerja?


108

Bagaimana cara kerja Mesin Vector Support (SVM) bekerja, dan apa yang membedakannya dari pengklasifikasi linier lainnya, seperti Linear Perceptron , Analisis Diskriminan Linear , atau Regresi Logistik ? *

(* Saya sedang berpikir dalam hal motivasi yang mendasari algoritma, strategi optimasi, kemampuan generalisasi, dan kompleksitas run-time )



Jawaban:


126

Mesin dukungan vektor hanya fokus pada titik-titik yang paling sulit dibedakan, sedangkan pengklasifikasi lain memperhatikan semua titik.

Intuisi di balik pendekatan mesin dukungan vektor adalah bahwa jika classifier bagus dalam perbandingan yang paling menantang (titik-titik dalam B dan A yang paling dekat satu sama lain dalam Gambar 2), maka classifier akan lebih baik pada perbandingan yang mudah ( membandingkan titik dalam B dan A yang jauh dari satu sama lain).

Perseptrons dan pengklasifikasi lainnya:

Perceptrons dibangun dengan mengambil satu titik pada satu waktu dan menyesuaikan garis pemisah sesuai. Segera setelah semua poin dipisahkan, algoritma perceptron berhenti. Tapi itu bisa berhenti di mana saja. Gambar 1 menunjukkan bahwa ada banyak garis pemisah yang berbeda yang memisahkan data. Kriteria berhenti perceptron itu sederhana: "pisahkan poin dan berhenti meningkatkan garis ketika Anda mendapatkan pemisahan 100%". Perceptron tidak secara eksplisit diberitahu untuk menemukan garis pemisah terbaik. Regresi logistik dan model diskriminan linier dibangun serupa dengan perceptron.

Garis pemisah terbaik memaksimalkan jarak antara titik B yang paling dekat dengan A dan titik A yang paling dekat dengan B. Tidak perlu melihat semua titik untuk melakukan ini. Bahkan, memasukkan umpan balik dari titik-titik yang jauh dapat menabrak garis sedikit terlalu jauh, seperti yang terlihat di bawah ini.

masukkan deskripsi gambar di sini

Mendukung Mesin Vektor:

Tidak seperti pengklasifikasi lain, mesin vektor dukungan secara eksplisit diberitahu untuk menemukan garis pemisah terbaik. Bagaimana? Mesin dukungan vektor mencari titik terdekat (Gambar 2), yang disebutnya "vektor dukungan" (nama "mesin vektor dukungan" disebabkan oleh fakta bahwa titik-titik itu seperti vektor dan bahwa garis terbaik "tergantung pada" atau "didukung oleh" titik terdekat).

Setelah menemukan titik terdekat, SVM menarik garis yang menghubungkannya (lihat garis berlabel 'w' pada Gambar 2). Ini menarik garis penghubung ini dengan melakukan pengurangan vektor (titik A - titik B). Mesin dukungan vektor kemudian menyatakan garis pemisah terbaik untuk menjadi garis yang membagi dua - dan tegak lurus ke - garis penghubung.

Mesin dukungan vektor lebih baik karena ketika Anda mendapatkan sampel baru (poin baru), Anda akan telah membuat garis yang membuat B dan A sejauh mungkin dari satu sama lain, sehingga kecil kemungkinannya bahwa satu akan menyebar di seluruh garis ke wilayah lain.

masukkan deskripsi gambar di sini

Saya menganggap diri saya seorang pembelajar visual, dan saya berjuang dengan intuisi di balik mesin vektor dukungan untuk waktu yang lama. Makalah yang disebut Dualitas dan Geometri di SVM Classifier akhirnya membantu saya melihat cahaya; dari sanalah saya mendapatkan gambarnya.


4
+1 dari pelajar visual lain! Untuk pembaca, saya ingin mencatat bahwa batas-batas ini jelas pada gambar di atas didasarkan pada kumpulan data yang telah ditransformasikan. Bukan kumpulan data mentah.
Kingz

Membaca svm selama lebih dari dua tahun, hari ini mengerti bagaimana garis pemisahan diidentifikasi dan beberapa hal lagi. Terima kasih atas jawaban bersihnya.
user123

53

Jawaban Ryan Zotti menjelaskan motivasi di balik pemaksimalan batas keputusan, jawaban carlosdc memberikan beberapa persamaan dan perbedaan sehubungan dengan pengklasifikasi lain. Saya akan memberikan jawaban ini ikhtisar matematis singkat tentang bagaimana SVM dilatih dan digunakan.

Notasi

Berikut ini, skalar dilambangkan dengan huruf miring italic (misalnya, ), vektor dengan huruf tebal lebih rendah (misalnya, ), dan matriks dengan huruf miring italic (misalnya, ). adalah transposisi dari , dan .y,bw,xWwTww=wTw

Membiarkan:

  • x menjadi vektor fitur (yaitu, input SVM). , di mana adalah dimensi dari vektor fitur.xRnn
  • y menjadi kelas (yaitu, output dari SVM). , yaitu tugas klasifikasi adalah biner.y{1,1}
  • w dan menjadi parameter SVM: kita perlu mempelajarinya menggunakan set pelatihan.b
  • (x(i),y(i)) menjadi sampel dalam dataset. Anggaplah kita memiliki sampel di set pelatihan.ithN

Dengan , seseorang dapat mewakili batas keputusan SVM sebagai berikut:n=2

masukkan deskripsi gambar di sini

Kelas ditentukan sebagai berikut:y

y(i)={1 if wTx(i)+b11 if wTx(i)+b1

yang dapat ditulis lebih ringkas sebagai .y(i)(wTx(i)+b)1

Tujuan

SVM bertujuan untuk memenuhi dua persyaratan:

  1. SVM harus memaksimalkan jarak antara dua batas keputusan. Secara matematis, ini berarti kami ingin memaksimalkan jarak antara hyperplane yang ditentukan oleh dan hyperplane yang didefinisikan oleh . Jarak ini sama dengan . Ini berarti kami ingin menyelesaikan . Setara kita ingin .wTx+b=1wTx+b=12wmaxw2wminww2

  2. SVM juga harus mengklasifikasikan dengan benar semua , yang berartix(i)y(i)(wTx(i)+b)1,i{1,,N}

Yang membawa kita ke masalah optimisasi kuadrat berikut:

minw,bw2,s.t.y(i)(wTx(i)+b)1i{1,,N}

Ini adalah SVM hard-margin , karena masalah optimisasi kuadratik ini mengakui solusi jika data terpisah secara linear.

Seseorang dapat mengendurkan kendala dengan memperkenalkan apa yang disebut variabel slack . Perhatikan bahwa setiap sampel himpunan pelatihan memiliki variabel kendur sendiri. Ini memberi kami masalah optimasi kuadrat berikut:ξ(i)

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTx(i)+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Ini adalah SVM soft-margin . adalah hiperparameter yang disebut penalti dari istilah kesalahan . ( Apa pengaruh C dalam SVM dengan kernel linear? Dan rentang pencarian mana untuk menentukan parameter optimal SVM? ).C

Seseorang dapat menambahkan lebih banyak fleksibilitas dengan memperkenalkan fungsi yang memetakan ruang fitur asli ke ruang fitur dimensi yang lebih tinggi. Ini memungkinkan batas keputusan non-linear. Masalah optimasi kuadrat menjadi:ϕ

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTϕ(x(i))+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Optimasi

Masalah optimisasi kuadrat dapat diubah menjadi masalah optimisasi lain bernama masalah ganda Lagrangian (masalah sebelumnya disebut primal ):

maxαminw,bw2+Ci=1Nα(i)(1wTϕ(x(i))+b)),s.t.0α(i)C,i{1,,N}

Masalah optimisasi ini dapat disederhanakan (dengan mengatur beberapa gradien ke ) ke:0

maxαi=1Nα(i)i=1Nj=1N(y(i)α(i)ϕ(x(i))Tϕ(x(j))y(j)α(j)),s.t.0α(i)C,i{1,,N}

w tidak muncul sebagai (seperti yang dinyatakan oleh teorema representer ).w=i=1Nα(i)y(i)ϕ(x(i))

Karenanya kami mempelajari menggunakan dari set pelatihan.α(i)(x(i),y(i))

(FYI: Mengapa repot dengan masalah ganda saat memasang SVM? Jawaban singkat: komputasi lebih cepat + memungkinkan untuk menggunakan trik kernel, meskipun ada beberapa metode yang baik untuk melatih SVM di awal seperti contoh lihat {1})

Membuat prediksi

Setelah dipelajari, seseorang dapat memprediksi kelas sampel baru dengan vektor fitur sebagai berikut:α(i)xtest

ytest=sign(wTϕ(xtest)+b)=sign(i=1Nα(i)y(i)ϕ(x(i))Tϕ(xtest)+b)

Penjumlahan bisa tampak luar biasa, karena itu berarti kita harus menjumlahkan semua sampel pelatihan, tetapi sebagian besar adalah (lihat Mengapa Pengganda lagrange jarang untuk SVM? ) Jadi dalam praktiknya ini bukan masalah. (perhatikan bahwa seseorang dapat membuat kasus khusus di mana semua ) iff adalah vektor dukungan . Ilustrasi di atas memiliki 3 vektor dukungan.i=1Nα(i)0α(i)>0α(i)=0x(i)

Trik kernel

Kita dapat mengamati bahwa masalah optimisasi menggunakan hanya di produk dalam . Fungsi yang memetakan ke produk dalam yang disebut sebuah kernel , alias fungsi kernel, sering dilambangkan dengan .ϕ(x(i))ϕ(x(i))Tϕ(x(j))(x(i),x(j))ϕ(x(i))Tϕ(x(j))k

Orang dapat memilih sehingga produk dalam efisien untuk dihitung. Ini memungkinkan untuk menggunakan ruang fitur yang berpotensi tinggi dengan biaya komputasi yang rendah. Itu disebut trik kernel . Agar fungsi kernel valid , yaitu dapat digunakan dengan trik kernel, ia harus memenuhi dua properti utama . Ada banyak fungsi kernel untuk dipilih . Sebagai catatan tambahan, trik kernel dapat diterapkan ke model pembelajaran mesin lainnya , dalam hal ini mereka disebut sebagai kernel .k

Melangkah lebih jauh

Beberapa QA menarik di SVM:

Tautan lain:


Referensi:


2
Hai Franck, terima kasih banyak atas jawaban Anda. Maukah Anda menjelaskan mengapa vektor orthogonal ke hyperplane yang dihasilkan SVM? Dan bagaimana Anda menghitung jarak antara dua batas keputusan untuk sama denganw2w
tosik

3
Selain jawaban yang bagus ini, saya ingin merekomendasikan video ini yang berjalan melalui matematika di belakang SVM dan terutama mengklarifikasi pertanyaan @tosik berkomentar youtube.com/watch?v=_PwhiWxHK8o
Nikolas Rieble

Jawaban yang sangat bagus Hanya satu komentar untuk bagian ini: iff adalah vektor dukungan . Untuk klasifikasi, penjumlahan secara efektif di atas vektor dukungan (yaitu, ). α(i)=0x(i)α(i)0
989

13

Saya akan fokus pada persamaan dan perbedaannya dari pengklasifikasi lain:

  • Dari perceptron: SVM menggunakan kehilangan engsel dan regularisasi L2, perceptron menggunakan kehilangan perceptron dan dapat menggunakan penghentian awal (atau di antara teknik lainnya) untuk regularisasi, benar-benar tidak ada istilah regularisasi dalam perceptron. Karena tidak memiliki istilah regularisasi, perceptron pasti akan mengalami overtraining, oleh karena itu kemampuan generalisasi dapat menjadi buruk secara sewenang-wenang. Optimasi dilakukan dengan menggunakan penurunan gradien stokastik dan karenanya sangat cepat. Di sisi positif, makalah ini menunjukkan bahwa dengan melakukan penghentian dini dengan fungsi kerugian yang sedikit dimodifikasi, kinerja dapat setara dengan SVM.

  • Dari regresi logistik: regresi logistik menggunakan istilah kerugian logistik dan dapat menggunakan regularisasi L1 atau L2. Anda dapat menganggap regresi logistik sebagai saudara diskriminatif dari generatif-naif Bayes.

  • Dari LDA: LDA juga dapat dilihat sebagai algoritma generatif, ia mengasumsikan bahwa fungsi kepadatan probabilitas (p (x | y = 0) dan p (x | y = 1) terdistribusi secara normal. Ini sangat ideal ketika data berada dalam Bahkan biasanya didistribusikan. memiliki namun, downside bahwa "pelatihan" membutuhkan inversi matriks yang dapat menjadi besar (bila Anda memiliki banyak fitur). Di bawah homocedasticity LDA menjadi QDa yang Bayes optimal untuk data terdistribusi secara normal. Artinya jika asumsi puas Anda benar-benar tidak bisa melakukan lebih baik dari ini.

Pada saat runtime (waktu uji), setelah model telah dilatih, kompleksitas semua metode ini adalah sama, itu hanya produk titik antara hyperplane prosedur pelatihan yang ditemukan dan titik data.


1
Karena Anda tampaknya sangat kompeten dalam SVM, izinkan saya meminta Anda untuk mengklarifikasi keraguan saya: sekali kami menemukan hyperplane pemisah terbaik, untuk apa kami menggunakannya? Kita dapat mendefinisikan SVM sebagai metode yang, pertama, memilih hyperplane terbaik untuk mengklasifikasikan poin data dengan benar, dan, kedua, ini menggunakan hyperplane ini untuk memutuskan titik data baru di dua kelas. Baik? (Saya punya beberapa keraguan pada bagian kedua)
DavideChicco.it

1
@ DavideChicco.it Ya, kita dapat menggunakan fungsi indikator untuk mengklasifikasikan data baru, yang sering kali merupakan tujuan utama pengklasifikasi. (Namun, jangan menerima kata-kata saya untuk semua ini, saya baru mengenal semuanya).
keyser

12

Teknik ini didasarkan pada menggambar garis batas keputusan meninggalkan margin cukup untuk contoh positif dan negatif pertama mungkin:

masukkan deskripsi gambar di sini

Seperti pada ilustrasi di atas, jika kita memilih vektor ortogonal sehingga kita dapat menetapkan kriteria keputusan untuk setiap contoh yang tidak diketahui untuk dikategorikan sebagai positif dari bentuk:w=1u

wuC

sesuai dengan nilai yang akan menempatkan proyeksi di luar garis keputusan di tengah jalan. Perhatikan bahwa .wu=uw

Kondisi yang setara untuk sampel positif adalah:

(1)wu+b0

denganC=b.

Kita perlu dan untuk memiliki aturan keputusan, dan untuk sampai ke sana kita membutuhkan kendala .bw

Batasan pertama yang akan kami terapkan adalah bahwa untuk sampel positif ,, ; dan untuk sampel negatif, . Di batas divisi atau hyperplane ( median ) nilainya akan , sedangkan nilai di talang akan dan :x+,wx++b1wx+b1011

masukkan deskripsi gambar di sini

Vektor adalah vektor bobot , sedangkan adalah bias .wb


Untuk menyatukan dua ketidaksetaraan ini, kita dapat memperkenalkan variabel sehingga untuk contoh positif, dan jika contoh negatif, dan menyimpulkanyiyi=+1yi=1

yi(xiw+b)10.

Jadi kami menetapkan bahwa ini harus lebih besar dari nol, tetapi jika contohnya adalah pada hyperplanes ("talang") yang memaksimalkan margin pemisahan antara hyperplane keputusan dan ujung vektor dukungan, dalam hal ini garis), kemudian:

(2)yi(xiw+b)1=0

Perhatikan bahwa ini setara dengan mengharuskanyi(xiw+b)=1.

masukkan deskripsi gambar di sini


Kendala kedua : jarak keputusan hyperplane ke ujung vektor dukungan akan dimaksimalkan. Dengan kata lain margin pemisahan ("jalan") akan dimaksimalkan:

masukkan deskripsi gambar di sini

Dengan asumsi vektor satuan tegak lurus terhadap batas keputusan, , produk titik dengan perbedaan antara dua contoh "berbatasan" plus dan minus adalah lebar "jalan" :w

width=(x+x)ww

Pada persamaan di atas dan berada di selokan (pada hyperplanes memaksimalkan pemisahan). Karenanya, untuk contoh positif: , atau ; dan untuk contoh negatif: . Jadi, merumuskan kembali lebar jalan:x+x (xiw+b)1=0x+w=1bxw=1b

width=(x+x)ww=x+wxww=1b(1b)w(3)=2w

Jadi sekarang kita hanya perlu memaksimalkan lebar jalan - yaitu maksimalkan perkecil , atau perkecil:2w,w

(4)12w2

yang secara matematis nyaman.


Jadi kami ingin:

  1. Minimalkan dengan batasan:x2

  2. yi(wxi+b)1=0


Karena kami ingin meminimalkan ekspresi ini berdasarkan beberapa kendala, kami memerlukan pengali Lagrange (kembali ke persamaan 2 dan 4):

(5)L=12w2λi[yi(xiw+b)1]

Membedakan,

Lw=wλiyixi=0
.

Karena itu,

(6)w=λiyixi

Dan membedakan sehubungan denganb:

Lb=λiyi=0,

yang berarti bahwa kami memiliki produk penjumlahan nol dan label:

(7)λiyi=0

Pasang persamaan Persamaan (6) kembali ke Persamaan (5),

L=12(λiyixi)(λjyjxj)(λiyixi)(λjyjxj)λiyib+λi

Istilah kedua dari belakang adalah nol sesuai persamaan Persamaan (7).

Karena itu,

(8)L=λi12ijλiλjyiyjxixj

Persamaan (8) menjadi Lagrangian terakhir.

Oleh karena itu, optimasi tergantung pada produk titik dari pasangan contoh.

Kembali ke "aturan keputusan" pada Persamaan (1) di atas, dan menggunakan Persamaan (6):

(9)λiyixiu+b0

akan menjadi aturan keputusan akhir untuk vektor baruu.


Tidak ada yang asli ... Hanya catatan saya sendiri di tingkat entri yang lebih. Pada dasarnya dari video ini dari MIT dengan ilustrasi saya sendiri. Untuk kesalahan, harap beri tahu saya. Untuk jawaban yang berwawasan luas, dan perincian lebih lanjut, pergi ke tingkat ahli (jabatan Franck dan lainnya)
Antoni Parellada

Dan bagaimana cara menghitung b ?
mike

1
@mike dengan menjadi himpunan indeks vektor dukunganAnda dapat menemukannya di sini . b=ysmSαmymxmxsS(αi>0).
Antoni Parellada

@AntoniParellada jawaban luar biasa Antoni terima kasih banyak - tetapi bukankah Anda melewatkan bagian pada masalah Dual dan kondisi KTT?
Xavier Bourret Sicotte

@XavierBourretSicotte Saya tidak akan bisa mengatasinya untuk sementara waktu. Harap pertimbangkan untuk menulis jawaban alternatif yang menyentuh masalah ini, dan jika Anda melakukannya, beri tahu saya agar saya menyadarinya, dan dapat membatalkannya.
Antoni Parellada

3

Beberapa komentar tentang kondisi Dualitas dan KTT

Masalah mendasar

Mengambil dari @ pasca Antoni di antara persamaan dan , ingat bahwa kami asli, atau primal , masalah optimasi dalam bentuk:(4)(5)

minw,bf(w,b)=minw,b 12||w||2s.t.  gi(w,b)=y(i)(wTx(i)+b)+1=0

Metode Lagrange

Metode pengganda Lagrange memungkinkan kami mengubah masalah optimisasi terbatas menjadi salah satu bentuk yang tidak dibatasi:

L(w,b,α)=12||w||2imαi[y(i)(wTx(i)+b)1]

Di mana disebut Lagrangian dan disebut pengganda Lagrangian . L(w,b,α)αi

Masalah optimasi primal kami dengan Lagrangian menjadi sebagai berikut: (perhatikan bahwa penggunaan , bukan yang paling ketat karena kami juga harus menggunakan dan sini ...)minmaxinfsup

minw,b(maxαL(w,b,α))

Masalah ganda

Apa yang dilakukan @Antoni dan Prof. Patrick Winston dalam derivasi mereka adalah mengasumsikan bahwa fungsi optimasi dan kendala memenuhi beberapa kondisi teknis sehingga kita dapat melakukan hal berikut:

minw,b(maxαL(w,b,α))=maxα(minw,bL(w,b,α))

Ini memungkinkan kita untuk mengambil turunan parsial dari sehubungan dengan dan , menyamakan dengan nol dan kemudian menyambungkan hasilnya kembali ke persamaan asli Lagrangian, maka menghasilkan setara masalah optimasi ganda formulirL(w,b,α)wb

maxαminw,bL(w,b,α)maxαimαi12i,jmy(i)y(j)αiαj<x(i)x(j)>s.t. αi0s.t. imαiy(i)=0

Dualitas dan KTT

Tanpa membahas teknis matematika yang berlebihan, kondisi ini merupakan kombinasi dari kondisi Dualitas dan Karush Kuhn Tucker (KTT) dan memungkinkan kami untuk menyelesaikan masalah ganda alih-alih masalah primer , sambil memastikan bahwa solusi optimalnya sama. Dalam kasus kami, kondisinya adalah sebagai berikut:

  • Fungsi tujuan utama dan kendala ketidaksetaraan harus cembung
  • Fungsi kendala kesetaraan harus affine
  • Kendala harus benar-benar layak

Lalu ada yang merupakan solusi untuk masalah primal dan ganda. Selain itu, parameter memenuhi kondisi KTT di bawah ini:w,αw,α

wiL(w,α,β)=0(A)βiL(w,α,β)=0(B)αigi(w)=0(C)gi(w)0(D)αi0(E)

Selain itu, jika beberapa memenuhi solusi KTT maka mereka juga solusi untuk masalah primal dan ganda.w,α

Persamaan atas sangat penting dan disebut kondisi saling melengkapi ganda . Ini menyiratkan bahwa jika maka yang berarti bahwa kendala aktif, yaitu tetap dengan persamaan daripada ketidaksetaraan. Ini adalah penjelasan di balik persamaan dalam derivasi Antoni di mana kendala ketimpangan diubah menjadi kendala kesetaraan.α i > 0 g i ( w ) = 0 g i ( w ) 0 ( 2 )(C)αi>0gi(w)=0gi(w)0(2)

Diagram intuitif tetapi informal

masukkan deskripsi gambar di sini

Sumber


2
Terima kasih banyak. Saya membacanya dengan cepat, dan kembali lagi nanti dengan lebih banyak waktu, tetapi kedengarannya hebat, dan menyentuh poin-poin yang hilang dalam jawaban saya.
Antoni Parellada
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.