Есть как минимум два способа мотивации SVM, но я выберу более простой путь.
D={(xi1,xi2,yi)}yi{1,−1}1−1
w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0
[w0,w1,w2]w0+w1xi1+w2xi2≥0xiyi=1w0+w1xi1+w2xi2<0xiyi=−1
Давайте предположим, что такая строка действительно существует, тогда я могу определить классификатор следующим образом,
min|w0|+|w1|+|w2|subject to:w0+w1xi1+w2xi2≥0,∀xi with yi=1w0+w1xi1+w2xi2<0,∀xi with yi=−1
Я использовал произвольную целевую функцию выше, в настоящий момент нам все равно, какая целевая функция используется. Мы просто хотим который удовлетворяет нашим ограничениям. Поскольку мы предположили, что линия существует так, что мы можем разделить два класса этой строкой, мы найдем решение вышеупомянутой задачи оптимизации.w
Выше не SVM, но он даст вам классификатор :-). Однако этот классификатор может быть не очень хорошим. Но как вы определяете хороший классификатор? Хорошим классификатором обычно является тот, который хорошо работает на тестовом наборе. В идеале, вы бы перебрать все возможные «S, разделяющие ваши обучающие данные и посмотреть , какие из них действительно хорошо на тестовых данных. Тем не менее, существует бесконечное количество , так что это совершенно безнадежно. Вместо этого мы рассмотрим некоторые эвристики, чтобы определить хороший классификатор. Одна эвристика заключается в том, что линия, разделяющая данные, будет достаточно далеко от всех точек (т. Е. Между точками и линией всегда есть разрыв или запас). Лучшим среди них является классификатор с максимальным запасом. Это то, что используется в SVM.ww
Вместо того чтобы настаивать на том, что для всех точек с и для всех точек с , если мы настаиваем на том, что для всех точек с и для всех точек с , то мы фактически настаиваем на том, чтобы точки находились далеко от линии. Геометрическое поле, соответствующее этому требованию, оказывается .w0+w1xi1+w2xi2≥0xiyi=1w0+w1xi1+w2xi2<0xiyi=−1w0+w1xi1+w2xi2≥1xiyi=1w0+w1xi1+w2xi2≤−1xiyi=−11∥w∥2
Итак, мы получаем следующую задачу оптимизации:
Немного сжатая форма написания:
Это в основном базовая формулировка SVM. Я пропустил довольно много дискуссий для краткости. Надеюсь, я все еще получил большую часть идеи.
max1∥w∥2subject to:w0+w1xi1+w2xi2≥1,∀xi with yi=1w0+w1xi1+w2xi2≤−1,∀xi with yi=−1
min∥w∥2subject to:yi(w0+w1xi1+w2xi2)≥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)≥1≥1
Что такое геометрический запас? Геометрический запас - это кратчайшее расстояние между точками в положительных примерах и точками в отрицательных примерах. Теперь точки с самым коротким расстоянием, как требуется выше, могут иметь функциональный запас больше, чем равный 1. Однако, давайте рассмотрим крайний случай, когда они находятся ближе всего к гиперплоскости, то есть функциональный край для самых коротких точек точно равен 1. Пусть - точка в положительном примере - точка, такая, что а - точка в отрицательном примере, точка, такая, что , Теперь расстояние между и будет самым коротким, когдаx+wTx++w0=1x−wTx−+w0=−1x+x−x+−x− перпендикулярно гиперплоскости.
Теперь, со всей вышеуказанной информацией, мы попытаемся найти который является геометрическим полем.
∥x+−x−∥2
wTx++w0=1
wTx−+w0=−1
wT(x+−x−)=2
|wT(x+−x−)|=2
∥w∥2∥x+−x−∥2=2
∥x+−x−∥2=2∥w∥2
[1] На самом деле не имеет значения, какую сторону вы выберете для и . Вы просто должны оставаться в соответствии с тем, что вы выбираете.1−1