Support Vector Machine(SVM) Algoritması - Machine Learning
Önceki yazımızda gözetimli öğrenme yöntemlerinden bahsetmiştik. Destek vektör makinesi de, makine öğrenmesi sınıflandırma problemlerinde kullanılan gözetimli öğrenme yöntemlerinden birisidir.
Sınıflandırma için bir düzlemde bulunan iki grup arasında bir sınır çizilerek iki grubu ayırmak mümkündür. Bu sınırın çizileceği yer iki grubun üyelerine de en uzak yer olmalıdır. İşte SVM bu çizginin nasıl çizileceğini belirler.
Sınıflandırma için kullanılan en etkili ve basit yöntemlerdendir. Kolay olması ve aynı algoritmanın küçük bir değiştirme ile farklı problemleri çözebilmesi popüler olmasına neden olmuştur.
SVM’ler parametre almayan sınıflayıcılardır. Eğitim setlerinde girdi ve çıktılar eşlenir. Bu eşler kullanılarak girdi değişkenini sıfırlayacak karar fonksiyonları elde edilir.
SVM İnput Verisi
Linear, doğrusal olarak ayrılabilir. Marjini en yüksek olan doğrunun verileri ayırmak için kullanılmasıdır.
NonLinear, doğrusal olarak ayrılmayabilir. Doğrusal olmayan haritalama ile orjinal çalışma verisi yüksek boyuta dönüştürülür. Verinin taşındığı yeni boyutta optimum ayırıcı düzlemi araştırılır.
SVM’ de amaç , doğruyu nereye çizeceğimiz ve margininen yüksek değerine nerde ulaşabileceğimizdir. İki sınıfı ayıran doğrunun bölgeler arasında kalan alana margin denir.
Çekirdek Fonksiyonları(Kernels)
Veriler her zaman doğrusa bir şekilde ayrılacak duruma sahip olmayabilir. Bu gibi durumda SVM’nin çekirdek numarası adı verilen tekniği kullanılır. Çekirdek fonksiyonları sayesinde;
Ayrılamaz problemleri ayırma
Gösterim uzayında veriyi daha iyi haritalama özellikleri kazandırılmış olur.
Şimdi Python ile bir SVM örneği yazalım.
İlk olarak kütüphaneler aktif edilsin.
Şimdi temel bir veri kümesi yapalım ve verilerimizi eğitip teste ayıralım:
Bir SVM sınıfı yapalım.
Ardından, fit yöntemimizi tanımlıyoruz :
Şimdi, yöntemin özüne geçiyoruz:
N_iters kez döngü yapın.
Seçilen bir indeks ve X değeri için, seçili hedef değerimizin seçtiğimiz örneğimizin iç çarpımı ile çarpılıp çarpılmadığını ve ağırlık eksi sapmanın birden büyük veya ona eşit olup olmadığını kontrol ederek koşulumuzu belirleriz.
Şimdi, basitçe fonksiyonumuzu çağırıyoruz ve modelimizin doğruluğunu test setinde alıyoruz:
Şimdi, C değerini 0,9 olarak değiştirdiğimizde (çok az düzenleme), aşağıdaki grafiği elde ederiz:
Doğruluğumuz 0,82'den 0,7'ye düştü.
Sonraki yazılarda görüşmek üzere…