Основы SVM для классификации.

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

Опорные векторы - это подмножество точек данных, которые находятся на плоскости или гиперплоскости. Вся SVM вращается вокруг своих опорных векторов.

Как это работает?
Обратите внимание: - Предполагается, что данные во всей этой статье имеют двоичную классификацию.
Он пытается найти разделительную линию, которая называется границей решения (то же самое как в логистической регрессии).
Может быть бесконечное количество строк, которые могут разделять данные в разных группах.
Как SVM определяет, что граница принятия решения отличается от границы логистической регрессии - SVM использует самый широкий уличный подход - он пытается максимизировать расстояние между его положительными и отрицательными точками класса при определении границы решения или поверхности принятия решения.
Это была основная идея того, что делает SVM.

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

Найдя пунктирную линию, которая действует как разделяющая поверхность в SVM, мы можем найти отрицательную и положительную плоскости, как показано на Изображение 1.2.

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

Почему большие поля?
Более широкие поля обеспечивают меньшее переоснащение модели - небольшое изменение данных поезда не повлияет на производительность модели.
Кроме того, точки, которые близки к границе принятия решения, обычно имеют 50% -ную вероятность попадания в определенный класс, что, в свою очередь, делает модель неопределенной. Максимизация маржи преодолевает эту проблему и делает модель надежной.

Как найти самолет?

  • Геометрически:

Разделите два класса, нарисуйте выпуклую оболочку так, чтобы все точки были либо внутри, либо на многоугольнике
Найдите самую короткую линию, соединяющую корпуса
Разделите линию пополам на 2 равные части. - плоскость, которая делит линию пополам, является поверхностью принятия решения.

  • Математически:

Предположим, мы нашли плоскость π, которая разделяет данные, как показано на Изображение 1.4.

Плоскость π +, определяющая плоскость положительного класса, и плоскость π-, определяющая плоскость отрицательного класса

W - перпендикуляр ко всей плоскости.

Мы выбрали две другие гиперплоскости так, чтобы обе были равноудалены и параллельны плоскости π, π + и π-.

Для простоты и удобства возьмем k = 1

(любое число даст тот же результат)
Ограничения для выбора гиперплоскостей:

Пусть расстояние между двумя плоскостями π- и π + равно «d», у нас есть точка X0 на плоскости π- .
Мы хотим найти расстояние «d» поля, обратите внимание, что «d» является скаляром.
Вот почему мы не можем напрямую сложить X0 с d, чтобы получить маржинальное расстояние.
Для этого нам придется преобразовать скаляр «D» в вектор.
Из уравнения плоскости π + мы имеем перпендикуляр к плоскости
, который равен «W».

Получим единичный вектор W, u = w / || w ||

Поскольку «u» является единичным вектором «W», его величина будет 1, но она будет в том же направлении, что и «W »
Умножив u и d, мы получим вектор« h »с величиной, равной расстояние «d» поля и направления = «W»
h = d. u

h = d .W / || W || _ _ _ _ Используя значение u

Итак, h - это вектор, который имеет ту же величину, что и поле.
Давайте добавим вектор h в наш вектор X0,

Получаем расстояние d = 2 / || W ||
Чтобы максимизировать его, нам придется взять меньшую норму, чтобы получить больший запас.
И наоборот, мы бы минимизировали || W || / 2

Как найти класс для неизвестной точки данных:
Давайте рассмотрим вектор Xi, чтобы определить, к какому классу он принадлежит.

Умножение на значения Yi с обеих сторон

Данные реального мира:
В большинстве случаев данные реального мира не подчиняются линейному разделению. Как показано на рисунке ниже, для точек на поле - P1, P2 и P3
Предположим, что длина поля равна 2, а P3 находится на расстоянии 1,5.

