İki boyutlu uzayda bir dizi nokta verildiğinde, SVM için bir tasarım kararı nasıl işlev görebilir?


10

Birisi bana bir SVM karar fonksiyonu tasarlama konusunda neler yapabileceğini açıklayabilir mi? Ya da beni somut bir örneği tartışan kaynağa yönlendirin.

DÜZENLE

Aşağıdaki örnekte, denkleminin sınıfları maksimum marjla ayırdığını görebiliyorum . Fakat aşağıdaki formda hiperplanlar için ağırlıkları nasıl ayarlayabilir ve denklemleri nasıl yazabilirim.X2=1.5

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

resim açıklamasını buraya girin

Daha yüksek boyutları düşünmeden önce temel teoriyi 2 boyutlu alanda (görselleştirmek daha kolay olduğu gibi) doğru yapmaya çalışıyorum.

Bunun için çözüm geliştirdim Birisi bunun doğru olup olmadığını teyit edebilir mi?

ağırlık vektörü (0, -2) ve W_0 3'tür

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.

Burada R ile bir örnek var , ama sorunuzun algoritmik açıdan daha fazla olduğunu hissediyorum. Bu durumda, amaçlanan uygulama veya kullanılabilir kaynak hakkında biraz daha ayrıntı ekleyebilmeniz yardımcı olacaktır.
chl

@chl Soruları ayrıntılarla güncelledim
naresh

Yanıtlar:


12

SVM'leri motive etmenin en az iki yolu vardır, ancak burada daha basit bir rota izleyeceğim.

Şimdi, şu an için SVM hakkında bildiğiniz her şeyi unutun ve sadece eldeki probleme odaklanın. den bazı etiketlerle ( ) birlikte bir dizi verilir . Şimdi, 2B'de bir çizgi bulmaya çalışıyoruz, böylece etiket sahip tüm noktalar çizginin bir tarafına düşer ve etiket sahip tüm noktalar diğer tarafa düşer.y i { 1 , - 1 } 1 - 1D={(x1i,x2i,yi)}yi{1,1}11

Her şeyden önce, 2D'de bir çizgi olduğunu ve , çizginin "bir tarafını" ve , hat.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

Biz yukarıda bazı vektör istiyoruz sonucuna varabiliriz kaynaktan öyle ki, bütün noktalar için ile ve , tüm noktalar için ile [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

Diyelim ki böyle bir çizgi gerçekten var, o zaman bir sınıflandırıcıyı şu şekilde tanımlayabilirim,

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

Yukarıda keyfi bir objektif fonksiyon kullandım, şu anda hangi objektif fonksiyonun kullanıldığı umurumda değil. Sadece kısıtlarımızı karşılayan bir istiyoruz . İki sınıfı bu satırla ayırabilecek şekilde bir satır bulunduğunu varsaydığımızdan, yukarıdaki optimizasyon problemine bir çözüm bulacağız.w

Yukarıdaki SVM değil ama size bir sınıflandırıcı verecektir :-). Ancak bu sınıflandırıcı çok iyi olmayabilir. Fakat iyi bir sınıflandırıcıyı nasıl tanımlarsınız? İyi bir sınıflandırıcı genellikle test setinde iyi sonuç veren sınıflayıcıdır. İdeal olarak, egzersiz verilerinizi ayıran ve hangilerinin test verilerinde iyi sonuç verdiğini görmek için mümkün olan tüm w'leri gözden . Ancak, sonsuz vardır , bu yüzden bu oldukça umutsuzdur. Bunun yerine, iyi bir sınıflandırıcı tanımlamak için bazı buluşsal yöntemler düşüneceğiz. Buluşsal yöntemlerden biri, verileri ayıran çizginin tüm noktalardan yeterince uzakta olacağıdır (yani, noktalar ve çizgi arasında her zaman boşluk veya kenar boşluğu vardır). Bunlar arasında en iyi sınıflandırıcı maksimum marjlı olan sınıflandırıcıdır. SVM'lerde kullanılan budur.www

