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

На приведенном выше рисунке мы ясно видим, что 2-мерная плоскость разделяет синие и красные точки. Предположим, мы получаем новую точку и нам нужно присвоить ей цвет, синий или красный. Это будет зависеть от того, на какой стороне плоскости лежит точка. Если точка находится слева, она будет принадлежать синей категории, в противном случае она будет принадлежать красной категории. Плоскость, разделяющая точки таким образом, называется гиперплоскостью.

Математически уравнение вышеупомянутой плоскости в 3-х измерениях может быть задано как -

a0 + a1x1 + a2x2 + a3x3= 0

А в p-измерении уравнение можно представить как -

a0 + a1x1 + a2x2 + a3x3 + a4x4 + ……. + апксп = 0

Любая точка может лежать по обе стороны от плоскости в зависимости от того,

a0 + a1x1 + a2x2 + a3x3 + a4x4 + ……. + apxp › 0 или ‹ 0.

Мы можем легко визуализировать гиперплоскость в 2-х или 3-х измерениях, но будет немного сложно визуализировать ее в более высоких измерениях.

Классификатор максимальной маржи

Давайте разберемся в этом, используя рисунок ниже -

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

Гиперплоскость, представленная на рисунке ниже, кажется лучшим классификатором.

Коэффициенты а0, а1, а2, а3,…. выбираются таким образом, чтобы перпендикулярное расстояние между ближайшими тренировочными точками и гиперплоскостью было максимальным. Максимальный предельный классификатор сам классифицирует точки таким образом. Он находит гиперплоскость, которая может разделять точки данных таким образом, что точки, ближайшие к гиперплоскости, находятся на максимальном перпендикулярном расстоянии от нее.

Математически задача оптимизации сводится к —

M = Перпендикулярное расстояние между ближайшими точками и гиперплоскостью.

B0,B1,B2… = Коэффициенты в уравнении гиперплоскости.

yi = {-1,+1} (в зависимости от того, красная или синяя точка)

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

Классификатор опорных векторов

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

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

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

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

Математически задача оптимизации сводится к —

M = Перпендикулярное расстояние между ближайшими точками и гиперплоскостью.

B0,B1,B2… = Коэффициенты в уравнении гиперплоскости.

yi = {-1,+1} (в зависимости от того, красная или синяя точка)

C = Настройка гиперпараметра

У этого классификатора тоже есть недостаток. Этот классификатор терпит неудачу, если точки данных линейно неразделимы. Эту проблему решают машины опорных векторов. Посмотрим, как.

Машина опорных векторов

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

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

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

А вот и машины опорных векторов, которые могут решить эту проблему.

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

Реализация SVM на питоне с помощью skearn

>>> from sklearn.datasets import make_moons
>>> from sklearn.svm import SVC
>>> import matplotlib.pyplot as plt
>>> import seaborn as sns
>>> X,y = make_moons()
>>> sns.scatterplot(X[:, 0], X[:, 1], y)

>>> svm = SVC(kernel = 'linear', C = 10)
>>> svm.fit(X,y)

Мы взяли «линейное» ядро ​​с гиперпараметром C со значением 10.

Подпишитесь на iSrajan в Facebook, Twitter, LinkedIn и Instagram.