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

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

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

Итак, как мы можем определить, какая линия лучше всего подходит для набора данных? Что ж, это линия с наибольшим отрывом 𝛾.

Давайте пройдемся по словарному запасу.

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

На рисунке 2 мы определили вектор w, который является нормалью (перпендикуляром) к желобу. В этом примере мы собираемся использовать условное обозначение желоба и линии принятия решения «улицей». Думайте о w как о весе наших моделей.

Нам нужно будет добавить еще один вектор в уравнение, называемое b, которое будет скалярным значением, подобным y-пересечению стандартной формулы y=mx+b, которая сдвигает наше окончательное уравнение.

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

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

Это краткое введение. Во второй части мы разработаем правило принятия решения для нашего классификатора с большой маржой и начнем двигаться к нашей конечной цели — обнаружению цели оптимизации SVM.

Я намереваюсь, чтобы этот пост стал исчерпывающим практическим руководством по пониманию и созданию машин опорных векторов. В конечном итоге я расскажу вам, как реализовать его с нуля, используя только python и numpy, и я надеюсь увидеть вас в следующих постах.

Продолжение в части 2

Оставайтесь с нами и не стесняйтесь писать мне в твиттере @samkirkiles или в комментариях с любыми вопросами.