Метод опорных векторов (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, 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ₚ². Теперь функция оптимизации примет вид:
- Другими возможными способами увеличения пространства признаков являются:
- с использованием полиномиальных членов более высокого порядка
- используя условия взаимодействия в форме Xⱼ * Xⱼ’ для j ≠ j’
- использование других функций предикторов
- Ядро. Ядро — это функция, которая количественно определяет сходство двух наблюдений. Например, линейное ядро, данное в приведенном ниже уравнении, количественно определяет сходство пары наблюдений с использованием корреляции Пирсона:
- Ядерный подход к расширению пространства признаков является эффективным вычислительным подходом, поскольку он сводит проблему оценки линейного классификатора к простому вычислению внутренних продуктов.
- В 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%.
Это был общий обзор основных концепций машин опорных векторов. Если вы хотите изучить его более глубоко, пожалуйста, просмотрите следующие ссылки:
Ссылки
- Введение в статистическое обучение: с приложениями в R — Глава 9
- Машины опорных векторов: основные идеи — StatQuest с Джошем Стармером
Свяжитесь со мной: