Існують щонайменше два способи мотивації SVM, але я прийму тут простіший шлях.
Тепер забудьте все, що ви знаєте про SVM на даний момент, і просто зосередиться на наявній проблемі. Вам надається набір точок разом з деякими мітками ( ), які походять від . Тепер ми намагаємося знайти лінію в 2D таким чином, що всі точки з міткою падають на одну сторону лінії, а всі точки з міткою - 1 падають на іншу сторону.y i { 1 , - 1 } 1D={(xi1,xi2,yi)}yi{1,−1}1−1
Перш за все, зрозумійте, що - це лінія в 2D, а w 0 + w 1 x 1 + w 2 x 2 > 0 являє собою "одну сторону" лінії і w 0 + w 1 x 1 + w 2 x 2 < 0 являє "іншу сторону" рядка.w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0
З вищесказаного можна зробити висновок, що ми хочемо деякого вектора такого, що,
w 0 + w 1 x i 1 + w 2 x i 2 ≥ 0 для всіх точок x i з y i = 1 і w 0 + w 1 x i 1 + w 2 x i 2 < 0[w0,w1,w2]w0+w1xi1+w2xi2≥0xiyi=1ш0+ ш1хi1+ ш2хi2< 0для всіх точок з y i = - 1 [1].хiуi= - 1
Припустимо, що такий рядок насправді існує, тоді я можу визначити класифікатор наступним чином,
хв | ш0| + | ш1| + | ш2|за умови : ш0+ ш1хi1+ ш2хi2≥ 0 , ∀ xi з уi= 1ш0+ ш1хi1+ ш2хi2< 0 , ∀ xi з уi= - 1
Я використав довільну цільову функцію вище, ми насправді не хвилюємося в тому, яка об’єктивна функція використовується. Ми просто хочемо, щоб відповідав нашим обмеженням. Оскільки ми припустили, що рядок існує таким, що ми можемо відокремити два класи цим рядком, ми знайдемо рішення вищезазначеної проблеми оптимізації.ш
Вищенаведене не є SVM, але воно дасть вам класифікатор :-). Однак цей класифікатор може бути не дуже хорошим. Але як визначити хороший класифікатор? Хорошим класифікатором, як правило, є той, який добре працює на тестовому наборі. В ідеалі, ви б перебрати всі можливі «S, що розділяють ваші навчальні дані і подивитися , які з них дійсно добре на тестових даних. Однак є нескінченні , і це зовсім безнадійно. Натомість ми розглянемо деякі евристики, щоб визначити хороший класифікатор. Одне з евристичних полягає в тому, що лінія, яка розділяє дані, буде достатньо далеко від усіх точок (тобто між точками і лінією завжди є розрив або межа). Найкращий серед них класифікатор - максимальний запас. Це те, що звикає у SVM.шшш
Замість того, щоб наполягати на тому, що для всіх точок з і для всіх точок з , якщо ми наполягаємо, що для всіх точок з і для всіх точок з , то ми фактично наполягаємо на тому, щоб точки були далеко від прямої. Геометричний запас, що відповідає цій вимозі, виходить .x i y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 < 0 x i y i = - 1 w 0 + w 1 x i 1 + w 2 x i 2 ≥ 1ш0+ ш1хi1+ ш2хi2≥ 0хiуi= 1ш0+ ш1хi1+ ш2хi2< 0хiуi= - 1ш0+ ш1хi1+ ш2хi2≥ 1y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 ≤ - 1 x i y i = - 1 1хiуi= 1ш0+ ш1хi1+ ш2хi2≤ - 1хiуi= - 11∥ w ∥2
Отже, ми отримуємо таку задачу оптимізації,
Трохи лаконічна форма написання цього,
Це в основному основне формулювання SVM. Я пропустив досить багато дискусій заради стислості. Сподіваюся, я все-таки отримав більшу частину ідеї.
макс. 1∥ w ∥2за умови : ш0+ ш1хi1+ ш2хi2≥ 1 , ∀ xi з уi= 1ш0+ ш1хi1+ ш2хi2≤ - 1 , ∀ xi з уi= - 1
хв ∥ ш ∥2за умови : уi( ш0+ ш1хi1+ ш2хi2) ≥ 1 , ∀ i
Сценарій CVX для вирішення прикладу проблеми:
A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1];
b = ones(8, 1);
y = [-1; -1; -1; -1; 1; 1; 1; 1];
Y = repmat(y, 1, 3);
cvx_begin
variable w(3)
minimize norm(w)
subject to
(Y.*A)*w >= b
cvx_end
Додаток - геометричний запас
Вище ми вже просили шукати таким, що або взагалі . LHS, який ви бачите тут, називається функціональним запасом, тому те, що ми тут просили, - це те, що функціональна межа буде . Тепер ми спробуємо обчислити геометричний запас, враховуючи цю функціональну маржинальну вимогу.шуi( ш0+ ш1х1+ ш2х2) ≥ 1уi( ш0+ шТх ) ≥ 1≥ 1
Що таке геометричний запас? Геометрична маржа - це найкоротша відстань між точками в позитивних прикладах і точками в негативних прикладах. Тепер точки, які мають найкоротшу відстань, як вимагається вище, можуть мати функціональний запас більше, ніж дорівнює 1. Однак розглянемо крайній випадок, коли вони найближчі до гіперплощини, тобто функціональна межа для найкоротших точок точно однакова до 1. Нехай - точка на позитивному прикладі - така точка, що і точка на негативному прикладі - точка така, що . Тепер відстань між і буде найменшою, колих+шТх++ ш0= 1х-шТх-+ ш0= - 1х+х-х+- х- перпендикулярний до гіперплощини.
Тепер, з усією вищенаведеною інформацією, ми спробуємо знайти який є геометричним полем.
∥ x+- х-∥2
шТх++ ш0= 1
шТх-+ ш0= - 1
шТ( х+- х-) = 2
| шТ( х+- х-) | = 2
‖ x + - x - ‖ 2 = 2∥ w ∥2∥ x+- х-∥2= 2
∥ x+- х-∥2= 2∥ w ∥2
[1] Насправді не важливо, яку сторону ви обираєте для і . Ви просто повинні залишатися послідовними з тим, що виберете.- 11- 1