Destek Vektör Makineleri(Support Vector Machine -SVM)

Herkese merhaba sizlere kullanımı oldukça yaygın olan Destek Vektör Makinelerinden bahsedeceğim. Hazırsanız kemerleri takın!
Giriş
Vapnik tarafından geliştirilen ve kısaltılmışı SVM olan Destek Vektör Makineleri birçok veri bilimci tarafından kullanılan hesaplamanın daha kolay olduğu algoritmadır. Bir diğer avantajı ise hem regresyon hem de sınıflandırma problemi için kullanılıyor olması. Bakıldığında yaygın olarak sınıflandırma problemleri için kullanılır.
Destek Vektör Makinelerinin ilk kullanım alanı optik karakter kullanımıdır. Şu anda nesne tanıma ve veri bilimi alanlarında sıklıkla kullanılmaktadır.
Destek Vektör Makinelerinde problemler verilerin doğrusal olarak ayrılabilmesi ve ayrılamamasına ve çoklu sınıf problemleri başlıkları altında incelenir.
Destek Vektör Makinelerinin Çalışması
Destek Vektör Makinelerinin amacı X boyutlu bir uzayda veri noktalarını belirli düzlemde sınıflandıran belirli noktayı bulmaktır. Amacımız birçok düzlem arasında marjı maksimum olan doğruyu seçerek sınıflandırmayı gerçekleştirmektir.
Destek Vektörlerinin Temel Kavramları
Destek Vektörleri : Düzleme en yakın olan veri noktalarına destek vektörleri denir. Bu veri noktaları yardımıyla ayırma çizgisi tanımlanacaktır.
Margin : Farklı sınıfların en yakın veri noktalarında iki satır arasındaki boşluk olarak tanımlanabilir. Hattan destek vektörlerine dikey mesafe olarak hesaplanabilir. Büyük marj, iyi bir marj olarak kabul edilir ve küçük marj, kötü bir marj olarak kabul edilir.
Alt düzlem :Aşağıdaki diyagramda görebileceğimiz gibi, farklı sınıflara sahip bir dizi nesne arasında bölünmüş bir karar düzlemi veya uzaydır.

Destek Vektör Makinesinin temel amacı, maksimum marjinal hiper düzlem bulmak için veri setlerini sınıflara bölmektir ve aşağıdaki gibi iki adımda yapılabilir .
- Destek Vektör Makinesinin sınıfları en iyi şekilde ayıran hiper düzlem oluştur.
- Sınıfları doğru şekilde ayıran alt düzlemi seçecektir.
Destek Vektör Makinesinin Avantajları
-Birden fazla bağımsız değişkenle çalışabilirler.
-Uyum sorunu diğer yöntemlere göre daha azdır.
-Karmaşık karar sınıflarını modelleyebilmektedir.
-Doğrusal olan ve doğrusal olmayan verilere uyarlanabilir.
Örnek basit bir kod
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# n_samples içeren X veri kümesi oluşturma
# İki sınıf içeren Y
X, Y = make_blobs(n_samples=500, centers=2,
random_state=0, cluster_std=0.40)
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=Y, s=50, cmap='spring');
plt.show()

#-1 ile 3.5 arasında satır boşluğu oluşturma
xfit = np.linspace(-1, 3.5)
#çiziö
plt.scatter(X[:, 0], X[:, 1], c=Y, s=50, cmap='spring')
# farklı kümeler arasında çizgi çizme
for a, b, c in [(1, 0.65, 0.33), (0.5, 1.6, 0.55), (-0.2, 2.9, 0.2)]:
yfit = a * xfit + b
plt.plot(xfit, yfit, '-k')
plt.fill_between(xfit, yfit - c, yfit + c, edgecolor='none',
color='#AAAAAA', alpha=0.4)
plt.xlim(-1, 3.5);
plt.show()

Bir sonraki yazımda görüşmek üzere…
Kaynakça:
veribilimiokulu.com
https://www.geeksforgeeks.org/classifying-data-using-support-vector-machinessvms-in-python/.
https://scikit-learn.org/stable/modules/svm.html.