Простое, но всестороннее чтение о машине опорных векторов

Производительность большинства алгоритмов обучения с учителем в большинстве случаев очень похожа. Однако более важным является масштаб доступных данных и навыки, которыми вы обладаете, такие как разработка признаков или методы регуляризации.

Метод опорных векторов или SVM иногда упрощает изучение линейных и нелинейных сложных функций.

Давайте теперь попробуем понять, что такое SVM

Мы возьмем пример, чтобы классифицировать, является ли электронное письмо спамом (y = 1) или не спамом (y = -1), на основе слов в таком письме.

Ниже показаны входные данные, которые мы хотели бы рассмотреть для обсуждения SVM. Значение 1 указывает, что слово существует в электронном письме, а 0 указывает, что слово не существует.

Столбец y указывает, квалифицируется ли электронное письмо как спам или нет.

Следовательно, перед нами стоит задача бинарной классификации. Мы будем использовать линейную модель для построения классификатора.

Мы будем классифицировать электронное письмо как спам, если взвешенная комбинация входных данных больше некоторого порогового значения, в противном случае мы классифицируем его как не спам.

Поэтому наша цель — найти значения W для определения функции f(x)

Теперь наша цель — определить гиперплоскость — f(x), чтобы классифицировать спам от не спамовых писем, найдя значения W.

Чтобы уточнить, это пример линейного классификатора, в котором каждое слово имеет вес, связанный с каждой функцией.

В случае, если взвешенная сумма признаков и весов положительна, мы прогнозируем значение +1 как спам или -1 как не спам.

Вопрос в том, как нам найти значения W?

Давайте используем наши обучающие данные x , входные функции и метку y.

Наша цель — определить линию, которая наилучшим образом классифицирует наши данные как спам/не спам.

Но как найти лучшую строку?

В приведенном ниже примере видно, что есть много возможных строк, которые мы можем выбрать в качестве нашего классификатора.

Обоснование выбора линии заключается в том, что чем больше расстояние от разделительной линии, тем больше уверенность в нашей классификации, и наоборот.

Например, и точка A, и точка C не являются спамом, однако у нас больше уверенности в том, что точка A не является спамом, чем точка C.

Итак, теперь мы хотим найти линию с наибольшим запасом или линию, которая максимизирует расстояние ближайших точек поперек линии.

Мы определим маржу как расстояние от ближайшего примера до границы решения. Мы будем обозначать значение границы решения как γ.

γ на левом рисунке ниже намного меньше, чем γ на правом рисунке ниже

Но как вычислить γ?

Наша ссылка на изображении ниже — линия L и точка данных A.

Как далеко А от L?

Математически можно показать, что расстояние от точки A до L равно wA+b.

Итак, теперь, когда мы можем найти γ, мы можем найти w и определить разделяющую плоскость с наибольшим запасом.

Условие нахождения W:

Для всех наших точек данных , если точка данных i имеет наименьшее значение γ, мы хотели бы максимизировать γ для точки i.

Мы можем записать это как задачу оптимизации с целью найти γ,чтобы для каждого обучающего примера значение наибольшего обучающего примера было не менее γ. И, найдя γ, мы, следовательно, найдем w.

Откуда взялся термин вектор опоры?

Название опорный вектор происходит от того факта, что наш классификатор больших отступов определяется очень небольшим количеством точек (или векторов).

В приведенном ниже примере классификатор может быть определен только тремя точками, а все остальные точки мы можем смело игнорировать. Или мы можем сказать, что вектор поддерживается тремя точками.

Обычно, если у нас есть d размерные данные, нам требуются опорные векторы d+1 для определения нашей линии.

Предположим, у нас есть точка данных X, и мы вычислили γ для точки X.

Из приведенного ниже уравнения видно, что γ также масштабируется, если мы масштабируем W. Это даст ложную оценку γ и повлияет на нашу функцию стоимости.

Есть 2 шага для решения этой проблемы

  1. Мы работаем с нормализованным W;

2. Мы определяем наши опорные векторы, как показано ниже:

Как мы рассчитываем γ ?

Следовательно, наши ограничения меняются на:

Теперь задача максимизации γ изменилась:

  • Минимизация длины вектора w; и
  • Сохраняя ограничение, что наша уверенность в классификации всех точек данных больше 1.

Это называется SVM с жесткими ограничениями

Мягкий классификатор маржи

До сих пор мы предполагали, что всегда можно найти линию, разделяющую положительные и отрицательные случаи. Однако большая часть реального набора данных не имеет таких гиперплоскостей. См. набор данных ниже:

В таких случаях нам нужно ввести штраф C, связанный с количеством ошибок, сохраняя при этом высокую маржу.

Итак, теперь цель состоит в том, чтобы определить гиперплоскость, которая дает хороший запас, но допускает несколько ошибок.

Но не все ошибки одинаковы. Мы будем использовать переменныеε, или штрафы за неправильную классификацию данных.

ε — расстояние от другой стороны поля до самой точки данных.

Теперь наша цель — найти w ,b, ε таким образом, чтобы оптимизация была достигнута. Если x находится не на той стороне поля, мы теряем ε.

C называется штрафом за неиспользование, так как он действует как параметр настройки того, насколько мы хотим максимизировать маржу по сравнению со штрафом за наши ошибки классификации.

Функция потерь для SVM называется шарнирной потерей, и она выглядит как красная линия ниже. Функция потерь привязана к точке, отмеченной K:

Как только мы решим нашу функцию затрат, мы получим всю необходимую поддержку.

Пожалуйста, не стесняйтесь аплодировать, если этот блог помог вам понять SVM. Удачного кодирования! :)