Diberikan satu set poin dalam ruang dua dimensi, bagaimana bisa satu fungsi keputusan desain untuk SVM?

10

Adakah yang bisa menjelaskan bagaimana merancang fungsi keputusan SVM? Atau arahkan saya ke sumber yang membahas contoh konkret.

EDIT

Untuk contoh di bawah ini, saya dapat melihat bahwa persamaan memisahkan kelas dengan margin maksimum. Tetapi bagaimana cara menyesuaikan bobot dan menulis persamaan untuk hyperplanes dalam bentuk berikut.X2=1.5

H1:w0+w1x1+w2x21forYi=+1H2:w0+w1x1+w2x21forYi=1.

masukkan deskripsi gambar di sini

Saya mencoba untuk mendapatkan teori dasar di ruang 2-D (karena lebih mudah untuk divisualisasikan) sebelum saya berpikir tentang dimensi yang lebih tinggi.

Saya telah menemukan solusi untuk ini. Dapatkah seseorang mengonfirmasi apakah ini benar?

vektor bobot adalah (0, -2) dan W_0 adalah 3

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.
naresh
sumber
Ada ilustrasi dengan R di sini , tetapi saya merasa pertanyaan Anda lebih pada aspek algoritmik. Dalam hal ini, akan membantu jika Anda dapat menambahkan sedikit detail tentang aplikasi yang dimaksud atau sumber daya yang tersedia.
chl
@chl Saya telah memperbarui pertanyaan dengan detail
naresh

Jawaban:

12

Setidaknya ada dua cara untuk memotivasi SVM, tetapi saya akan mengambil rute yang lebih sederhana di sini.

Sekarang, lupakan semua yang Anda ketahui tentang SVM untuk saat ini dan hanya fokus pada masalah yang ada. Anda diberi satu set poin bersama dengan beberapa label ( ) yang berasal dari . Sekarang, kami berusaha menemukan garis dalam 2D ​​sehingga semua titik dengan label jatuh di satu sisi garis dan semua titik dengan label jatuh di sisi lain.y i { 1 , - 1 } 1 - 1D={(x1i,x2i,yi)}yi{1,1}11

Pertama-tama, sadari bahwa adalah garis dalam 2D ​​dan mewakili "satu sisi" dari garis dan mewakili "sisi lain" dari baris.w 0 + w 1 x 1 + w 2 x 2 > 0 w 0 + w 1 x 1 + w 2 x 2 < 0w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0

Dari di atas kita dapat menyimpulkan bahwa kita menginginkan beberapa vektor sedemikian rupa sehingga, untuk semua titik dengan dan untuk semua poin dengan [1].w 0 + w 1 x i 1 + w 2 x i 20 x i y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 < 0 x i y i = - 1[w0,w1,w2]w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1

Mari kita asumsikan bahwa garis seperti itu benar-benar ada maka saya dapat mendefinisikan classifier dengan cara berikut,

min|w0|+|w1|+|w2|subject to:w0+w1x1i+w2x2i0,xi with yi=1w0+w1x1i+w2x2i<0,xi with yi=1

Saya telah menggunakan fungsi tujuan yang sewenang-wenang di atas, kami tidak benar-benar peduli pada saat ini fungsi tujuan mana yang digunakan. Kami hanya menginginkan yang memenuhi kendala kami. Karena kami berasumsi bahwa ada garis sehingga kami dapat memisahkan dua kelas dengan garis itu, kami akan menemukan solusi untuk masalah optimasi di atas.w

Di atas bukan SVM tetapi akan memberi Anda classifier :-). Namun klasifikasi ini mungkin tidak terlalu baik. Tetapi bagaimana Anda mendefinisikan classifier yang baik? Pengklasifikasi yang baik biasanya merupakan pengelompokan yang baik pada set tes. Idealnya, Anda akan pergi ke semua mungkin 's yang memisahkan data training dan melihat mana dari mereka tidak baik pada data uji. Namun, ada tak terbatas , jadi ini sangat tidak ada harapan. Sebagai gantinya, kami akan mempertimbangkan beberapa heuristik untuk mendefinisikan classifier yang baik. Satu heuristik adalah bahwa garis yang memisahkan data akan cukup jauh dari semua titik (yaitu selalu ada kesenjangan atau margin antara titik dan garis). Klasifikasi terbaik di antara ini adalah satu dengan margin maksimum. Inilah yang digunakan dalam SVM.www

