Поддержка векторной машины (SVM) является дискриминационным классификатором, формально определяемым разделительной гиперплоскостью. Другими словами, с учетом помеченных данных обучения (контролируемое обучение) алгоритм выводит оптимальную гиперплоскость, которая классифицирует новые примеры. Он делает это, сводя к минимуму разницу между точками данных вблизи гиперплоскости.
Функция стоимости SVM стремится аппроксимировать логистическую функцию кусочно-линейной. Этот алгоритм ML используется для задач классификации и является частью поднабора контролируемых алгоритмов обучения.
Функция затрат используется для обучения SVM. Минимизируя значение J (theta), мы можем гарантировать, что SVM является настолько точным, насколько это возможно. В уравнении функции cost1 и cost0 относятся к стоимости для примера, где y = 1, и стоимости для примера, где y = 0. Стоимость для SVM определяется функциями ядра (подобия).
### Ядра
Полиномиальные функции, возможно, дорогостоящие вычисления и могут замедлить время работы с большими наборами данных. Вместо добавления более многочленных функций добавьте «ориентиры», против которых вы проверяете близость других точек данных. Каждый член учебного набора является ориентиром. Ядро - это «функция подобия», которая измеряет, насколько близко вход к определенному маркеру.
### Большой классификатор маржи
SVM найдет линию (или гиперплоскость в более общем случае), которая разбивает данные с наибольшим запасом. Хотя выбросы могут влиять на линию в одном направлении, достаточно небольшое значение C будет обеспечивать регуляризацию. Эта новая регуляризация работает одинаково с 1 / \\ lambda, как видно из линейной и логистической регрессии, но здесь мы модифицируем компонент затрат.
#### Дополнительная информация:
[Курс Эндрю Нг](https://www.coursera.org/learn/machine-learning/) [Автономная лекция](https://www.youtube.com/watch?v=1NxnPkZM9bc) [SVM в Википедии](https://en.wikipedia.org/wiki/Support_vector_machine)
Ниже приведен код, написанный для обучения, прогнозирования и нахождения точности для SVM в python. Это делается с помощью Numpy, однако мы также можем писать с помощью scikit-learn только в вызове функции.
```Python
import numpy as np
class Svm (object):
"""" Svm classifier """
def __init__ (self, inputDim, outputDim):
self.W = None
# - Generate a random svm weight matrix to compute loss #
# with standard normal distribution and Standard deviation = 0.01. #