Я намагаюся інтерпретувати змінні ваги, задані встановленням лінійного SVM.
Хороший спосіб зрозуміти, як розраховуються ваги, і як їх інтерпретувати у випадку лінійної SVM - це виконати обчислення вручну на дуже простому прикладі.
Приклад
Розглянемо наступний набір даних, який лінійно відокремлюється
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 ])
Вирішення проблеми SVM шляхом перевірки
Перевіривши, ми можемо побачити, що граничною лінією, яка розділяє точки з найбільшим «запасом», є лінія . Оскільки ваги SVM пропорційні рівнянню цієї лінії рішення (гіперплан у більших розмірах), використовуючи перше здогадування параметрів будеx2=x1−3wTx+b=0
w=[1,−1] b=−3
Теорія SVM говорить нам, що "ширина" поля задається . Використовуючи вище припущення ми отримаємо ширину з . що при огляді невірно. Ширина -2||w||22√=2–√42–√
Нагадаємо, що масштабування межі на коефіцієнт не змінює граничну лінію, отже, ми можемо узагальнити рівняння якc
cx1−cx2−3c=0
w=[c,−c] b=−3c
Підключимо назад до рівняння за отриману ширину
2||w||22–√cc=14=42–√=42–√
Отже, параметри (або коефіцієнти) насправді
w=[14,−14] b=−34
(Я використовую scikit-learn)
Отже, я ось ось який код, щоб перевірити наші ручні розрахунки
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]
- Індекси векторів підтримки = [2 3]
- Вектори підтримки = [[2. 3.] [6. -1.]]
- Кількість векторів підтримки для кожного класу = [1 1]
- Коефіцієнти вектора підтримки у функції рішення = [[0,0625 0,0625]]
Чи має ознака ваги щось спільне з класом?
Насправді знак ваг має відношення до рівняння граничної площини.
Джерело
https://ai6034.mit.edu/wiki/images/SVM_and_Boosting.pdf