Bunun yerine ısrar bütün noktalar için ile ve , tüm noktalar için ile , o ısrar tüm noktalar için ile ve tüm noktalar için ile , o zaman aslında noktaların çizgiden uzak olması konusunda ısrar ediyoruz. Bu gereksinime karşılık gelen geometrik kenar boşluğu .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

Bu nedenle, aşağıdaki optimizasyon sorununu elde ediyoruz, Bu, kısa ve öz bir yazı biçimidir, Bu temel olarak temel SVM . Kısalık için oldukça fazla tartışmayı atladım. Umarım, fikrin çoğunu hala çözerim.

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

Örnek problemi çözmek için CVX betiği:

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

Zeyilname - Geometrik Marj

Biz zaten Aradığımız istediniz Üstü böyle veya genellikle . Burada gördüğünüz işlevsel marj denir, bu yüzden burada talep ettiğimiz şey fonksiyonel marjın . Şimdi, bu fonksiyonel marj gereksinimi göz önüne alındığında geometrik marjı hesaplamaya çalışacağız.y i ( w 0 + w 1 x 1 + w 2 x 2 ) 1 y i ( w 0 + w T x ) 1 1wyi(w0+w1x1+w2x2)1yi(w0+wTx)11

Geometrik kenar boşluğu nedir? Geometrik kenar boşluğu, pozitif örneklerdeki noktalar ile negatif örneklerdeki noktalar arasındaki en kısa mesafedir. Şimdi, yukarıda gerektiği gibi en kısa mesafeye sahip olan noktalar 1'den daha büyük fonksiyonel marja sahip olabilir. Ancak, aşırı durumu, hiper düzleme en yakın olduklarında, en kısa noktalar için fonksiyonel marjın tamamen eşit olduğunu düşünelim. 1 olarak Let pozitif örnek ile ilgili bir nokta, bir nokta bu olmak olması ve noktası şekilde olması olumsuz örnek üzerinde noktası bu . Şimdi, arasındaki mesafe ve olacak en kısa zamanx+wTx++w0=1xwTx+w0=1x+xx+x hiper düzlemine diktir.

Şimdi, yukarıdaki tüm bilgilerle birlikte geometrik kenar boşluğu olan bulmaya çalışacağız . 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] ve için hangi tarafı seçeceğiniz önemli değil . Sadece ne seçerseniz seçin, tutarlı olmalısınız.- 111


1
@naresh Yeap, bunu çözmek cvx içinde bana aynı çözümü verdi . w=[0,2,3]
TenaliRaman

1
@entropy teşekkürler yazım hatasını düzelttim. Geometrik kenar boşluğu açıklamasını ekleyeceğim.
TenaliRaman

1
@entropy Cevabı geometrik kenar boşluğu açıklamasıyla güncelledim.
TenaliRaman

1
@entropy , başlangıç ​​noktasından geçen bir köprüdür . Tüm doğrusal denklemlerin uzayını kapsamak için önyargı terimine ihtiyacınız vardır. 2D'de bulunan noktaları düşünün ve bu noktaları ayıran bir çizgi bulmaya çalıştığınızı söyleyelim. Ancak bu noktaların tümü ilk kadrandadır. Şimdi bu noktalar ayrılabilir, ancak başlangıç ​​noktasından geçen herhangi bir çizgi ile düzenlenmeyecek şekilde düzenlenebilir. Bununla birlikte, uygun bir önyargıya sahip bir çizgi bunu yapabilir. wTx
TenaliRaman

1
@entropy Yukarıdakileri söyledikten sonra, noktaları düzgün bir şekilde döndürüp kaydırırsanız, başlangıç ​​noktasından geçen bir hattın bile sınıfları ayırabileceğini fark etmiş olabilirsiniz. Ancak, genellikle bu doğru rotasyonu ve değişimi bulmak, sadece önyargı terimini öğrenmekle karşılaştırıldığında, kolay değildir.
TenaliRaman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.