Sosyal Ağlarda Makine Öğrenmesi 10 [ SVM Destek Vektör Makinesi]

SVM doğrusal veya doğrusal olmayan sınıflandırma,regresyon, outlier analizi çalışmalarında kullanılabilen güçlü bir makine öğrenmesi modelidir. SVM iki sınıfı bir doğru veya düzlem kullanarak birbirinden ayırmaya çalışıyor. Bu ayırma işleminde sınırdaki elemanlardan faydalanıyor.

SVM ilk olarak 1960’lı yıllarda keşfediliyor fakat 1990’lı yıllarda yeniden yorumlanıyor. Popüler olmasının sebebi diğer makine öğrenmesi algoritmalarına göre güçlü doğrulukta sonuçlar üretmesi.

Nasıl çalışıyor ?

İlk adımda eğitim verilerini doğru sınıflandıran hatları buluyoruz. Ardından bu çizgiler arasından bir seçim yapıyoruz. Veri setindeki iki tarafa en yakın noktalara en uzak mesafede olan çizgiyi seçiyoruz. Bu hattı tanımlayan en yakın noktalara destek vektörü, çizgi etrafındaki bölge ise marj olarak tanımlanıyor.

Bu görselde Maxium Margin ve Support Vector olarak ne olarak görülebiliyor. Okların uçlarındaki iki değer esas alınarak çizgiler çiziliyor. Geride kalan veri setinin kaç elemandan oluştuğu çizgiyi etkilemiyor.
Burada 2 boyutlu bir çalışma var fakat SVM’ler çok boyutlu işlemlerde de kullanılabiliyor.
Yukarıdaki görsel de olayı güzel bir şekilde açıklamakta. Elmaları ve portakalları ayırırken en çok portakala benzeyen elma ve en çok elmaya benzeyen portakal bizim sınır değerimiz oluyor.

Kodumuza geçelim.

Kütüphanelerimizi ve veri setimizi içe aktardık. Verisetimizi eğitim ve test kümesi olarak ikiye böldük. Verimizin %25’ini test için kullanacağız.
Feature Scaling işlemi yaptık ve veri setimizi SVM ile eğittik. Buradaki kernel=’linear’ kısmına yakından bakalım.

Kernel bize varsayılan olarak rbf yani Gauss Kernel’i geliyor. Biz linear yazarak farklı bir seçim yapabiliyoruz. Benzer şekilde poly, sigmoid, precomputed gibi kernel kullanımları mevcut. Linear kernel bunlar içerisinde en basit,sade olanı olarak düşünülebilir. Eğer poly kernel seçseydik polinomun derecesini ayarlamalı, degree değeri de girmeliydik. Linear için böyle bir parametre girmemize gerek yok. Her çalışmada aynı eğitim ve test kümelerine ayrılması için random_state=0 girişini yaptık.

Test sonuçlarımızı tahmin ettik.
Hata matrisimizi oluşturarak eğitim setini görselleştirdik.
Test setimizi görselleştirdik.

Kernel seçimimiz linear olduğundan sonuçlarımız Lojistik Regresyona bir hayli benzedi.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir