Введение

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

Оглавление

  1. Определение
  2. Процесс
  3. Типы ядер
  4. Терминология, используемая в svm
  5. Как реализовать на питоне
  6. Плюсы и минусы свм
  7. Вывод

Определение:

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

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

Процесс:

Определите правую гиперплоскость (Сценарий-1):Здесь у нас есть три гиперплоскости (A, B и C). Теперь определите правильную гиперплоскость, чтобы классифицировать звезду и круг.

Чтобы определить правильную гиперплоскость: «Выберите гиперплоскость, которая лучше разделяет два класса». В данном сценарии гиперсамолет «Б» отлично справился с этой задачей.

Определите правильную гиперплоскость (сценарий-2):здесь у нас есть три гиперплоскости (A, B и C), и все они хорошо разделяют классы. Теперь, как мы можем определить правильную гиперплоскость?

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

Выше вы можете видеть, что запас для гиперплоскости C высок по сравнению с A и B. Следовательно, мы называем правую гиперплоскость как C.

Типы ядер:

  1. Линейное ядро
  2. Полиномиальное ядро
  3. Ядро радиальной базисной функции (RBF)/ядро Гаусса

1. Линейное ядро: SVM или машина опорных векторов — это линейная модель для задач классификации и регрессии. Он может решать линейные и нелинейные задачи и хорошо работает для многих практических задач. Идея SVM проста: алгоритм создает линию или гиперплоскость, которая разделяет данные на классы.

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

3.Ядро радиальной базисной функции (RBF)/ядро Гаусса: в машинном обучении используется ядро радиальной базисной функции или ядро RBF. — это популярная функция ядра, используемая в различных алгоритмах обучения на основе ядра. В частности, он обычно используется в машинной классификации опорных векторов, которую можно распознать как квадрат евклидова расстояния между двумя векторами признаков.

Термины, используемые в SVM:

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

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

Как реализовать SVM в Python:

В Python scikit-learn — это широко используемая библиотека для реализации алгоритмов машинного обучения. SVM также доступен в библиотеке scikit-learn и имеет ту же структуру (библиотека импорта, создание объектов, подгонка модели и прогнозирование).

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

Постановка задачи

Чтобы правильно классифицировать новое наблюдение цветка ириса в один из 3 доступных видов, Iris-Setosa, Iris-Versicolor и Iris-Virginica, когда мы знаем измерения длины чашелистика, ширины чашелистика, длины лепестка, ширина нового цветка ириса.

Пошаговый процесс для SVM в Python с использованием библиотеки Scikit Learn:

Шаг 1. Импортируйте необходимые пакеты

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

Шаг 2. Чтение файла

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

Посмотрите на набор данных:

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

Шаг 3. Определение формы набора данных.

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

Шаг 4. Использование описать()

Мы используем функцию description(), которая дает сводную статистику данных Iris.

Шаг 5. Использование info()

Функция info () дает длину столбцов, тип данных, а также указывает, есть ли в нашем наборе данных какие-либо пропущенные значения или нет.

Шаг 6: корреляция()

Визуализация корреляции с использованием функции тепловой карты из пакета seaborn.

Шаг 7: Pairplot()

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

Шаг 8. Барплоты

Шаг 9. Указываем расположение переменных x и y

Мы разделяем данные на переменные x и y и просматриваем их форму с помощью функции формы.

Шаг 10. Разделите данные Iris на данные обучения и тестирования.

Для обучения модели мы разделяем данные на данные обучения и тестирования, используя функцию train_test_split модуля model_selection в соотношении 80:20.

Шаг 11. (a) Сопоставьте модель svc с помощью линейного ядра

Мы сопоставляем функцию svc с линейным ядром и прогнозируем новые данные (x_test) и печатаем матрицу путаницы, отчет о классификации подобранной модели.

Точность подобранной модели в приведенном выше случае равна 1.

Модель cc(b) svc с использованием полиномиального ядра:

Мы сопоставляем функцию svc с полиядром и прогнозируем новые данные (x_test) и печатаем матрицу путаницы, отчет о классификации подобранной модели.

Точность подобранной модели в приведенном выше случае составляет 97%.

Чтобы проверить надежность модели, мы используем перекрестную проверку, чтобы получить среднюю точность модели (93%), когда новые данные подходят к ней.

(c) модель svc с использованием ядра радиальной базисной функции (RBF)/гауссовского ядра:

Мы сопоставляем функцию svc с ядром rbf и прогнозируем новые данные (x_test) и печатаем матрицу путаницы, отчет о классификации подобранной модели.

Точность подобранной модели в приведенном выше случае составляет 97%.

Чтобы проверить надежность модели, мы используем перекрестную проверку, чтобы получить среднюю точность модели (97%), когда новые данные подходят к ней.

(d) модель SVC с использованием сигмовидной функции

Мы сопоставляем функцию svc с сигмовидным ядром и прогнозируем новые данные (x_test) и печатаем матрицу путаницы, отчет о классификации подобранной модели.

Точность подобранной модели в указанном выше случае составляет 30%.

Чтобы проверить надежность модели, мы используем перекрестную проверку, чтобы получить среднюю точность модели (34%), когда новые данные подходят к ней.

Шаг 12. Тестирование с новым наблюдением, фактическим классом которого является Iris-setosa.

Мы обнаружили, что все модели правильно классифицировали новое наблюдение в класс Iris-setosa, за исключением модели с сигмовидным ядром, которая классифицировала его как Iris-virginica, поскольку она имела очень низкую точность (34%) по сравнению с другими моделями.

Плюсы и минусы SVM:

Плюсы:

  1. Это действительно эффективно в высшем измерении.
  2. Эффективен, когда количество признаков превышает число обучающих примеров.
  3. Лучший алгоритм, когда классы отделимы.
  4. На гиперплоскость влияют только опорные векторы, поэтому выбросы оказывают меньшее влияние.
  5. SVM подходит для экстремальной бинарной классификации.

Минусы:

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

Вывод:

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

Github ССЫЛКА



Ссылка на Github Gist

https://gist.github.com/SRILAKSHMI-Analyst/8774302fa8aff0dd26211e9545e4c26e

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

  1. Аналитика Видья

2. К науке о данных

3. Гугл