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

10

Может кто-нибудь объяснить мне, как можно разработать функцию решения SVM? Или укажите мне на ресурс, который обсуждает конкретный пример.

РЕДАКТИРОВАТЬ

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

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

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

Я пытаюсь понять основную теорию прямо в двумерном пространстве (как это легче визуализировать), прежде чем думать о более высоких измерениях.

Я разработал решение для этого Кто-то может подтвердить, если это правильно?

весовой вектор равен (0, -2), а W_0 равен 3

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.
Naresh
источник
Существует иллюстрация с R здесь , но я чувствую ваш вопрос больше на алгоритмической аспекте. В этом случае было бы полезно добавить немного больше информации о предполагаемом приложении или доступном ресурсе.
chl
@chl Я обновил вопрос с деталями
naresh

Ответы:

12

Есть как минимум два способа мотивации SVM, но я выберу более простой путь.

D={(x1i,x2i,yi)}yi{1,1}11

w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0

[w0,w1,w2]w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=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

Вместо того чтобы настаивать на том, что для всех точек с и для всех точек с , если мы настаиваем на том, что для всех точек с и для всех точек с , то мы фактически настаиваем на том, чтобы точки находились далеко от линии. Геометрическое поле, соответствующее этому требованию, оказывается .w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1w0+w1x1i+w2x2i1xiyi=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
|wT(x+x)|=2
w2x+x2=2
x+x2=2w2

[1] На самом деле не имеет значения, какую сторону вы выберете для и . Вы просто должны оставаться в соответствии с тем, что вы выбираете.11

TenaliRaman
источник
1
@naresh Да, решение этой проблемы в cvx дало мне точно такое же решение, что и у вас . w=[0,2,3]
TenaliRaman
1
@entropy спасибо, я исправил опечатку. Я добавлю объяснение геометрического поля.
TenaliRaman
1
@entropy Я обновил ответ объяснением геометрического поля.
TenaliRaman
1
@entropy - гиперплоскость, проходящая через начало координат. Чтобы покрыть пространство всех линейных уравнений, вам нужен термин смещения. Подумайте о точках, находящихся в 2D, и скажем, что вы пытаетесь найти линию, которая разделяет эти точки. Однако все эти точки лежат в первом квадранте. Теперь можно расположить эти точки так, чтобы они были разделены, но не по любой линии, проходящей через начало координат. Тем не менее, линия с правильным смещением может сделать это. wTx
TenaliRaman
1
@entropy Сказав выше, вы, возможно, уже поняли, что, если вы правильно поверните и сместите точки, даже линия, проходящая через начало координат, сможет разделить классы. Однако обычно найти правильное вращение и сдвиг нелегко, по сравнению с простым изучением термина смещения.
TenaliRaman