React Flow mini map
🧠 ML Temelleriileri12 dk

SVM ve Kernel Trick

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)

  • ·Geniş marjin koridor
  • ·Hatalı sınıflandırmalara toleranslı
  • ·Gürültülü veride daha stabil
  • ·Underfitting riski

Büyük C (örn. 100)

  • ·Dar marjin koridor
  • ·Her noktayı doğru sınıflandırmaya zorlar
  • ·Outlier'lara aşırı hassas
  • ·Overfitting riski

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

Python
1from sklearn.svm import SVC
2from sklearn.datasets import make_moons
3from sklearn.model_selection import train_test_split
4
5# Doğrusal ayrılamayan ay şekli veri
6X, y = make_moons(n_samples=200, noise=0.15)
7X_train, X_test, y_train, y_test = train_test_split(X, y)
8
9# RBF kernel ile SVM
10model = SVC(kernel='rbf', C=1.0, gamma='scale')
11model.fit(X_train, y_train)
12
13print(f"Test accuracy: {model.score(X_test, y_test):.2f}")
14print(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