Перепишите P2 и P1 относительно 1
P1: 1–0,5 = 0,5 (мы получаем 0,5, которая становится нашей новой переменной ξ (Zeta)
P2: 1–1,5 = 0,5 (получаем 1,5, что равно ξ для P2)
P3: 1–2,5 = -1,5 (получаем 2,5, что соответствует ξ для P3)

Таким образом, Новая переменная ξ (переменная резервирования) будет иметь значение «0» для всех правильно классифицированных точек и будет ›0 для неправильно классифицированных точек. br /> По мере увеличения ξ точка находится дальше от правильной гиперплоскости в неправильном направлении.

Формулировка SVM теперь выглядит следующим образом:
Первоначально:

C является гиперпараметром (параметром регуляризации) Soft SVM
и всегда имеет значение ›0;
C помогает избежать ошибок классификации.
C увеличивает, оптимизатор выберет гиперплоскость меньшего поля - он дает больше импульсов для совершения ошибок, поэтому чрезмерная подгонка
C уменьшает, оптимизатор выберет гиперплоскость с большими границами - это делает модель не подходящей - модель с высоким смещением.

Убыток:

Функции потерь используются для наказания за неправильную классификацию при моделировании.
Потери на шарнирах используются для классификации максимальной маржи и поэтому являются функцией потерь SVM.

Опять же, еще одно отличие от логистической регрессии: ›SVM использует потерю петли, а Log Reg использует логистическую потерю.
Потеря петли прямолинейна от -∞ до 1, а затем становится равной 0. < br /> Это означает, что если что-то классифицировано правильно, оно будет иметь 0 штрафа.
Для ξ ›= 1 потеря петли = 0 и ξ‹ 1 тогда потеря петли = 1- ξ
Итак, потеря петли = макс (0, 1-ξ)

Из вышеизложенного можно сделать следующий вывод

Двойная форма SVM:
Зачем нам нужна двойная форма, потому что в мягком поле SVM часто упоминается как «Первичная форма» - мы не можем работать с матрицей сходства ( отображение признаков), двойная форма может принимать матрицу подобия для обеспечения прогнозов.

Двойная форма задачи оптимизации содержит XiT.Xi (Xi Transpose Xi), который заботится о отображении функций.

Двойная форма имеет α, который является множителем Лагранжа, что немного больше математики для базового понимания SVM.

В дуальной форме
- для каждого Xi мы имеем αi
- Xi встречается только в двойственной форме SVM
- f (xq) = ∑ αi yi xiT xq + b
- αi ›0 только для опорных векторов
- αi = 0 для неопорных векторов

Итак, для вычисления f (xq) имеет значение только опорный вектор à, потому что для не поддерживающих векторов в f (xq) останется только «b».

Уловка с ядром:

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

Предположим, мы должны разделить сбор данных, которые нельзя разделить линейно, в этом случае предположим, что данные в более высоком измерении (например, выбросить все точки данных в воздух - это обеспечит линейное разделение данных)

Обратите внимание на показанное изображение.
Ядро можно рассматривать как встроенное преобразование функций для SVM.

Изменив данные с 2D на 3D, мы можем увидеть, как они становятся разделенными плоскостью.

Кернелизация преобразует данные измерения d в измерение d ’, d’ ›d
Функции ядра стали использоваться в SVM в его двойной форме à, поскольку двойная форма содержит XiT Xi

Часто подобие (Xi, Xj) записывается как K (Xi, Xj) (k = функция ядра)
Замена Xi и Xj в двойной форме называется трюком ядра.
f (Xq) = ∑ αi yi K (xi, xq) + b - теперь это SVM ядра

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

Существует много доменных ядер, таких как Полиномиальное ядро, Строковое ядро, ядро ​​генома, графовое ядро ​​ и т. Д.

Ядро RBF (радиальная базовая функция):
Ядро RBF ведет себя примерно так же, как в KNN.
В ядре RBF два образца x и x ’для некоторого входного пространства определяются как

|| X-X ’|| ² - евклидово расстояние в квадрате, а σ - гиперпараметр.

Как d12: расстояние между X и X ’увеличивается, K (X, X’) уменьшается, потому что K (X, X ’) = 1 / exp ((d12) ^ 2 / 2σ ^ 2

По мере увеличения d12 (d12) ^ 2 увеличивается, что означает, что 1 / exp (d12) ^ 2 уменьшается, и, следовательно, значение ядра уменьшается.

Это означает, что ядро ​​RBF ведет себя как подобие.

So, K(X0, X) < K(X, X’) as d01 < d12

Различные случаи σ:
По мере увеличения расстояния в + ve или -ve направлении (как у нас квадрат расстояния) значение ядра уменьшается.
(Графики взяты из Google)

Nu-SVM:

Nu SVM управляет векторами ошибок и поддержки.
В Nu SVM параметром регуляризации является Nu, а не C, как в мягкой SVM.

Nu - это верхняя граница доли ошибки и нижняя граница доли опорных векторов.
Это означает, что, если мы не хотим, чтобы ошибка в прогнозировании превышала 10%, то наше nu = 0,1, если ошибка может быть минимум 1 %, тогда nu = 0,01

Теперь давайте рассмотрим пример, где nu = 0,01
Таким образом, не допускается никаких ошибок ‹= 1%
Нет векторов поддержки› = 1%

Если нет точек данных = 1,00,000

Тогда опорные векторы будут больше или равны 1000, что является очень большим числом.

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

Вывод:

  • SVM полезны как для линейно разделимых, так и для нелинейно разделимых данных.
  • Использование матрицы сходства двойной формы (отображение признаков) может быть рассмотрено для SVM.
  • Преобразование функций и разработка функций в SVM заменены на кернелизацию, поэтому она заменяет сложную часть исследования данных.
  • SVM хорошо работает с более высокими измерениями, поскольку сама SVM преобразует данные в более высокие измерения для прогнозирования результатов.
  • Он имеет очень небольшое влияние на выбросы, поскольку он учитывает только опорные векторы для обучения модели, за исключением RBF с меньшим α, поскольку он ведет себя как KNN с маленьким k, поэтому на него могут влиять выбросы.
  • Мы не можем получить важность функции в SVM; однако мы можем сделать выбор функции вперед.
  • Модель не очень интерпретируема, за исключением линейной SVM.
  • Однако SVM требует больше времени на обучение - поэтому обычно с большими данными SVM не рекомендуется.
  • Если количество поддерживающих векторов в SVM велико, то низкая задержка не может быть достигнута.

Кредиты:

  1. Курс прикладного искусственного интеллекта
  2. MIT Лекции по SVM
  3. Учебник по SVM Александр КОВАЛЬЧИК

Спасибо за прочтение. :)