Maksimum marjin hiperdüzlemi ve kernel fonksiyonları
Önce bunlara göz at
30 saniyede özet · Ne öğreneceksin
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ı he…
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.
Daha derinlemesine