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

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

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

По мере увеличения количества элементов размеры гиперплоскости также увеличиваются. Когда имеется N объектов, результирующая гиперплоскость будет иметь размер n-1.

После того, как SVM найдет гиперплоскость, он попытается максимизировать запас. Здесь запас в том смысле, что расстояние до ближайших точек данных (также известных как опорные векторы) от гиперплоскости. Ориентация и положение гиперплоскости сильно зависят от ближайших точек данных.

У вас может возникнуть вопрос: «Зачем нужно максимизировать маржу?», эта максимальная маржа дает некоторое подкрепление, которое помогает модели классифицировать будущие точки данных с большей уверенностью.

Как работает SVM, когда в наборе данных есть выбросы?

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

SVM на нелинейных точках данных

До сих пор мы видели примеры на линейных точках данных. Посмотрите на пример ниже, вы можете представить, как будет выглядеть гиперплоскость? Как вы думаете, можно ли классифицировать эти точки данных с помощью SVM?

Да, это возможно с помощью функции Ядро. Проще говоря, ядра - это математические функции, переданные в SVM в качестве параметра. Ядра принимают точки входных данных и преобразуют их в требуемую форму для SVM, чтобы найти гиперплоскость.

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

Давайте посмотрим, как это работает на нашем примере,

Параметры SVM

Если вы погуглите «sklearn SVM», вы найдете документацию для Scikit, изучите модель SVM. Там вы можете увидеть подробную информацию о параметрах, переданных в SVM. Позвольте мне представить три основных параметра, которые следует учитывать.

  1. Ядра: как мы видели ранее, функция ядра - это параметр, который необходимо передать в соответствии с линейностью наших точек данных. Обратитесь к документации sklearn, чтобы узнать о различных доступных функциях ядра и их использовании.
  2. C (Регуляризация): контролирует компромисс между гладкостью границы решения и правильностью классификации. когда c высокий, он правильно классифицирует все точки данных, также есть вероятность переобучения.
  3. Гамма: определяет степень влияния каждой обучающей выборки на границу принятия решения. то есть, когда гамма выше, близкие точки будут иметь большое влияние, а низкая гамма означает, что далекие точки также будут учитываться для получения границы решения

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

Прежде всего о преимуществах

  1. Параметр регуляризации помогает избежать переобучения.
  2. Уловки с ядром помогают классифицировать как линейные, так и нелинейные данные.
  3. SVM использует выпуклую оптимизацию, которая обеспечивает глобальный минимум результата.
  4. SVM также поддерживает полу-контролируемое обучение.

Давайте посмотрим на недостатки

  1. В целом SVM медленнее при обучении и прогнозировании.

Это единственный недостаток, который я обнаружил. Если вы знаете какой-либо другой, пожалуйста, ответьте (прокомментируйте) на эту историю.

Надеюсь, теперь у вас есть четкое представление об алгоритме SVM. Аплодируйте и делитесь с друзьями !!!