Support Vector Machines (SVM) (Destek Vektör Makineleri)

İki sınıf arasındaki en geniş marjı bulan hiperdüzlem tabanlı denetimli öğrenme algoritması.

Destek Vektör Makineleri (Support Vector Machines — SVM), sınıflandırma ve regresyon görevleri için geliştirilmiş, teorik temeli sağlam bir denetimli makine öğrenimi algoritmasıdır. Temel fikir basittir: iki sınıfa ait veri noktalarını birbirinden ayıran en geniş kenar boşluğunu (marjı) tanımlayan hiperdüzlemi bulmak. Hiperdüzlem, iki boyutlu uzayda bir doğru, üç boyutlu uzayda bir düzlem ve daha yüksek boyutlarda genel olarak hiperdüzlem adını alır. SVM, bu hiperdüzlemi belirlerken yalnızca sınıra en yakın veri noktalarına — destek vektörlerine — odaklanır; diğer noktalar modeli etkilemez. Geniş marj ilkesi, modelin yeni ve görülmemiş örnekleri daha iyi genelleştireceği güvencesini verir. Gerçek dünyadaki veriler çoğu zaman doğrusal olarak ayrılamaz. SVM bu durumu kernel hilesi (kernel trick) ile aşar: veriyi daha yüksek boyutlu bir uzaya taşıyarak doğrusal ayrım imkânı yaratır. Hesaplama, yüksek boyutta açıkça çalışmadan iç çarpım formülü üzerinden yapılır; bu sayede polinom, RBF (Radial Basis Function) ve sigmoid kernel seçenekleri sunulur. C düzenlileştirme parametresi, marj genişliği ile eğitim hatası arasındaki dengeyi belirler. Küçük C geniş ve hata toleranslı marj üretirken, büyük C dar ama hata açısından titiz bir sınır çizer. RBF kernelde ek olarak gamma parametresi, her veri noktasının etkisi ne kadar uzağa yayıldığını kontrol eder. SVM'nin avantajları arasında yüksek boyutlu uzayda etkili çalışması, küçük-orta ölçekli veri setlerinde güçlü performans sergilemesi ve global optimuma yakınsama garantisi öne çıkar. Öte yandan 100.000 örnekten büyük veri setlerinde eğitim yavaşlar; doğrudan olasılık çıktısı üretmez; çok sınıflı görevler one-vs-rest veya one-vs-one stratejileri gerektirir. Türk makine öğrenimi mühendisleri için SVM, metin sınıflandırmada TF-IDF + LinearSVC kombinasyonu olarak hâlâ geçerli bir baseline sunar. Küçük etiketli veri setlerinde derin öğrenme modelleriyle rekabet edebilir; biyoinformatik ve tıp gibi alanlarda yorumlanabilirlik gereken durumlarda tercih edilir.

Hiperdüzlem ve Destek Vektörleri

SVM, veri noktalarını iki sınıfa ayıran sonsuz sayıdaki olası hiperdüzlem arasından marjı en büyük olanı seçer. Marj, hiperdüzlem ile her iki sınıftaki en yakın nokta arasındaki mesafenin iki katıdır. Bu en yakın noktalara destek vektörleri denir; hiperdüzlem tamamen bu noktalarla belirlenir. Eğitim setindeki diğer tüm noktalar silinse bile model değişmez — bu özellik SVM'yi veri gürültüsüne karşı sağlam kılar.

Kernel Trick ile Doğrusal Olmayan Sınırlar

Doğrusal ayrılamayan veriler için SVM, veriyi içsel olarak daha yüksek boyutlu bir özellik uzayına taşır ve orada doğrusal hiperdüzlem çizer. Kernel fonksiyonu bu taşımayı açıkça gerçekleştirmeden hesaplar: RBF (Gaussian) kernel dairesel karar bölgeleri üretir ve çoğu görev için ilk tercih olmalıdır. Polinom kernel belirli dereceli eğriliklere izin verir. LinearSVC ise büyük metin veri setlerinde RBF'den çok daha hızlıdır.

C ve Gamma Hiperparametreleri

