Marj
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 26/112
- 5 dk
Marj, hiperdüzlemin iki sınıfa en yakın noktalara olan uzaklığıdır.
Marj
Marj, sınır ile en yakın noktalar arasındaki boşluktur. Doğrusal SVM w·x + b = 0 sınırını, marj genişliği 2 / ‖w‖ en büyük olacak biçimde seçer. Geniş marj, yeni noktalarda daha güvenli kararlar demektir.
m = SVC(kernel="linear", C=1000).fit(X, y) # sert marja yakın
w = m.coef_[0]
print(2 / np.linalg.norm(w)) # marj genişliğiDestek vektörlerinde |w·x + b| = 1 olur; bu noktalar marjın kenarındadır.
Sert ve yumuşak marj
Sert marj hiçbir noktanın marj içine girmesine izin vermez; veri tam ayrılamıyorsa çözüm yoktur ve tek bir aykırı değer sınırı çok kaydırır. Yumuşak marj bazı ihlallere ceza karşılığında izin verir; denge C ile ayarlanır.
# C büyük: ihlal pahalı -> dar marj, eğitime sıkı uyum
# C küçük: ihlal ucuz -> geniş marj, daha düzgün sınırGerçek verilerin neredeyse hepsi gürültülüdür; bu yüzden pratikte her zaman yumuşak marj kullanılır.
Uygulama Marjı ölç
SVC(kernel="linear", C=1000) eğit. Marj genişliğini 2 / np.linalg.norm(m.coef_[0]) ile hesaplayıp round(..., 3) ile yazdır. Ardından destek vektörlerinde decision_function değerlerinin mutlak değerini np.round(..., 2) ile yazdır.
Başlangıç kodu
import numpy as np
from sklearn.svm import SVC
X = np.array([[0, 0], [1, 0], [0, 1], [3, 3], [4, 3], [3, 4]])
y = np.array([0, 0, 0, 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], [3, 3], [4, 3], [3, 4]])
y = np.array([0, 0, 0, 1, 1, 1])
m = SVC(kernel="linear", C=1000).fit(X, y)
print(round(2 / np.linalg.norm(m.coef_[0]), 3))
print(np.round(np.abs(m.decision_function(m.support_vectors_)), 2))Beklenen çıktı
3.536 [1. 1. 1.]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Marjı büyütmek ‖w‖ için ne demektir?
- ‖w‖ küçülür Doğru cevap
- ‖w‖ büyür
- ‖w‖ değişmez
- ‖w‖ sıfır olur
Açıklama: Marj 2/‖w‖ olduğu için ağırlık normu küçüldükçe marj genişler.
2 Ağırlık vektörünün normunu hesapla.
marj = 2 / np.linalg.____(m.coef_[0])
marj = 2 / np.linalg.norm(m.coef_[0])
Açıklama: norm ‖w‖ Öklid uzunluğunu verir.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
marj |
2 / ‖w‖ |
sert marj |
İhlale izin yok |
yumuşak marj |
Cezalı ihlal |
|w·x + b| = 1 |
Destek vektörleri |