Destek Vektor Makineleri (Support Vector Machine-SVM)

İbrahim Halil Kaplan
Machine Learning Turkiye
4 min readJan 13, 2022

SVM, denetimli bir makine öğrenme algoritması (supervised learning) çeşidi olup hem sınıflandırma hem de regresyon (SVR) amacıyla kullanılabilen oldukça basit ve etkili bir algoritmadır.

Sınıflandırma için bir düzlemde bulunan iki grup arasına, bu iki grubun üyelerine en uzak yerden olmak üzere karar sınırı çizilerek grupları ayırma mantığı üzerine kurgulanmıştır ve dağılım hakkında herhangi bir bilgi veya varsayım olmayan, nonparametrik sınıflayıcılardır. Parametrik ve nonparametrik verilere uygulanabilmektedir. Parametrik veriler belirli bir dağılım çeşidine sahip olduğu ve verilerin arasında böyle bir ilişkinin olduğu varsayılan verilerdir. Nonparametrik veriler ise herhangi bir dağılıma, ilişkiye dayalı olmayan verilerdir.

Neden destek vektör makineleri ismi kullanılmaktadır?

Karar sınırı oluşturulurken sınırın kenarlarında iki gruba ait veri noktaları seçilir. Bu veri noktaları destek vektörü vazifesi görerek kenar hatlarının belirlenmesini sağlarlar. Destek vektör makineleri ismi buradan gelir.

SVM’de karar sınırı, farklı sınıflardan en yakın veri noktalarına olan mesafeyi maksimize edilerek oluşturulur. Yani veri noktaları arasındaki mesafe, SVM’nin seçtiği karar sınırını etkiler. Başka bir deyişle, bir SVM’yi ölçeklenen ve ölçeklenmeyen veriler üzerinden eğitmek, farklı modellerin üretilmesine yol açar. Bu yüzden veri çeşidine göre ‘scaler’ kullanmak gerekebilir.

Sınıflandırma problemlerinde genellikle ‘Binary Cross-Entropy Loss’ denilen çapraz entropi kuralı kullanılır. Yani hangi sınıfa ait olduğu hesaplanmaya çalışılan verinin gerçek ve tahmin edilen olasılık dağılımındaki ortalama farka çapraz entropi denilir. Bu fark yani hata ne kadar az olursa tahmin o kadar başarılı olur. Bu hata fonksiyonu tahminlerini {0,1} aralığında yapmaktadır. İşte burada SVM çapraz entropi’ye alternatif ‘hinge loss’ denilen farklı bir hata fonksiyonu ile daha doğru tahminler yapabilmektedir. ‘Hinge loss’ hata fonksiyonu tahminlerini {-1,+1} arasında yapmaktadır. Bu şekilde gerçek ve tahmin edilen sınıf değerleri arasında işarette bir fark olduğunda daha fazla hata atayarak verileri doğru işarete sahip olmasını sağlamaya çalışır. Bu şekilde oluşturulan model çapraz entropi’ye göre daha iyi bir performans gösterebilmektedir.

SVM veri setinin lineer olup olmamasına göre ikiye ayrılmaktadır.

Doğrusal (Lineer) SVM:

Doğrusal SVM, doğrusal olarak ayrılabilen veri kümeleri için kullanılır. Aşağıdaki görselden de anlaşılacağı üzere düz bir çizgi iki grubu etkili bir şekilde ayırıp sınıflandırma yapabiliyor.

Şekil-1

Görüldüğü üzere bu iki grubu ayıran karar doğrusunun mümkün olan en iyi şekilde oluşturulması çok önemlidir. Genellikle ‘hinge loss’ kayıp fonksiyonu kullanıldığından sınıflar (-1,+1) şeklinde etiketlendirilirler.

Peki burada düşünmemiz gereken önemli bir husus var:

SVM’nin başka bir sınıflandırma çeşidi olan Lojistik Regresyon’dan ne farkı var?

En önemli nokta burası. Lojistik Regresyon iki grup arasındaki ayrım düzlemini belirlerken iki gruba ait tüm veri noktaları hesaba dahil olur.
SVM de ise sadece destek vektörlerin konumu hesaplanır. Bu yüzden SVM’deki çekilen hiperdüzlem lojistik regresyona göre bariz farklılıklar gösterebilir. Özellikle de veri kümesinde aykırı değerler olması durumunda SVM aykırı değerlerden etkilenmediği için Lojistik Regresyona göre daha başarılı bir performans sergileyebilir.