C (düzenlileştirme): küçük değer geniş marj + hata toleransı (underfitting riski), büyük değer dar marj + az hata (overfitting riski). Gamma (RBF kernelde): büyük gamma tek veri noktasının etkisini daraltır (karmaşık sınır), küçük gamma etkiyi yayar (pürüzlü sınır). GridSearchCV ile C=[0.1, 1, 10, 100] ve gamma=['scale', 0.1, 0.01] ızgarasında çapraz doğrulama standarttır.

SVM Ne Zaman Kullanılmalı?

Yüksek boyutlu seyrek veri (TF-IDF metin): LinearSVC en hızlı seçim. Küçük-orta etiketli veri (< 50K örnek): derin öğrenme kadar iyi, çok daha hızlı eğitim. Güçlü genelleme garantisi aranan alan: biyoinformatik, tıbbi tanı, kimya. Kaçınılacak durumlar: 100K+ örnekli veri (eğitim yavaşlar), doğal dil işlemede modern transformer'lar SVM'yi geride bırakmıştır.

📐 SVM ile Pratik Model Geliştirme

  • check_circle Veriyi mutlaka ölçeklendirin; SVM mesafeye duyarlıdır, StandardScaler zorunludur
  • check_circle RBF çekirdeği genellikle başlangıç için en iyi seçimdir; doğrusal ayırılamaz veri için ideal
  • check_circle C parametresi: küçük değer geniş marjin (daha fazla hata tolere), büyük değer dar marjin (daha az hata)
  • check_circle Gamma: büyük değer karmaşık karar sınırı ama overfitting riski; küçük değer daha düzgün sınır
  • check_circle Büyük veri setlerinde LinearSVC veya SGDClassifier SVM yerine çok daha hızlı çalışır

Sık Sorulan Sorular

  • check_circle SVM ile lojistik regresyon arasındaki fark nedir? Lojistik r: SVM ile lojistik regresyon arasındaki fark nedir? Lojistik regresyon log-loss minimize eder ve olasılık çıktısı üretir; SVM hinge-loss ile marjı maksimize eder ve doğrudan olasılık vermez. Lineer görevlerde performans genellikle benzerdir.
  • check_circle Python'da SVM nasıl kullanılır? sklearn.svm.SVC(kernel='rbf': Python'da SVM nasıl kullanılır? sklearn.svm.SVC(kernel='rbf', C=1.0) genel amaçlı kullanım için; büyük metin veri setinde sklearn.svm.LinearSVC daha hızlıdır. Hiperparametreler için GridSearchCV önerilir.
  • check_circle SVM çok sınıflı problemi nasıl çözer? Scikit-learn varsayıla: SVM çok sınıflı problemi nasıl çözer? Scikit-learn varsayılan olarak one-vs-rest (OvR) stratejisi kullanır; her sınıf için ayrı ikili sınıflandırıcı eğitilir. decision_function_shape='ovo' ile one-vs-one de seçilebilir.
  • check_circle Kernel seçimi nasıl yapılır? Varsayılan olarak RBF ile başla: Kernel seçimi nasıl yapılır? Varsayılan olarak RBF ile başlayın. Veri doğrusal ayrılabilirse LinearSVC daha hızlıdır. Polinom kernel, belirli yapısal ilişkileri olan verilerde (görüntü, NLP bazı alt görevler) denenebilir.
  • check_circle SVM'nin bellek kullanımı nasıldır? Karar sınırı yalnızca des: SVM'nin bellek kullanımı nasıldır? Karar sınırı yalnızca destek vektörlerine bağlı olduğundan model kompakttır; ancak büyük veri setlerinde SVM eğitimi O(n²)–O(n³) karmaşıklık nedeniyle yavaştır.
  • check_circle SVR (Support Vector Regression) nedir? SVM'nin regresyon ver: SVR (Support Vector Regression) nedir? SVM'nin regresyon versiyonu; hedef değerleri epsilon-tüp içinde tutmaya çalışır. sklearn.svm.SVR ile kullanılabilir; küçük veri setlerinde güçlü bir regression baseline sunar.