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

  • Концепция гиперплоскости
  • Классификация с использованием разделяющей гиперплоскости
  • Классификатор максимальной маржи
  • Классификатор опорных векторов
  • Опорные векторные машины
  • Внедрение SVM с помощью библиотеки Python Sci-kit Learn

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

Концепция гиперплоскости

Определение. Гиперплоскость – это плоское подпространство в векторном пространстве, размерность которого на единицу меньше размера векторного пространства.

Например:
В двумерном пространстве гиперплоскость — это линия (плоское одномерное подпространство).
— В трехмерном -мерное пространство, гиперплоскость - это плоскость (плоское 2-мерное подпространство)

Математическое определение гиперплоскости:

где B₀, B₁,…..,Bₚ — параметры, а X=(X₁ strong>, X₂,….Xₚ) — это любая точка на гиперплоскости.

Теперь, если точка X не удовлетворяет приведенному выше уравнению, может быть две возможности:

Случай 1: точка X лежит на одной стороне гиперплоскости

Случай 2: точка X лежит по другую сторону гиперплоскости

Классификация с использованием разделяющей гиперплоскости

  • Основываясь на двух приведенных выше случаях, можно использовать гиперплоскость для бинарной классификации, поэтому гиперплоскость называется разделяющей гиперплоскостью.
  • Предположим, у нас есть n X p матрица данных X, содержащая n обучающих наблюдений в p-мерном пространстве:

  • Эти наблюдения относятся к одному из двух классов: -1 и 1.
  • У нас также есть тестовое наблюдение, которое мы хотим отнести к одному из двух вышеуказанных классов:

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

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

Классификатор максимальной маржи

  • Классификатор максимальной маржи — это классификатор, построенный на основе разделяющей гиперплоскости.
  • Чтобы построить такой классификатор, мы должны выбрать гиперплоскость, наиболее удаленную от обучающих наблюдений.
  • Отступ:это наименьшее (или перпендикулярное) расстояние точки данных от разделяющей гиперплоскости.
  • Разделяющая гиперплоскость, для которой отступ самый большой (т. е. гиперплоскость имеет самое дальнее минимальное расстояние до обучающих наблюдений), называется Гиперплоскостью с максимальным отступом (или Оптимальной разделяющей гиперплоскостью), а результирующий классификатор называется Классификатор максимальной маржи.
  • Теперь мы можем классифицировать тестовое наблюдение в зависимости от того, на какой стороне классификатора максимальной маржи оно находится.

  • Опорные векторы. На приведенном выше рисунке 3 обучающих наблюдения равноудалены от гиперплоскости максимального поля (2 из синего класса и 1 из фиолетового класса). Эти наблюдения лежат на границе и называются Опорными векторами, потому что они обеспечивают поддержку гиперплоскости максимальной границы в том смысле, что если их слегка сдвинуть, гиперплоскость максимальной границы также будет двигаться.
  • Важное замечание: максимальная гиперплоскость поля зависит только от опорных векторов. Если какие-либо другие наблюдения перемещаются, они не пересекают границу гиперплоскости. Таким образом, на предсказание классификатора не влияют изменения в наблюдениях, кроме опорных векторов.
  • Задача оптимизации классификатора максимальной маржи:
    (также известная как функция стоимости)

где M= ширина поля
x₁, x₂,…..,xₙ = n обучающие наблюдения
y₁, y₂,…..,yₙ = связанные метки класса (имеющие один из два класса: -1 и 1)

  • Ограничение M в приведенном выше уравнении гарантирует, что каждое наблюдение будет находиться на правильной стороне гиперплоскости при условии, что M положительно.
  • В целом, мы выбираем B₀, B₁,…..,Bₚ, чтобы максимизировать M.
  • Недостатки классификатора максимальной маржи:
  1. Такой классификатор идеально классифицирует все наблюдения и, следовательно, может быть чрезвычайно чувствительным к изменениям в отдельных наблюдениях. Другими словами, этот классификатор может подбирать данные.
  2. В некоторых случаях (например, на рисунке ниже) мы не можем разделить два класса, поскольку наша маржа является жесткой маржой, т. е. не допускает гибкости.

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

