Введение :
Привет, ребята ... Я снова вернулся😊
Продолжая свою серию статей по машинному обучению, я собираюсь объяснить еще один параметрический алгоритм классификации - машину опорных векторов (SVM). Его также можно использовать для задач обнаружения регрессии и выбросов. Одним из преимуществ SVM является то, что он может хорошо работать даже с ограниченным объемом данных.
Что такое машина опорных векторов?
Машина опорных векторов используется для поиска гиперплоскости для разделения данных на разные классы в n-мерном пространстве (n - количество функций в наборе данных). Может быть несколько гиперплоскостей, но наша цель - найти гиперплоскость, находящуюся на максимальном расстоянии от обоих классов.
Как обсуждалось в моем предыдущем блоге, параметрические алгоритмы машинного обучения выполняются в 3 шага, как указано ниже.
1. Гипотеза
2. Функция потерь
3. Оптимизация
Гипотеза SVM. Гипотеза для SVM очевидна. Здесь мы проверяем расстояние между точкой данных и границей решения. W - вес, а X - входные данные.
Функция потерь SVM (потеря на шарнире): первый член - это потеря, когда y = 1, y ’= 0, а второй член - это потеря, когда y = 0, y’ = 1. y ’- это не что иное, как наша гипотеза, определенная ранее (предсказанные значения).
Когда y = 1, если значение гипотезы больше или равно 1, потери равны 0. Если значение гипотезы находится между 0 и 1 или отрицательно, потеря является положительной величиной и увеличивается линейно.
Когда y = 0, если значение гипотезы больше или равно -1, потери равны 0. Если значение гипотезы лежит между -1 и 0 или положительно, тогда потери положительны и линейно возрастают.
Оптимизация: используйте алгоритм оптимизации, например оптимизацию градиентного спуска, чтобы минимизировать затраты и получить идеальные параметры (вес и смещение).
В SVM есть разные гиперпараметры. Некоторые из них подробно описаны ниже.
Ядро:
SVM использует набор математических функций, которые называются ядрами.
Что делают эти ядра?
Ядра принимают входные данные и преобразуют их в требуемую форму. RBF - наиболее часто используемая функция ядра. При необходимости мы также можем использовать собственное ядро. Как мы все знаем, в реальной жизни границы принятия решений по большей части нелинейны. Эти ядра помогают нам вывести различные границы принятия решений, такие как линейная, нелинейная, полиномиальная, радиальная базисная функция (RBF) и сигмоид.
Возможно, в следующих блогах мы сможем более подробно остановиться на каждой из этих функций ядра.
Гамма:
Гамма используется, когда мы используем гауссовское ядро RBF. если вы используете линейное или полиномиальное ядро, вам не нужна гамма. Высокая гамма означает большую кривизну на границе решения, низкая гамма означает меньшую кривизну (приближается к прямой).
C:
C - еще один гиперпараметр для SVM, который контролирует ошибку. Низкий C дает низкую ошибку, высокий C дает больше ошибок (или неправильную классификацию). Но меньшее количество ошибок иногда создает сложную границу решения, что приводит к переобучению.
Реализация SVM с использованием библиотеки Scikit-learn:
Я использовал знаменитый набор данных Титаника для задачи классификации SVM. Я получил точность 93%. Пожалуйста, найдите мою ссылку GitHub для полного кода и набора данных.
Фрагмент модели
Вывод :
В этом блоге мы подробно рассмотрели алгоритм машины опорных векторов. Я обсуждал, как работает SVM и каковы разные гиперпараметры. Я добавил образец кода модели. Надеюсь, это будет полезно. В своих следующих блогах я сделаю обзор других алгоритмов машинного обучения. Пожалуйста, оставьте свой отзыв или комментарии. Это поможет улучшить мои тематические блоги.