Tôi đang cố gắng diễn giải các trọng số thay đổi được đưa ra bằng cách lắp một SVM tuyến tính.
Một cách tốt để hiểu cách tính trọng số và cách diễn giải chúng trong trường hợp SVM tuyến tính là thực hiện các phép tính bằng tay trên một ví dụ rất đơn giản.
Thí dụ
Hãy xem xét các tập dữ liệu sau đây có thể phân tách tuyến tính
import numpy as np
X = np.array([[3,4],[1,4],[2,3],[6,-1],[7,-1],[5,-3]] )
y = np.array([-1,-1, -1, 1, 1 , 1 ])
Giải quyết vấn đề SVM bằng cách kiểm tra
Bằng cách kiểm tra, chúng ta có thể thấy rằng đường biên phân tách các điểm có "lề" lớn nhất là đường . Vì các trọng số của SVM tỷ lệ thuận với phương trình của dòng quyết định này (siêu phẳng ở kích thước cao hơn) sử dụng nên lần đầu tiên đoán các tham số sẽ làx2=x1−3wTx+b=0
w=[1,−1] b=−3
Lý thuyết SVM cho chúng ta biết rằng "chiều rộng" của lề được đưa ra bởi . Sử dụng đoán ở trên chúng ta sẽ có được một chiều rộng của . trong đó, bằng cách kiểm tra là không chính xác. Chiều rộng là2||w||22√=2–√42–√
Hãy nhớ rằng việc chia tỷ lệ ranh giới theo hệ số không làm thay đổi đường biên, do đó chúng ta có thể khái quát phương trình nhưc
cx1−cx2−3c=0
w=[c,−c] b=−3c
Cắm lại vào phương trình cho chiều rộng chúng ta nhận được
2||w||22–√cc=14=42–√=42–√
Do đó, các tham số (hoặc hệ số) trên thực tế là
w=[14,−14] b=−34
(Tôi đang sử dụng scikit-learn)
Tôi cũng vậy, đây là một số mã để kiểm tra tính toán thủ công của chúng tôi
from sklearn.svm import SVC
clf = SVC(C = 1e5, kernel = 'linear')
clf.fit(X, y)
print('w = ',clf.coef_)
print('b = ',clf.intercept_)
print('Indices of support vectors = ', clf.support_)
print('Support vectors = ', clf.support_vectors_)
print('Number of support vectors for each class = ', clf.n_support_)
print('Coefficients of the support vector in the decision function = ', np.abs(clf.dual_coef_))
- w = [[0,25 -0,25]] b = [-0,75]
- Chỉ số của vectơ hỗ trợ = [2 3]
- Các vectơ hỗ trợ = [[2. 3.] [6. -1.]]
- Số lượng vectơ hỗ trợ cho mỗi lớp = [1 1]
- Các hệ số của vectơ hỗ trợ trong hàm quyết định = [[0,0625 0,0625]]
Liệu dấu hiệu của trọng lượng có liên quan gì đến lớp học?
Không thực sự, dấu của các trọng số có liên quan đến phương trình của mặt phẳng biên.
Nguồn
https://ai6034.mit.edu/wiki/images/SVM_and_Boosting.pdf