Alih-alih bersikeras bahwa untuk semua poin dengan dan untuk semua poin dengan , jika kita bersikeras bahwa untuk semua poin dengan dan untuk semua poin dengan , maka kita sebenarnya bersikeras bahwa poin berada jauh dari garis. Margin geometris yang sesuai dengan persyaratan ini adalah .x i y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 < 0 x i y i = - 1 w 0 + w 1 x i 1 + w 2 x i 21w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1w0+w1x1i+w2x2i1y i = 1 w 0 + w 1 x i 1 + w 2 x i 2- 1 x i y i = - 1 1xiyi=1w0+w1x1i+w2x2i1xiyi=11w2

Jadi, kami mendapatkan masalah pengoptimalan berikut, Bentuk penulisan yang agak ringkas ini adalah, Ini pada dasarnya adalah formulasi dasar SVM. Saya telah melewatkan cukup banyak diskusi untuk singkatnya. Mudah-mudahan, saya masih mendapatkan sebagian besar ide.

max1w2subject to:w0+w1x1i+w2x2i1,xi with yi=1w0+w1x1i+w2x2i1,xi with yi=1
minw2subject to:yi(w0+w1x1i+w2x2i)1,i

Script CVX untuk memecahkan contoh masalah:

A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1];
b = ones(8, 1);
y = [-1; -1; -1; -1; 1; 1; 1; 1];
Y = repmat(y, 1, 3);
cvx_begin
variable w(3)
minimize norm(w)
subject to
(Y.*A)*w >= b
cvx_end

Addendum - Margin Geometris

Di atas kami telah meminta kami mencari sedemikian rupa sehingga atau umumnya . LHS di sini yang Anda lihat disebut margin fungsional, jadi apa yang kami minta di sini adalah margin fungsional menjadi . Sekarang, kami akan mencoba untuk menghitung margin geometris mengingat persyaratan margin fungsional ini.wyi(w0+w1x1+w2x2)1yi(w0+wTx)11

Apa itu margin geometris? Margin geometris adalah jarak terpendek antara titik dalam contoh positif dan titik dalam contoh negatif. Sekarang, titik yang memiliki jarak terpendek seperti yang dipersyaratkan di atas dapat memiliki margin fungsional lebih besar dari sama dengan 1. Namun, mari kita perhatikan kasus ekstrim, ketika mereka paling dekat dengan hyperplane yaitu, margin fungsional untuk titik terpendek persis sama ke 1. Biarkan menjadi titik pada contoh positif menjadi titik sehingga dan menjadi titik pada contoh negatif menjadi titik sedemikian rupa sehingga . Sekarang, jarak antara dan akan menjadi yang terpendek ketikax+wTx++w0=1xwTx+w0=1x+xx+x tegak lurus terhadap hyperplane.

Sekarang, dengan semua informasi di atas kami akan mencoba menemukan yang merupakan margin geometrik. x+x2

wTx++w0=1
wTx+w0=1
wT(x+x)=2
|wT(x+x)|=2
x + - x - 2 = 2
w2x+x2=2
x+x2=2w2

[1] Tidak masalah sisi mana yang Anda pilih untuk dan . Anda hanya harus tetap konsisten dengan apa pun yang Anda pilih.- 111

TenaliRaman
sumber
1
@naresh Yeap, menyelesaikan ini dalam cvx memberi saya solusi yang sama persis yang Anda miliki . w=[0,2,3]
TenaliRaman
1
@entropi terima kasih telah memperbaiki kesalahan ketik. Saya akan menambahkan penjelasan margin geometris.
TenaliRaman
1
@entropi Saya telah memperbarui jawabannya dengan penjelasan margin geometris.
TenaliRaman
1
@entropy adalah hyperplane melewati asal. Untuk menutupi ruang semua persamaan linear, Anda perlu istilah bias. Pikirkan poin yang berada dalam 2D ​​dan izinkan kami mengatakan bahwa Anda mencoba menemukan garis yang memisahkan titik-titik ini. Namun semua poin ini berada di kuadran pertama. Sekarang orang dapat mengatur titik-titik ini sehingga mereka dapat dipisahkan tetapi tidak oleh garis yang melewati titik asal. Namun, garis dengan bias yang tepat dapat melakukannya. wTx
TenaliRaman
1
@entropy Setelah mengatakan hal di atas, Anda mungkin telah menyadari sekarang bahwa jika Anda memutar dan menggeser poin dengan benar, bahkan garis yang melewati titik asal harus dapat memisahkan kelas. Namun, biasanya menemukan rotasi dan pergeseran yang tepat ini tidak mudah, dibandingkan dengan hanya belajar istilah bias.
TenaliRaman