Doğrusal Olmayan (Nonlinear) SVM:

Doğrusal Olmayan SVM ise düz bir çizgi ile ayrılamayan veri kümeleri için kullanılmaktadır. Doğrusal bir hiperdüzlem kullanılamadığı için “kernel trick” denilen yapılar kullanılır. Bu sayede yüksek sınıflandırma oranı elde edilir. Kernel trick çeşitleri ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’ ve ‘precomputed’ olmak üzere beş çeşittir ancak en çok kullanılanlar ‘poly’ ile ‘rbf’ tir.

- Poly : Polinomdan gelmektedir ve eğitim datasının polinomları üzerindeki benzerliğini temsil ederek, doğrusal olmayan modellerin öğrenilmesini sağlar.

- RBF (Radial Basis Function) : RBF, Gauss dağılımına benzerliği nedeniyle en yaygın kullanılan kernel’lerden biridir. Veri kümesindeki iki noktanın konumlarına göre birbirlerine benzerliklerini hesaplar.

Yine daha iyi anlamak için aşağıdaki görseli inceleyelim.

Şekil-2

Görselde RBF kernel kullanılmış bir sınıflandırma görüyoruz. Kırmızı işaretli veri noktaları iki sınıfa ait destek vektörleridir. Bu şekilde doğrusal olmayan veri kümesini yüksek doğruluk oranıyla sınıflandırmış oluyoruz.

Burada bazı önemli hiperparametrelerden bahsetmek istiyorum.

‘C’ Hiperparametresi :

Şekil-1’i incelersek orada Margin genişliği olarak ifade edilen alanın her iki gruba ait destek vektörlerinin arasında kalan alan olduğunu görebiliriz. Bu alan ne kadar dar olursa o kadar keskin bir sınıflandırma yapmamız mümkün olur. Buna ‘hard margin’ adı verilir. Ancak bir yandan da veri setinin dağılımına göre ya da doğrusal olup olmamasına göre bu dar margin sınıflandırma hatası yapmamıza da neden olabilir. Burada bu margin genişliğini artırarak ‘soft margin’ adı verilen daha geniş bir margin uygulayabiliriz. Bu şekilde bazı eğitim verilerimiz destek vektörü olmamasına rağmen margin içerisinde kalabilir ama bu sınıflandırma esnasında daha doğru sonuçlar verecektir. İşte bu margin genişliğini C parametresi ile kontrol edebiliriz. C ne kadar büyük olursa margin o kadar dar, C ne kadar küçük olursa margin o kadar büyük olacaktır.

Doğrusal olmayan veri yapılarında minimum hata ile sınıflandırma yaparken ‘C’ parametresinin, ‘soft margin’ olacak kadar küçük, overfit olmayacak kadar da büyük olmasına dikkat etmeli, optimum dengeyi sağlamalıyız.
’C’ parametresinin etkisini görmek için aşağıdaki görseli inceleyelim.

Şekil-3

‘gamma’ Hiperparametresi:

‘gamma’ parametresine daha çok doğrusal olmayan veri yapılarını modellendirmede ihtiyacımız olacaktır. Farklı kernel çeşitleriyle işlem yaparken sınıflandırmada kullanılan normal dağılımın genişliğini ‘gamma’ parametresi ile kontrol edebiliriz. Aşağıdaki görseli inceleyecek olursak: ‘gamma = 1’ ile ‘gamma = 10’ arasında farkı görürüz. ‘gamma’ ne kadar küçükse dağılım o kadar geniş, ne kadar büyükse dağılım o kadar dar olur. Yani ‘gamma’ değeri maksimum sınıflandırma kalitesi olacak kadar büyük, overfit olmayacak kadar da küçük olmalıdır. Overfit durumunda düşürmeli, underfit durumunda artırmalıyız.

Şekil-4

SVM hiperparametreleri elbette bunlarla sınırlı değil ancak modelin kalitesine en fazla etkiyi bu iki parametrenin yaptığını söyleyebiliriz.

SVM, yazı metinleri gibi doğrusal olmayan veri kümelerinde başarılı performanslar sergileyebilmektedir.

Genel hatlarıyla SVM hakkında aktaracaklarım bu kadar. Umarım faydalı olmuştur. Bu yazıda kullanılan kod bloğuna buradan ulaşabilirsiniz. Teşekkürler.

Kaynak:

https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC

--

--