Классификатор опорных векторов

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

  • В приведенном выше классификаторе опорных векторов мягкое поле допускает несколько нарушений — наблюдения 1, 2, 7, 8, 9, 11 и 12. Из них наблюдения 1 и 8 находятся на неправильной стороне поля, тогда как наблюдения 11 и 12 находятся не на той стороне гиперплоскости.
  • Разница между жесткими полями и мягкими полями видна на рисунке ниже: –

  • Задача оптимизации классификатора опорных векторов:

где, C= неотрицательный параметр настройки
M= ширина поля
Є, Є,…..,Є = переменные Slack (они сообщают нам местоположение iᵗʰ наблюдения)
› Если Єᵢ = 0 , то iᵗʰ наблюдение лежит на правильной стороне поля
› Если Єᵢ › 0, то iᵗʰ наблюдение лежит на неправильной стороне поля
› Если Єᵢ › 1, то iᵗʰ наблюдение лежит не на той стороне гиперплоскости

  • Интерпретация параметра настройки C: Из приведенного выше уравнения видно, что C ограничивает сумму Єᵢ. Таким образом, он определяет количество и серьезность нарушений поля (и гиперплоскости), которые допустимы для классификатора.
    › По мере увеличения C поле расширяется
    › По мере C уменьшается, маржа сужается

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

  • Поскольку правило принятия решения классификатора опорных векторов основано только на небольшом количестве обучающих наблюдений (называемых опорными векторами), этот классификатор устойчив к поведению наблюдений, которые находятся далеко от гиперплоскости.
  • Недостаток классификатора опорных векторов.Они плохо работают, когда у нас нелинейные границы классов, как показано ниже: –

  • Этого можно избежать, создав машины опорных векторов.

Машины опорных векторов

  • Машины опорных векторов (SVM) — это расширение классификатора опорных векторов, которое является результатом расширения пространства признаков определенным образом с использованием ядер.
  • Расширение пространства признаков помогает учесть нелинейные границы между классами. Например, вместо подгонки классификатора опорных векторов с помощью признаков p мы могли бы подобрать его с помощью 2pпризнаков X₁, X₁², X₂, X₂²,…., Xₚ, Xₚ². Теперь функция оптимизации примет вид:

  • Другими возможными способами увеличения пространства признаков являются:
  1. с использованием полиномиальных членов более высокого порядка
  2. используя условия взаимодействия в форме Xⱼ * Xⱼ’ для j ≠ j’
  3. использование других функций предикторов
  • Ядро. Ядро — это функция, которая количественно определяет сходство двух наблюдений. Например, линейное ядро, данное в приведенном ниже уравнении, количественно определяет сходство пары наблюдений с использованием корреляции Пирсона:

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

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

  • Полиномиальное ядро. Полиномиальное ядро ​​степени d может быть задано следующим образом: –

где использование d › 1 дает гораздо более гибкую границу решения.

  • Обратите внимание, что классификатор опорных векторов — это не что иное, как SVM, использующий полиномиальное ядро ​​степени d= 1.
  • Радиальное ядро. Радиальное ядро ​​(также называемое радиальной базовой функцией (RBF)) также является популярным нелинейным ядром, используемым в SVM. Он принимает форму: -

где γ — положительная константа.

Реализация SVM с помощью библиотеки Python Sci-kit Learn

  • Теперь, когда мы поняли SVM и их работу, давайте возьмем набор данных и создадим из него классификатор с помощью SVM.
  • Здесь мы создадим задачу случайной бинарной классификации, используя метод make_classification() из Sci-kit Learn.

  • Итак, здесь мы должны присвоить любому заданному наблюдению одну из двух меток класса: 1 и 0.
  • Затем мы разделяем наш набор данных на обучающие и тестовые наборы.

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

  • Обратите внимание, что SVC() по умолчанию использует радиальное ядро (rbf). Чтобы использовать полиномиальное ядро, просто задайте для параметра ядра значение kernel = ‘poly’.
  • После этого мы делаем прогнозы на нашем тестовом наборе.

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

  • Таким образом, мы сделали прогнозы с помощью нашего классификатора опорных векторов с точностью 88%.

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

Ссылки

Свяжитесь со мной: