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

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

Модель SVM - это, по сути, представление различных классов на гиперплоскости в многомерном пространстве. Гиперплоскость будет генерироваться SVM итеративно, чтобы можно было минимизировать ошибку. Цель SVM - разделить наборы данных на классы, чтобы найти максимальную граничную гиперплоскость (MMH).

Пример: SVM можно понять на примере, который мы использовали в классификаторе KNN. Предположим, мы видим странную кошку, которая также имеет некоторые особенности собак, поэтому, если нам нужна модель, которая может точно определить, кошка это или собака, такую ​​модель можно создать с помощью алгоритма SVM.

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

Алгоритм SVM можно использовать для обнаружения лиц, классификации изображений, категоризации текста и т. Д.

Типы SVM

SVM бывает двух типов:

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

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

Линейная SVM против нелинейной SVM

Понятия в SVM:

Опорные векторы - точки данных, которые находятся ближе всего к гиперплоскости, называются опорными векторами. Разделительная линия будет определена с помощью этих точек данных.

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

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

Основная цель SVM - разделить наборы данных на классы, чтобы найти максимальную маргинальную гиперплоскость (MMH), и это можно сделать в следующих двух шагах:

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

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

Ядра SVM:

Алгоритм SVM реализован с помощью ядра, которое преобразует пространство входных данных в требуемую форму. SVM использует технику, называемую трюком с ядром, в которой ядро ​​берет низкоразмерное входное пространство и преобразует его в многомерное пространство. Проще говоря, ядро ​​преобразует неразрывные проблемы в отдельные проблемы, добавляя к ним дополнительные измерения. Это делает SVM более мощным, гибким и точным. Ниже приведены некоторые типы ядер, используемых SVM.

Линейное ядро:

Его можно использовать как скалярное произведение между любыми двумя наблюдениями. Формула линейного ядра следующая:

K (x, xi) = сумма (x ∗ xi)

Из приведенной выше формулы мы видим, что произведение двух векторов, скажем, 𝑥 & 𝑥𝑖, является суммой умножения каждой пары входных значений.

Полиномиальное ядро:

Это более обобщенная форма линейного ядра, которая различает искривленное и нелинейное входное пространство. Ниже приводится формула для полиномиального ядра -

k (X, Xi) = 1 + сумма (X ∗ Xi) ^ d

Здесь d - степень полинома, которую нам нужно указать вручную в алгоритме обучения.

Гауссово ядро:

Это ядро ​​общего назначения; используется, когда о данных ничего не известно. Уравнение:

Уравнение ядра Гаусса:

Ядро радиальной базисной функции (RBF):

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

Следующая формула объясняет это математически -

K (x, xi) = exp (−gamma ∗ sum (x − xi²))

Здесь гамма колеблется от 0 до 1. Нам нужно вручную указать ее в алгоритме обучения. Хорошее значение гаммы по умолчанию - 0,1.

Поскольку мы реализовали SVM для линейно разделяемых данных, мы можем реализовать его на Python для данных, которые не являются линейно разделяемыми. Это можно сделать с помощью ядер.

Ядро RBF Лапласа

Это ядро ​​общего назначения; используется, когда о данных ничего не известно.

Уравнение:

Ядро гиперболического тангенса:

Мы можем использовать его в нейронных сетях. Уравнение:

Сигмовидное ядро:

Мы можем использовать его как прокси для нейронных сетей. Уравнение:

Функция Бесселя первого рода Ядро:

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

Ядро с радиальным базисом ANOVA:

Мы можем использовать его в задачах регрессии. Уравнение:

Плюсы и минусы SVM:

Плюсы:

· Работает очень хорошо с четкой границей разделения

· Эффективен в пространствах больших размеров.

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

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

Минусы:

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

· Он также не очень хорошо работает, когда в наборе данных больше шума, т. Е. Целевые классы перекрываются.

· SVM не дает напрямую оценок вероятностей, они рассчитываются с использованием дорогостоящей пятикратной перекрестной проверки. Он включен в связанный метод SVC библиотеки Python scikit-learn.

Метрики для SVM:

1. Матрица неточностей:

Матрица неточности - это матрица N X N, где N - количество прогнозируемых классов. Для рассматриваемой задачи у нас N = 2, и, следовательно, мы получаем матрицу 2 X 2. Вот несколько определений, которые вам нужно запомнить для матрицы путаницы:

· Точность: доля от общего числа верных прогнозов.

· Прогнозируемое положительное значение или точность: доля правильно идентифицированных положительных случаев.

· Прогнозирующая ценность отрицательного результата: доля правильно идентифицированных отрицательных случаев.

· Чувствительность или отзыв: доля действительно положительных случаев, которые правильно идентифицированы.

· Специфика: доля реально выявленных отрицательных случаев.

2. Оценка F1:

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

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

Подводя итог различию между оценкой F1 и точностью,

· Точность используется, когда более важны истинные положительные и истинные отрицательные результаты, тогда как F1-счет используется, когда важны ложные отрицательные и ложные положительные результаты.

· Точность может использоваться, когда распределение классов аналогично, тогда как F1-оценка является лучшим показателем, когда есть несбалансированные классы, как в приведенном выше случае.

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

Приложения SVM

  • Анализ настроений.
  • Обнаружение спама.
  • Распознавание рукописных цифр.
  • Проблемы распознавания изображений

Ссылка: Tutorialspoint, Analyticsvidhya, Data-чутье