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

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

После того, как вы выполнили свой первоначальный EDA и подготовили данные для считывания в модель, у вас может быть что-то похожее на изображение ниже, если оно представлено визуально:

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

А что, если набор данных, с которым вы работаете, не может быть легко сгруппирован в две отдельные группы, как показано выше? Как бы вы подошли к решению этой проблемы?

Здесь в игру вступают машины опорных векторов. Во-первых, позвольте мне определить, что такое машина опорных векторов.

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

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

На приведенной выше диаграмме SVM функционирует как линейный классификатор, устанавливая разделительную линию, называемую Разделительная гиперплоскость. Вы можете спросить, почему эта линия называется «самолетом»? Я скоро вернусь к этому.

Когда данные поступают в модель, SVM помещает значения в нужные места: синие точки слева от разделяющей гиперплоскости и черные точки справа. Если данные выглядят так, как на картинке выше, они считаются линейно разделяемыми, что означает, что данные можно легко разделить на две отдельные категории, нарисовав центральную разделяющую гиперплоскость, и они поместятся либо вправо. или слева от средней гиперплоскости. Когда данные могут быть линейно разделены, как указано выше, модель также устанавливает две пунктирные линии, которые называются опорными векторами. Модель устанавливает опорные векторы на равном расстоянии от центра, разделяющего гиперплоскость, до того места, где некоторые точки данных из каждого класса начинают пересекать опорные векторы. Расстояние, отмеченное этими двумя опорными векторами, известно как запас. Задача SVM - максимизировать этот запас, чтобы данные оставались линейно разделяемыми, а точки данных не попадали в пределы поля. Этот тип SVM известен как Hard-Margin SVM, потому что все классифицированные данные выходят за пределы поля с обеих сторон, и размер поля не меняется.

Теперь предположим, что новый набор данных, на котором мы хотим тренироваться, выглядит примерно так, как на диаграмме ниже:

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

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

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

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

Однако что, если бы мы могли сделать что-то вроде того, что показано ниже:

Ядро - это любая функция K, которая принимает два вектора и возвращает скаляр. Следовательно, «трюк с ядром» - это метод преобразования характеристик наших данных в более высокие измерения для разделения. В приведенном выше случае SVM создал 3-е измерение и преобразовал все характеристики красных квадратов в это 3-е измерение.

Помните, я сказал, что объясню, почему разделяющая линия гиперплоскости называлась «плоскостью», а не линией? На рисунке 5 показано, почему он называется плоскостью, потому что, когда он находится в пространствах более высоких измерений, плоскости - это то, что используется для разделения категорий. Это легко показать графически в трех измерениях на рисунке 5, но будет очень сложно представить визуально, если мы выйдем за пределы трех измерений.

Ниже приведены несколько типов ядер, которые можно применять в SVM:

Линейный: это когда у вас есть идеальная линейная разделимость данных, как на первом рисунке. В таком случае вам не нужно использовать SVM и можно использовать логистический классификатор. Поэтому это ядро ​​практически не используется.

Ядро на радиальной основе (RBF): это ядро ​​является наиболее часто используемым ядром и установлено по умолчанию в большинстве реализаций SVM. Это ядро ​​предназначено для работы со сферическими и круговыми данными, как показано на рисунке 4.

Полиномиальные: это ядро ​​используется в случаях, когда у нас есть нелинейные и сферические данные. Это ядро ​​используется не так часто.

Теперь давайте перечислим некоторые плюсы и минусы использования SVM и лучшие ситуации для их применения:

Плюсы использования SVM

  1. Исключительная производительность
  2. Устойчив к выбросам
  3. Эффективен в данных большой размерности
  4. Может работать с нелинейными границами
  5. Быстрые вычисления с большинством наборов данных (трюк с ядром)
  6. Низкий риск переобучения

Минусы использования SVM

  1. Модель черного ящика. Не так много параметров для настройки
  2. Может работать медленно на больших наборах данных

Лучшее приложение для SVMS

  1. Категоризация текста
  2. Классификация изображений
  3. Распознавание почерка