В этой статье мы собираемся изучить, что такое SVM? Какую именно проблему SVM пытается решить? Как получить оптимальную гиперплоскость? Каковы важные термины? Каковы плюсы и минусы SVM? Чтобы полностью понять ответы на эти вопросы, нам нужно заглянуть под капот и изучить математику, лежащую в основе SVM, и понять, как они работают.
Машины опорных векторов, так называемые SVM, представляют собой алгоритм обучения с учителем, который можно использовать для задач классификации и регрессии, как классификация опорных векторов (SVC) и регрессия опорных векторов (SVR). Он используется для небольших наборов данных, так как обработка занимает слишком много времени. В этом наборе мы сосредоточимся на SVC.
SVM основан на идее поиска гиперплоскости, которая лучше всего разделяет функции на разные домены.
Важная терминология
- Точки опорного вектора.Ближайшие к гиперплоскости точки называются точками опорного вектора.
- Поля. Расстояние векторов от гиперплоскости называется полями.
- Ядро. Ядро — это функция, которая используется для сопоставления точек данных более низкой размерности с точками данных более высокой размерности. Поскольку SVR выполняет линейную регрессию в более высоком измерении, эта функция имеет решающее значение. Существует много типов ядер, таких как полиномиальное ядро, гауссовское ядро, сигмовидное ядро и т. д.
- Гиперплоскость. В методе опорных векторов гиперплоскость — это линия, используемая для разделения двух классов данных в более высоком измерении, чем фактическое измерение. В SVR гиперплоскость — это линия, которая используется для прогнозирования непрерывного значения.
- Граница: две параллельные линии, проведенные по обеим сторонам опорного вектора со значением порог ошибки, 𝞮(эпсилон), известны как граница. линия. Граничная линия, расположенная в положительной области, называется Положительной гиперплоскостью, а граничная линия, расположенная в отрицательной области, называется Отрицательной гиперплоскостью. Эти линии создают границу между точками данных.
Что такое опорные векторы?
Так как маржа рассчитывается с учетом только конкретных точек данных.
Основная интуиция, которую следует развить здесь, заключается в том, что чем дальше точки SV от гиперплоскости, тем выше вероятность правильной классификации точек в соответствующих областях или классах.
Точки SV очень важны при определении гиперплоскости, потому что, если положение векторов изменяется, положение гиперплоскости изменяется. Технически эту гиперплоскость также можно назвать гиперплоскостью, максимизирующей поля. Это точки, которые помогают нам создавать наши SVM.
Машины опорных векторов создают n-мерные гиперплоскости для разделения данных на основе параметров. Если данные имеют 2 переменные, то это линия, 3 — это плоскость и так далее.
Классификация по соответствующим категориям выполняется путем нахождения оптимальной гиперплоскости, которая наилучшим образом различает два класса.
Определение проблемы:
Рассмотрим задачу классификации с двумя классами. Цель состоит в том, чтобы найти гиперплоскость, которая классифицирует два класса таким образом, чтобы мы максимизировали разницу между точками.
На приведенном выше рисунке есть два класса, которые различаются по форме, в которой они изображены. Знак «+» — это набор точек с классификацией «-1», а «o» — для «+». 1 класс. Точки, окрашенные в синий и оранжевый цвета, называются опорными векторами. Вся цель машины опорных векторов состоит в том, чтобы максимизировать расстояние между двумя пунктирными линиями, то есть разделение между двумя классами, улица там как можно шире.
Интуиция:
Рассмотрим все точки в задаче опорных векторов как вектор. т. е. имеет величину и направление. Способ, которым точки классифицируются как принадлежащие положительному классу или отрицательному классу, заключается в том, чтобы взять вектор точки (x) и проецировать его на другой вектор 'w', который перпендикулярен средней линии на картинке (поэтому средняя линия будет называться срединной линией). Если это значение проекции больше, чем константа «c», то это положительный образец, в противном случае он отрицательный.
Приведенное выше уравнение можно записать как
Приведенные выше уравнения дают базовое представление о машинах опорных векторов, где любое значение, равное нулю, будет находиться на гиперплоскости.
Давайте возьмем приведенное выше уравнение и составим его для каждого положительного класса «+1» и каждого отрицательного класса «-1».
Расстояние между значениями [-1,1] — это запас, который мы пытаемся максимизировать. Чтобы сделать это математически удобным, мы вводим еще одну переменную ‘y’ и объединяем два приведенных выше уравнения в одно.
Таким образом, для любых точек на улице уравнение преобразуется в
Рассмотрим две точки на пунктирных линиях, одну с положительной стороны, а другую с отрицательной.
Нам нужно найти расстояние между двумя пунктирными линиями или улицей, как мы ее называем. Итак, давайте рассмотрим единичный вектор нормали. Поскольку мы использовали 'w' в качестве вектора нормали к срединной линии, мы возьмем его и разделим на величину, чтобы получить единичную нормаль. вектор. Пусть векторы, представляющие точки для отрицательного и положительного, равны
Обе эти точки лежат на пунктирной линии по обе стороны улицы, что означает, что разница между этими двумя точками и скалярным произведением единичной нормали будет шириной улицы.
Теперь, подставив значения для 'x+' и 'x-' в приведенное выше уравнение из уравнения 1, мы получим значение до взятия скалярного произведения для 'x+' и 'x-' с единичным вектором нормали 'w' дает
Это дает
Альтернативно это можно записать как минимизацию ‘w’
и, чтобы сделать его математически удобным, мы можем преобразовать уравнение в
Теперь, если мы используем множитель Лагранжа, чтобы максимизировать приведенное выше уравнение с ограничением в уравнении 1, мы получим
Если мы возьмем производную от «w» и «b», установим ее равной нулю и подставим обратно в уравнение 2, мы получим
Когда мы приравняем два приведенных выше уравнения к нулю и подставим их в уравнение 2, мы получим
Что при упрощении дает
Можно ясно заметить, что это уравнение зависит от скалярного произведения выборочных значений в ‘x’.
До сих пор мы говорили о линейно разделимых классах, то есть когда в наборе данных нет перекрытия точек данных. Однако в реальном наборе данных это невозможно, будут определенные точки данных, которые находятся по обе стороны, и нам нужна наша модель машины опорных векторов, чтобы принять это во внимание и по-прежнему создавать лучшую гиперплоскость.
Это достигается введением переменной резерва в традиционное уравнение метода опорных векторов. Переменная slack штрафует точки, которые не находятся на правой стороне гиперплоскости. В приведенном ниже уравнении это эта, а C — это гиперпараметр, который нам нужно настроить, чтобы указать, насколько мы штрафуем за каждую ошибку.
Приведенное выше уравнение подвергается ограничению:
Тогда все наше уравнение SVM сводится к следующему:
Гиперпараметр ‘c’ определяет, с какой маржей мы штрафуем за ошибку. Чем больше значение ‘c’, тем выше вероятность того, что модель станет классификацией с жесткой маржой.
Функция потерь, связанная с машинами опорных векторов, называется потери шарнира, так как второй член равен '0', если значение второго члена в функции максимума отрицательно и это '1', если второй член функции max равен 0.
Типы ядер:
- Линейное ядро
- Полиномиальное ядро
- Ядро радиальной базисной функции (RBF)/ядро Гаусса
Мы сосредоточимся на многочлене и ядре Гаусса, поскольку они наиболее часто используются.
Полиномиальное ядро:
В общем случае полиномиальное ядро определяется как ;
в полиномиальном ядре мы просто вычисляем скалярное произведение, увеличивая мощность ядра.
Пример:
Предположим, что изначально пространство X двумерно, так что
Xa = (a1 ,a2)
Xb = (b1 ,b2)
теперь, если мы хотим отобразить наши данные в более высоком измерении, скажем, в пространстве Z, которое является шестимерным, это может показаться
Чтобы решить эту двойную SVM, нам потребуется скалярное произведение (транспонирование) Za ^ t и Zb.
Способ 1:
традиционно мы решили бы это:
что займет много времени, так как нам придется выполнять скалярное произведение для каждой точки данных, а затем для вычисления скалярного произведения нам может потребоваться выполнить умножение. Представьте, что мы делаем это для тысячи точек данных.
Или же мы могли бы просто использовать
Метод 2:
используя трюк ядра:
В этом методе мы можем просто вычислить скалярное произведение, увеличив значение мощности. Просто не правда ли?
Ядро радиальной базисной функции (RBF)/ядро Гаусса:
Gaussian RBF (радиальная базисная функция) — еще один популярный метод ядра, используемый в моделях SVM. Ядро РБФ представляет собой функцию, значение которой зависит от расстояния от начала координат или от некоторой точки. Gaussian Kernel имеет следующий формат;
Используя расстояние в исходном пространстве, мы вычисляем скалярное произведение (подобие) X1 и X2.
Примечание. Сходство — это угловое расстояние между двумя точками.
Параметры:
- C: обратная сила регуляризации.
Поведение: по мере увеличения значения c модель получает переобучение.
По мере уменьшения значения c модель не соответствует требованиям.
2. γ : Гамма (используется только для ядра RBF)
Поведение: по мере увеличения значения ‘ γ’ модель получает переобучение.
Поскольку значение ‘ γ’ уменьшается, модель становится неподходящей.
Плюсы и минусы SVM:
Плюсы:
- Это действительно эффективно в высшем измерении.
- Эффективен, когда количество признаков превышает число обучающих примеров.
- Лучший алгоритм, когда классы отделимы
- На гиперплоскость влияют только опорные векторы, поэтому выбросы оказывают меньшее влияние.
- SVM подходит для экстремальной бинарной классификации.
минусы:
- Для больших наборов данных требуется большое количество времени для обработки.
- Не работает хорошо в случае перекрывающихся классов.
- Выбор соответствующих гиперпараметров SVM, которые обеспечат достаточную производительность обобщения.
- Выбор подходящей функции ядра может быть сложным.
Вывод
Подводить итоги:
- Машина опорных векторов позволяет классифицировать данные, которые являются линейно разделимыми.
- Если он не является линейно разделимым, вы можете использовать трюк с ядром, чтобы заставить его работать.
- Однако для текстовой классификации лучше просто придерживаться линейного ядра.
Это все для этой статьи! Спасибо за прочтение. Пожалуйста, поделитесь, если вы найдете эту статью полезной.