SVM nedir?
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 25/112
- 5 dk
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şınaDiğ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
LinearSVCya daSGDClassifiertercih 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
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
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.
print(m.____)
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 |