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

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

Прежде чем мы погрузимся в историю, я хочу указать на это

Почему SVM ???

У нас есть пара других классификаторов, так почему мы должны выбирать SVM над любым другим ??

Хорошо! Он лучше других справляется с классификацией. например, обратите внимание на изображение ниже.

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

Вот как это делает SVM

Это общий вид того, что делает SVM. Желтая пунктирная линия - это линия, разделяющая данные (в SVM мы называем эту линию «Граница решения» (гиперплоскость). ), Две другие линии (также гиперплоскости) помогают нам определить правильную границу решения.

так что, черт возьми, такое гиперплоскость?

Ответ - «линия в более чем трех измерениях» (в 1-D она называется точкой, в 2-D - линией, в 3-D - плоскостью, более 3-х - Гиперплан).

Чем гиперплоскость SVM отличается от линейных классификаторов?

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

Мы хотели бы узнать веса, которые увеличивают маржу. Итак, у нас есть гиперплоскость!

Поле - это расстояние между левой и правой гиперплоскостями.

Пероид.

Это пара примеров того, как я запускал SVM (написанный с нуля) над разными наборами данных.

Хорошо, вы поняли, что делает SVM, теперь давайте поговорим о том, как это работает ???

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

Вектор, это n-мерный объект, который имеет величину (длину) и направление, он начинается с начала координат (0,0).

Величина или длина вектора u (расстояние O-A) записывается ∥ u∥ и называется его нормой.

Направление вектора u определяется углом θ относительно горизонтальной оси и углом α относительно вертикальной оси.

Сложение и вычитание векторов

Точечное произведение векторов

Если немного поработать, мы получим ‖x‖‖y‖cos (θ) = x1y1 + x2y2.

∥x∥∥y∥cos (θ) = x⋅y

Ортогональная проекция вектора.

Почему нас интересует ортогональная проекция? Что ж, это позволяет нам вычислить расстояние между x и линией, проходящей через y (x-z).

Гиперплоскость SVM

Уравнение линии и уравнение гиперплоскости - одно и то же, это другой способ выразить одно и то же,

С обозначением гиперплоскости легче работать с более чем двумя измерениями.

Итак, теперь мы знаем, как нарисовать гиперплоскость с заданным набором данных,

Так что же дальше??

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

Как найти оптимальную гиперплоскость (желтая линия)?

если мы максимизируем запас (расстояние) между двумя гиперплоскостями, то разделив на 2, мы получим границу решения.

как нам увеличить маржу ??

Давайте возьмем только 2 измерения, мы получим уравнение для гиперлинии

w.x + b = 0, что аналогично w.x = 0 (у которого больше размеров)

если w.x + b = 0, мы получаем границу решения

→ Желтая пунктирная линия

если w.x + b = 1, то мы получаем (+) гиперплоскость класса

для всех положительных (x) точек удовлетворяют этому правилу (w.x + b ≥1)

если w.x + b = -1, то мы получаем гиперплоскость (-) класса

для всех отрицательных (x) точек удовлетворяют этому правилу (w.x + b≤-1)

Обратите внимание на эту картину.

Оба они следуют нашим правилам, так как мне выбрать максимальную маржу ???

Ответ: выберите тот, у которого минимум Величина w.

Это последняя картинка, созданная мной.

поэтому либо мы сохраняем значения w и b и продолжаем работу, либо настраиваем параметр (w и b) и продолжаем работу. Еще одна проблема оптимизации, SVM.

Регулировка параметров? Похоже на градиентный спуск, верно? Да!!!

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

Как только он будет оптимизирован, все готово!

Так что же дальше??

Прогнозирование!

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

Это все для этой истории. Надеюсь, вам понравилось и вы кое-что узнали.

мы только что говорили только о половине SVM, другая половина - о Kernals (мы поговорим об этом позже)

В следующем рассказе мы напишем этот алгоритм с нуля (без использования библиотек ML).

До тех пор

Увидимся!