CodeBlanks Logo Icon CodeBlanks

SVM nedir?

SVM (Support Vector Machine), sınıfları en geniş marjla ayıran hiperdüzlemi bulur.

SVM nedir?

Destek vektör makinesi (SVM), iki sınıfı ayıran sınırlar arasından sınıflara en uzak olanı seçer. Bu sınıra en yakın eğitim noktalarına destek vektörleri denir; sınırın yeri yalnızca onlara bağlıdır.

from sklearn.svm import SVC
m = SVC(kernel="linear").fit(X, y)
print(m.support_vectors_.shape)   # destek vektörü sayısı x özellik
print(m.n_support_)               # sınıf başına

Diğer noktalar silinse model değişmezdi; SVM bu yüzden belleği verimli ve aykırı değerlere görece dayanıklıdır.

SVM'in güçlü yanları

SVM orta büyüklükte (birkaç on bine kadar örnek), çok özellikli verilerde güçlüdür: metin sınıflandırma, biyoinformatik. Çekirdek hilesiyle doğrusal olmayan sınırlar öğrenir.

  • Ölçeğe çok duyarlıdır: önce StandardScaler.
  • Eğitim süresi örnek sayısıyla hızla artar; çok büyük veride LinearSVC ya da SGDClassifier tercih edilir.
  • Varsayılan olarak olasılık değil karar skoru üretir.

Uygulama Doğrusal SVM

Ayrılabilir iki kümeli veride SVC(kernel="linear") eğit. Destek vektörü sayısını (n_support_) ve [[0, 0], [4, 4]] için tahminleri alt alta yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.svm import SVC

X = np.array([[0, 0], [1, 0], [0, 1], [1, 1], [3, 3], [4, 3], [3, 4], [4, 4]])
y = np.array([0, 0, 0, 0, 1, 1, 1, 1])

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.svm import SVC

X = np.array([[0, 0], [1, 0], [0, 1], [1, 1], [3, 3], [4, 3], [3, 4], [4, 4]])
y = np.array([0, 0, 0, 0, 1, 1, 1, 1])

m = SVC(kernel="linear").fit(X, y)
print(m.n_support_)
print(m.predict([[0, 0], [4, 4]]))

Beklenen çıktı

[1 1]
[0 1]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 SVM'in sınırını hangi noktalar belirler?

  • Sınıf ortalamaları
  • Destek vektörleri Doğru cevap
  • Tüm noktalar eşit
  • Sınırdan en uzak noktalar

Açıklama: Sınıra en yakın noktalar marjı tanımlar; uzaktakiler etkisizdir.

2 Destek vektörlerinin sınıf başına sayısını oku.

Soru
print(m.____)
Cevap
print(m.n_support_)

Açıklama: n_support_ sınıf başına destek vektörü sayısını verir.

3 Terimleri eşleştir.

Kavram Anlamı
destek vektörü Sınıra en yakın nokta
support_vectors_ Koordinatları
LinearSVC Büyük veri için hızlı
StandardScaler SVM öncesi şart

Orta seviye bölümündeki tüm dersler