Враховуючи набір точок у двовимірному просторі, як може функціонувати одне проектне рішення для SVM?


10

Чи може хтось пояснити мені, як можна говорити про розробку функції рішення SVM? Або вкажіть мені на ресурс, який обговорює конкретний приклад.

EDIT

Для наведеного нижче прикладу я бачу, що рівняння розділяє класи з максимальним запасом. Але як я відрегулюю ваги і записати рівняння для гіперпланів у наступному вигляді.X2=1.5

H1:w0+w1x1+w2x21forYi=+1H2:w0+w1x1+w2x21forYi=1.

введіть тут опис зображення

Я намагаюсь отримати базову теорію правильно у двомірному просторі (як це легше уявити), перш ніж подумати про більш високі розміри.

Я розробив рішення для цього. Чи може хтось підтвердити, чи правильно це?

ваговий вектор дорівнює (0, -2), а W_0 - 3

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.

Існує ілюстрація з R тут , але я відчуваю ваше запитання більше на алгоритмічної аспекті. У цьому випадку допоможе, якщо ви зможете додати трохи більше інформації про передбачувану програму чи доступний ресурс.
chl

@chl Я оновив запитання з подробицями
naresh

Відповіді:


12

Існують щонайменше два способи мотивації SVM, але я прийму тут простіший шлях.

Тепер забудьте все, що ви знаєте про SVM на даний момент, і просто зосередиться на наявній проблемі. Вам надається набір точок разом з деякими мітками ( ), які походять від . Тепер ми намагаємося знайти лінію в 2D таким чином, що всі точки з міткою падають на одну сторону лінії, а всі точки з міткою - 1 падають на іншу сторону.y i { 1 , - 1 } 1D={(x1i,x2i,yi)}yi{1,1}11

Перш за все, зрозумійте, що - це лінія в 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 20 для всіх точок x i з y i = 1 і w 0 + w 1 x i 1 + w 2 x i 2 < 0[w0,w1,w2]w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0для всіх точок з y i = - 1 [1].xiyi=1

Припустимо, що такий рядок насправді існує, тоді я можу визначити класифікатор наступним чином,

min|w0|+|w1|+|w2|subject to:w0+w1x1i+w2x2i0,xi with yi=1w0+w1x1i+w2x2i<0,xi with yi=1

Я використав довільну цільову функцію вище, ми насправді не хвилюємося в тому, яка об’єктивна функція використовується. Ми просто хочемо, щоб відповідав нашим обмеженням. Оскільки ми припустили, що рядок існує таким, що ми можемо відокремити два класи цим рядком, ми знайдемо рішення вищезазначеної проблеми оптимізації.w

Вищенаведене не є SVM, але воно дасть вам класифікатор :-). Однак цей класифікатор може бути не дуже хорошим. Але як визначити хороший класифікатор? Хорошим класифікатором, як правило, є той, який добре працює на тестовому наборі. В ідеалі, ви б перебрати всі можливі «S, що розділяють ваші навчальні дані і подивитися , які з них дійсно добре на тестових даних. Однак є нескінченні , і це зовсім безнадійно. Натомість ми розглянемо деякі евристики, щоб визначити хороший класифікатор. Одне з евристичних полягає в тому, що лінія, яка розділяє дані, буде достатньо далеко від усіх точок (тобто між точками і лінією завжди є розрив або межа). Найкращий серед них класифікатор - максимальний запас. Це те, що звикає у SVM.шww

Замість того, щоб наполягати на тому, що для всіх точок з і для всіх точок з , якщо ми наполягаємо, що для всіх точок з і для всіх точок з , то ми фактично наполягаємо на тому, щоб точки були далеко від прямої. Геометричний запас, що відповідає цій вимозі, виходить .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 21w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1w0+w1x1i+w2x2i1y i = 1 w 0 + w 1 x i 1 + w 2 x i 2- 1 x i y i = - 1 1xiyi=1w0+w1x1i+w2x2i1xiyi=11w2

Отже, ми отримуємо таку задачу оптимізації, Трохи лаконічна форма написання цього, Це в основному основне формулювання SVM. Я пропустив досить багато дискусій заради стислості. Сподіваюся, я все-таки отримав більшу частину ідеї.

max1w2subject to:w0+w1x1i+w2x2i1,xi with yi=1w0+w1x1i+w2x2i1,xi with yi=1
minw2subject to:yi(w0+w1x1i+w2x2i)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, який ви бачите тут, називається функціональним запасом, тому те, що ми тут просили, - це те, що функціональна межа буде . Тепер ми спробуємо обчислити геометричний запас, враховуючи цю функціональну маржинальну вимогу.wyi(w0+w1x1+w2x2)1yi(w0+wTx)11

Що таке геометричний запас? Геометрична маржа - це найкоротша відстань між точками в позитивних прикладах і точками в негативних прикладах. Тепер точки, які мають найкоротшу відстань, як вимагається вище, можуть мати функціональний запас більше, ніж дорівнює 1. Однак розглянемо крайній випадок, коли вони найближчі до гіперплощини, тобто функціональна межа для найкоротших точок точно однакова до 1. Нехай - точка на позитивному прикладі - така точка, що і точка на негативному прикладі - точка така, що . Тепер відстань між і буде найменшою, колиx+wTx++w0=1xwTx+w0=1x+xx+x перпендикулярний до гіперплощини.

Тепер, з усією вищенаведеною інформацією, ми спробуємо знайти який є геометричним полем. x+x2

wTx++w0=1
wTx+w0=1
wT(x+x)=2
|шТ(х+-х-)|=2
x + - x - 2 = 2
ш2х+-х-2=2
х+-х-2=2ш2

[1] Насправді не важливо, яку сторону ви обираєте для і . Ви просто повинні залишатися послідовними з тим, що виберете.- 11-1


1
@naresh Yeap, вирішення цього питання в cvx дало мені саме таке рішення, що і у вас . ш=[0,-2,3]
TenaliRaman

1
@entropy дякую, що я виправив помилку друку. Я додам пояснення геометричного поля.
TenaliRaman

1
@entropy Я оновив відповідь із поясненням геометричного поля.
TenaliRaman

1
@entropy - це гіперплан, що проходить через походження. Для покриття простору всіх лінійних рівнянь вам потрібен термін зміщення. Подумайте про точки, що проживають у 2D, і скажемо, що ви намагаєтесь знайти лінію, яка розділяє ці точки. Однак всі ці точки лежать у першому квадранті. Тепер можна розташувати ці точки таким чином, щоб вони були відокремленими, але не будь-якою лінією, яка проходить через початок. Однак лінія з правильним ухилом може це зробити. шТх
TenaliRaman

1
@entropy Сказавши сказане, ви вже могли зрозуміти, що якщо ви правильно обертаєте та зміщуєте точки, навіть лінія, що проходить через початок, повинна мати змогу відокремлювати класи. Однак зазвичай знайти це правильне обертання і зсув непросто, порівняно з просто вивченням терміна зміщення.
TenaliRaman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.