SVM (Support Vector Machine, Destekçi Vektör Makinesi)
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.
« Aşırıdüzlem (hyperplane) | atoi (ASCII to Integer, ASCII kodun tam sayısı) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'SVM (Support Vector Machine, Destekçi Vektör Makinesi)' isimli yazı 01 Dec 2008 tarihinde, saat: 05:21 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 949 defa okunmuştur.
Benzer yazıları Bilgisayar Matematiği, Yapay Sinir Ağları (Artificial Neural Networks) kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Sıralama işleminiz poligonu...
- Şadi Evren ŞEKER: bahsettiğiniz sıralama algoritması...
- Abdurrahman ulusoy: merhaba hocam. gelişigüzel...
- Oguz Okutan: Merhaba hocam.. Fonksiyonlarda degere göre...
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
Yakın Yazılar
Çok sınıflı DVM ( Multiclass SVM)
Doğrusal olmayan DVM ( Non-linear SVM)
SVM (Support Vector Machine, Destekçi Vektör Makinesi)
Özyineli Diller (Recursive Languages)
Birimdik Yöneyler (Orthonormal Vectors)
Dik Vektörler (Orthogonal Vectors)
Özyineli Sayılabilir Diller (Recursively Enumerable Languages)
Belirsiz Çokterimli Tam (NP-Complete, Nondeterministic Polynomial Complete)
BGP (Sınır Kapısı Protokolü, Gümrük Protokolü, Border Gateway Protocol)
Eigenvalue (Özdeğer) Eigen vector (Öz yöney) Eigen Space (Öz Uzay)
Sonlu Durum Makinası (Finite State Machine, Finite State Automaton)
Çıktı Geri Beslemeli (Output FeedBack Mode, OFB)
Hesaplanabilir Fonksiyon (Computable Function)
Belirli Sonlu Otomat (Deterministic Finite Automat, DFA)
Self Organizing Maps (Özdüzenleyici Haritalar)
Özyöney hesaplanması (Calculation of Eigenvector)
Otonom Sistem (Autonomous System)
Bağlantılar
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.