Yazan : Şadi Evren ŞEKER
Sınıflandırma (Classification) konusunda kullanılan oldukça etkili ve basit yöntemlerden 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 ise iki grubun da üyelerine en uzak olan yer olmalıdır. İşte SVM bu sınırın nasıl çizileceğini belirler.
Bu işlemin yapılması için iki gruba da yakın ve birbirine paralel iki sınır çizgisi çizilir ve bu sınır çizgileri birbirine yaklaştırılarak ortak sınır çizgisi üretilir. Örneğin aşağıdaki şekildeki iki grubu ele alalım:
Bu şekilde iki grup iki boyutlu bir düzlem üzerinde gösterilmiştir. Bu düzlemi ve boyutları birer özellik olarak düşünmek mümkündür. Yani basit anlamda sisteme giren her girdinin (input) bir özellik çıkarımı (feature extraction) yapılmış ve sonuçta bu iki boyutlu düzlemde her girdiyi gösteren farklı bir nokta elde edilmiştir. Bu noktaların sınıflandırılması demek, çıkarılmış olan özelliklere göre girdilerin sınıflanması demektir.
Yukarıda her iki sınıf arasında oluşan aralığa tolerans (offset) demek mümkündür. Bu düzlemdeki her bir noktanın tanımı aşağıdaki gösterim ile yapılabilir:
Yukarıdaki gösterimi şu şekilde okumak mümkündür. Her x,c ikilisi için X vektör uzayımızdaki bir nokta ve c ise bu noktanın -1 veya +1 olduğunu gösteren değeridir. Bu noktalar kümesi i= 1 ‘den n’e kadar gitmektedir.
Yani bu gösterim bir önceki şekilde olan noktaları ifade etmektedir.
Bu gösterimin bir aşırı düzlem (hyperplane) üzerinde olduğunu düşünürsek. Bu gösterimdeki her noktanın :
wx – b = 0
denklemi ile ifade edilmesi mümkündür. Buradaki w aşırıdüzleme dik olan normal vektörü ve x noktanın değişen parametresi ve b ise kayma oranıdır. Bu denklemi kalsik ax+b doğru denklemine benzetmek mümkündür.
Yine yukarıdaki denkleme göre b/||w|| değeri bize iki grup arasındaki mesafe farkını verir. Bu mesafe farkına daha önce tolerans (offset) ismini de vermiştik. Bu mesafe farkı denklemine göre mesafeyi en yüksek değere çıkarmak için yukarıdaki ilk şekilde gösterilen 0, -1 ve +1 değerlerine sahip 3 doğruyu veren denklemde 2/||w|| formülü kullanılmıştır. Yani doğrular arası mesafe 2 birim olarak belirlenmiştir.
Bu denkleme göre elde edilen iki doğru denklemi:
wx – b = -1
wx + b = 1
olarak bulunmuştur. Aslında bu denklemler doğruların kaydırılması sonucunda elde edilen en yüksek değerlerin bulunması işleminin bir sonucudur. Aynı zamanda bu denklemlerle problemin doğrusal ayrılabilir (linearly seperable) olduğu da kabul edilmiş olur.
Tahmin edileceği üzere iki grup arasındaki aşırıdüzlemin (hyperplane) tek yönlü olması mümkün değildir. Aşağıda bu duruma bir örnek gösterilmiştir:
Yukarıdaki şekilde iki farklı hiperdüzlem (aşırı düzlem) olasılığı bulunmasına karşılık SVM yönteminde bu olasılıklardan en büyük toleransa (offset) sahip olanı alınır.
Merhaba verdiğiniz bilgiler çok güzel. Alanyazınında çok az bilgi var. Bir araştırma yapıyorum ve yabancı alan yazınında bu teknikle sınıflandırma yapılmış. Metinlerin okunabilirliği ile ilgili bir çalışma yapacağım. Bir programı var mı? Verileri nasıl sınıfandırabilirim? Yardımcı olursanız sevinirim
Bu konuda en çok kullanılan kütüphanelerden birisi libsvm adı verilen ve C, C++, JAVA dilleri için yeniden yazılmış açık kaynak kütüphanedir.
Bu kütüphaneyi basit bir aramayla bulabileceğiniz gibi, açık kaynak olması dolayısıyla sourceforge.net adresinden de indirebilirsiniz. Yanlış hatırlamıyorsam oldukça iyi bir dökümantasyon ile birlikte geliyor.
başarılar
Merhaba çok güzel anlatmışsınız ancak örnek yapma noktasında sıkıntı çekiyorum, libsvm i indirdim ama nasıl kurulacağı konusunda guide ları da dahil olmak üzere detaylıca incelememe rağmen hala tam bir fikrim oluşmadı, libsvm in matlab eklentisini de indirdim ama genel bir anlatım olursa örnek bir data üzerinden çok sevinirim.
sizi tebrik ediyorum,cok iyi va kolay anlatmissiniz
hocam teşekkür ederiz anlatımınız için ,bir sorum olacak libsvm yi matlab’a nasıl entegre edeceğiz yardım ederseniz sevinirim
Merhaba
Libsvm nin nasıl kurulduğu alttaki linkte çok iyi anlatılmış.
http://www.youtube.com/watch?v=Wz_4h_bH7-c
smo diyede geçer weka da uygulayabilirsiniz
Merhaba,
Support vector machine’in zaman serilerinde bilinmeyen bir t zamanını tahmin etmek için kullanıldığına dair örnekler var literatürde, yukarıdaki yazıda okuduğum kümeleme mantığı ile bu nasıl gerçekleşmektedir? mümkünse forecasting konusu ile ilgili basit bir örnek paylaşabilirmisiniz? Tesekkurler.
Merhaba,
Benimde time series forecasting alanında çalışmam gerekiyor. Siz forecasting alanında nasıl kullanabileceğinize dair bilgi bulabildiniz mi acaba? Bu konuda bana yardımcı olabilir misiniz?
Teşekkürler
Merhaba özet anlatım için teşekkürler burada destek vektörleri nasıl bulunuyor (bir yerde geometrik optimizasyon problemi diye okumuştum ama hiç çözenini görmedim cehalet işte) yani problemin çözümü nasıl oluyor acaba. Bir de Hyperplane’e çok boyutlu düzlem denilebilir mi? Yani 3 boyutun üstünde boyuta sahip düzlemler için kullanılıyor galiba.