Машины опорных векторов (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-чутье