Вы, должно быть, немного знаете о классификаторах машинного обучения, верно? Основная цель - разделить обучающие примеры, относящиеся к разным классам. Например, если у нас есть рост и вес людей в целом, и мы хотим, чтобы наш алгоритм отличал детей от взрослых, мы бы использовали правильную комбинацию роста и веса, чтобы сопоставить возраст человека и прогнозировать в соответствии с этим, правильно ? Что ж, есть разные способы сделать это, например, логистическая регрессия, наивно-байесовская классификация, деревья решений, K ближайших соседей и многие другие. В этом блоге мы подробно рассмотрим еще один из этих методов, называемый классификатором опорных векторов. Любите название? Думаю, не слишком много. Но я обещаю вам, что вы это сделаете к концу этого блога.

Предположим, человек кладет на стол перед вами шары двух разных цветов: розового и зеленого. Затем он дает вам палочку для разделения двух цветов. Вы подчиняетесь и вставляете палку следующим образом:

Тогда почему бы и нет? Потому что мы хотим разделить их как можно лучше. В этом разница между двоичным логистическим регрессором и классификатором опорных векторов. Логистический регрессор просто дает вам допустимую границу решения, но классификатор опорных векторов дает вам лучшую границу принятия решения, которая есть… или, если вы хотите получить немного больше технических знаний, оптимальную гиперплоскость. Оптимальная гиперплоскость обычно предпочтительнее, потому что она дает низкую ошибку обучения, а также низкую ошибку обобщения.

Однако мы действительно хотим выяснить, как классификатор опорных векторов может узнать, какая гиперплоскость является оптимальной? Ответ прост:

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

Теперь пусть наша оптимальная гиперплоскость находится на расстоянии b от нашей исходной точки, и пусть w будет ее нормальным вектором, тогда для любой точки x на плоскости ее расстояние от начало координат по нормали w должно быть равно b, поэтому уравнение оптимальной гиперплоскости имеет следующий вид:

Теперь, взяв некоторый запас «m» и масштабируя его до 1 для простоты, мы получаем уравнение опорных гиперплоскостей:

Теперь у нас есть n обучающих примеров, каждый из которых имеет размерность D, имеет метки класса y = 1 или y = -1, и наши примеры линейно разделимы. Также для расчета запаса мы рассчитываем расстояние между двумя опорными гиперплоскостями.

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

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

Итак, наш лагранжиан оказывается:

Как вы, возможно, догадались, это была основная задача оптимизации, и чтобы преобразовать ее в двойную задачу оптимизации, мы подставляем значение w обратно в лагранжиан, а затем максимизируем его сейчас, чтобы чтобы получить значение λ. Сделав некоторую алгебру, мы получим:

Следовательно, мы вычислили нашу Оптимальную гиперплоскость для линейно разделимых классов. Но что, если человек поставит розовый шар как таковой:

Как показано на приведенной выше анимации, наличие выброса может изменить границу вашего решения и привести к неправильной классификации многих примеров как y = -1, несмотря на то, что они ближе к y = 1 или наоборот. Это недостаток описанной выше классификации жесткой маржи, т.е. он очень чувствителен к выбросам. Чтобы решить эту проблему, нам требуется классификация мягкой маржи. В нем мы позволяем ошибочно классифицировать некоторые примеры из-за компромисса между смещением и дисперсией.

Математически мы ослабляем ограничение, вводя новую переменную запаса ξ. Итак, теперь ограничение:

А наша функция Loss выглядит так:

Здесь роль C намного больше, чем кажется на первый взгляд. C - это приблизительная мера того, насколько мягким классификатором маржи является SVC, т. Е. сколько ошибок в классификации допустимо. Итак, когда C увеличивается, наш классификатор более либерален в отношении неправильной классификации. Теперь, когда мы объединяем функцию потерь и ограничение, мы получаем безусловную функцию потерь:

Что ужасно напоминает Hinge Loss. Таким образом, веса можно легко вычислить с помощью градиентного спуска.

А что, если ни при каких обстоятельствах классы нельзя разделить линейно без неправильной классификации множества примеров?

В таких случаях мы проецируем пространство признаков в пространство признаков более высокого измерения, так что примеры в этом пространстве признаков линейно разделяются.

В приведенном выше примере пространство признаков было спроецировано из 2D в 3D, т.е. (x, y) в (x, y, z). Итак, зеленые точки, имеющие большую Z, поднялись по оси Z больше, чем розовые точки, как показано, и, таким образом, плоскость смогла разделить два класса. Это легендарный «трюк с ядром». Этот трюк превращает классификатор опорных векторов в машину опорных векторов.

Функция, которая сопоставляет пространство признаков более низкой размерности с пространством признаков более высокой размерности, называется Ядро. Есть много разных типов ядер, которые можно использовать в зависимости от требований:

  1. Гауссовское ядро ​​RBF:

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

2. Полиномиальное ядро:

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

3. Ядро Лапласа.

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

4. Сигмовидное ядро ​​.

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

Интересные факты:

  • Поскольку самые близкие примеры помогают в построении граничных гиперплоскостей, они действуют как опоры для оптимальной гиперплоскости. Если их сместить, сместится и сама оптимальная гиперплоскость. Следовательно, их векторы положения называются опорными векторами. Отсюда и название алгоритма. Представьте себе это сейчас?
  • RBF в гауссовском ядре RBF означает радиальную базисную функцию и позволяет обычному гауссовскому ядру применяться к данным в более чем двух измерениях.

Использованная литература: