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

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

  • Гиперплоскость должна быть как можно дальше от точек данных.
  • Узкая маржа «Гиперплоскость» приводит к неправильной классификации.
  • Наша цель – максимизировать маржу.

Как работает SVM

Простой линейный классификатор SVM работает, проводя прямую линию между двумя классами.

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

Оптимальная гиперплоскость

Маржа

  • расстояние между гиперплоскостью и ближайшими точками данных.
  • Нет – область данных
  • Большая маржа снижает вероятность неправильной классификации.

Вот некоторые плюсы и минусы использования SVM.

Плюсы

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

Минусы

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

Функции ядра

Линейный

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

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

Вот функция, определяющая линейное ядро:

f(X) = w^T * X + b

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

Полиномиальный

Полиномиальное ядро ​​не очень часто используется на практике, потому что оно не так эффективно с точки зрения вычислений, как другие ядра, и его предсказания не так точны.

Вот функция для полиномиального ядра:

f(X1, X2) = (a + X1^T * X2) ^ b

Это одно из простых уравнений полиномиального ядра, которое вы можете использовать. f(X1, X2) представляет полиномиальную границу решения, которая будет разделять ваши данные. X1 и X2 представляют ваши данные.

Гауссова радиальная базисная функция (RBF)

Одно из самых мощных и часто используемых ядер в SVM. Обычно выбор для нелинейных данных.

Вот уравнение для ядра RBF:

f(X1, X2) = exp(-gamma * ||X1 - X2||^2)

В этом уравнении гамма указывает, насколько одна точка обучения влияет на другие точки данных вокруг нее. ||Х1 — Х2|| — это точечный продукт между вашими функциями.

Сигмоид

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

Вот функция для сигмовидного ядра:

f(X, y) = tanh(alpha * X^T * y + C)

В этой функции альфа — это вектор весов, а С — значение смещения, учитывающее некоторую неправильную классификацию данных, которая может произойти.

Другое

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

Числовой пример