Maksimum marjin hiperdüzlemi ve kernel fonksiyonları
Destek Vektör Makineleri (Support Vector Machines), veri noktalarını ayıran en geniş koridoru bulan zarif bir algoritmadır. Kernel trick sayesinde düz bir çizgiyle ayrılamayan verileri bile büyülü bir şekilde ayırabilir — sanki 2D'deki karmaşık şekilleri 3D'ye kaldırıp orada bıçakla kesiyormuşsunuz gibi.
SVM, sınıfları ayıran sonsuz hiperdüzlem arasından **en geniş marjine** sahip olanı seçer.…
🛣️Otoyol Metaforu
İki şehir (sınıf) arasına otoyol çiziyorsunuz. Support vectors şehirlerin sınıra en yakın binaları. Otoyolun genişliği (marjin) ne kadar büyükse, sürücüler (yeni veri noktaları) o kadar güvenle hangi şehre ait olduklarını anlar.
Gerçek veride sınıflar mükemmel ayrılmaz. **C parametresi** bu dengeyi kontrol eder:…
Küçük C (örn. 0.1)
Büyük C (örn. 100)
Doğrusal ayrılamayan veriyi yüksek boyutlu uzaya **gerçekten taşımadan** oradaki iç çarpım…
K(x, y) = φ(x)ᵀ · φ(y)φ: orijinal uzaydan yüksek boyutlu uzaya dönüşüm. Kernel trick sayesinde φ'yi açıkça hesaplamadan K değerini buluruz — hesaplama karmaşıklığı dramatik düşer.
• **Linear**: K(x,y) = xᵀy — zaten doğrusal ayrılabilir veri için…
💡Hangi kernel'i seçeceğinizi bilmiyorsanız RBF ile başlayın. Lineer kernel yeterli olup olmadığını test etmek için LinearSVC deneyin — çok daha hızlıdır.
Scikit-learn ile RBF kernel SVM
| 1 | from sklearn.svm import SVC |
| 2 | from sklearn.datasets import make_moons |
| 3 | from sklearn.model_selection import train_test_split |
| 4 | |
| 5 | # Doğrusal ayrılamayan ay şekli veri |
| 6 | X, y = make_moons(n_samples=200, noise=0.15) |
| 7 | X_train, X_test, y_train, y_test = train_test_split(X, y) |
| 8 | |
| 9 | # RBF kernel ile SVM |
| 10 | model = SVC(kernel='rbf', C=1.0, gamma='scale') |
| 11 | model.fit(X_train, y_train) |
| 12 | |
| 13 | print(f"Test accuracy: {model.score(X_test, y_test):.2f}") |
| 14 | print(f"Support vector sayısı: {len(model.support_vectors_)}") |
**SVM tercih edilir:**…
ℹ️SVM, kernel trick ve matematiksel zarafeti sayesinde 2000'lerin en popüler algoritmasıydı. Bugün derin öğrenme gölgesinde kalsa da, küçük veri setlerinde hâlâ rakipsizdir.
✦ Quiz
Support vectors nedir?
✦ Quiz
Kernel trick ne işe yarar?
✦ Quiz
C parametresi küçültüldüğünde ne olur?
⚠️SVM, büyük veri setlerinde (100K+ örnek) yavaş kalır çünkü eğitim karmaşıklığı O(n²) ile O(n³) arasındadır. Bu durumlarda SGDClassifier veya derin öğrenme düşünün.
Bağlantılı Konular