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.