Введение

Машины опорных векторов (сокращенно SVM) — один из самых мощных готовых алгоритмов обучения с учителем. Хотя они обычно рассматриваются в контексте классификации, они также широко используются для регрессии и обнаружения аномалий.

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

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

Основная идея состоит в том, чтобы вставить самую широкую дорогу/канал/полосу, разделяющую положительные и отрицательные образцы. Другими словами, кто-то хочет максимизировать маржу. Поля любой точки — это в основном расстояние этой точки данных от границы решения. Общий запас (называемый запасом) — это минимальный запас по всем точкам данных. Мы хотим выбрать границу решения так, чтобы маржа была как можно выше. Хотя эта идея интуитивно понятна из диаграммы выше, есть и другие способы взглянуть на нее.

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

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

Погружение в его математику

Нам нужно описать модель, а затем обновить ее параметры так, чтобы маржа была максимальной.

Линейный разделитель задается как w.x = b, где w – вектор, нормальный к границе решения.

Маржа описывается следующим образом

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

Самый простой способ не заморачиваться с масштабированием — вообще запретить его. Следовательно, фиксируем норму вектора w. Пусть ограничение будет |w| = 1.

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

Задача оптимальной оптимизации, которую необходимо решить

На поле может влиять либо ориентация w, либо его норма. Что мы делаем, так это фиксируем поле равным 1 и минимизируем |w|. Для любого заданного |w| максимальный запас достигается при правильной ориентации (наша последняя попытка). В более широком смысле, для любого предела самая низкая норма может быть достигнута только при правильной ориентации.

Теперь это выпуклая цель — и линейные ограничения. Так что теперь это можно легко решить.

Решение

  1. Использование множителей Ларанжа для добавления ограничений к целевой функции.
  2. Положив производные = 0, найти целевой экстремум.
  3. Подставляем результаты обратно в уравнение.

Теперь нам нужно выбрать правильные значения α, чтобы L было минимальным.

Если вы знаете α, мы знаем w (уравнение, приведенное выше). Если вы знаете w, вы можете найти b. b изменяется, если вы перемещаете границу решения, не меняя ее ориентации (управляется w). Чтобы максимизировать маржу, граница решения должна находиться посередине двух желобов.

Предстоящие в части 2

  1. Что делать, если данные не являются линейно разделимыми? Нет такой границы решения. Посещение, что такое ядра и как они могут помочь нам решить эту проблему.
  2. Необходимость регуляризации в этой модели. Как это можно сделать.
  3. Прикладные и практические аспекты SVM.

"Часть 2"