Введение

Пройдя несколько определений машин опорных векторов, я понял, что:

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

Это определение может не иметь смысла прямо сейчас для вас. Все в порядке!

Просто следуйте инструкциям

Как работает машина опорных векторов?

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

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

Определите опорные векторы и нарисуйте граничные линии для обоих классов. Теперь вычисляем расстояние между желтой линией и опорным вектором. Это расстояние называется маржа, и нам нужно найти максимальную маржу. После расчета максимального запаса желтая линия становится оптимальной гиперплоскостью, и она также может работать для новых точек данных.

Когда данные нелинейны, SVM сначала преобразует данные в более высокие измерения. Давайте возьмем пример нелинейных данных в 2-мерном пространстве. Эти данные могут быть преобразованы в линейно разделимые данные в более высоких измерениях. Чтобы преобразовать данные в 3D, добавьте ось Z. Ось Z — это просто квадрат расстояния между точками в исходных 2D-данных. Ось Z рассчитывается с помощью z = x²+y²уравнения.

Добавляя дополнительное измерение, данные становятся линейно разделимыми, и теперь мы можем вычислить оптимальную гиперплоскость. Для преобразования данных в более высоком измерении у нас есть концепция ядер в библиотеке Scikit-learn.

Терминология, связанная с SVM

Для реализации SVM мы будем использовать библиотеку Scikit-learn, и понимание параметров, используемых классом SVC Scikit-learn, будет полезно. Давайте посмотрим на наиболее полезные параметры класса SVC.

Ядра:

Ядро — самый важный параметр в SVM. Он берет низкоразмерные входные данные и преобразует их в более высокое измерение. Трюк с ядром помогает построить точный классификатор. Существуют различные типы ядер, такие как полиномиальные, rbf, линейные, сигмоидальные и предварительно вычисленные.

C:

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

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

Степень:

Это применимо только к полиномиальной функции ядра. Его значение по умолчанию равно 3.

Гамма:

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

Реализация SVM:

Давайте реализуем машины опорных векторов, используя библиотеку scikit-learn. В этом руководстве мы будем использовать набор данных о раке молочной железы из пакета набора данных scikit-learn.

Прежде всего, давайте импортируем основные библиотеки, которые нам понадобятся для построения нашей модели.

Преобразование в DataFrame Panda:

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

Давайте вызовем функцию заголовка для первых 8 строк.

Из приведенной ниже информации мы предположили, что набор данных состоит из 31 столбца. Первые 30 столбцов представляют данные, а последний столбец состоит из меток, которые будут использоваться для классификации. Здесь метки доброкачественные представлены как 0 и злокачественные представлены как 1.

Для прогнозирования типа рака будут использоваться как столбцы признаков, так и целевые столбцы.

Разделение между поездами и тестами:

В машинном обучении важно протестировать модель на некоторых наборах данных. Обычной практикой в ​​машинном обучении является разделение набора данных на две части: обучающий набор и тестовый набор. Здесь мы используем правило 80–20, которое заключается в использовании 80% данных для обучения и 20% данных для тестирования.

Библиотека выбора модели предоставляет разделяемый класс для обучения и тестирования, который разделяет данные на две половины. Чтобы использовать разделенный класс train-test, сначала определите две переменные x и y. Переменная x имеет свойства данных, а переменная y содержит метки. Эти переменные будут использоваться в качестве параметров для разделения поезд-тест.

Мы определим размер теста и параметры случайного состояния. В соответствии с правилом 80–20 размер теста определяется как 0,2, а случайное состояние — как 4.

Обучение:

Теперь мы будем обучать наши данные, используя модель машины опорных векторов. Для этого мы будем использовать библиотеку scikit-learn SVM. Функция ядра RBF будет использоваться для обучения нашей модели SVM.

Прогноз:

Мы успешно обучили нашу модель, теперь мы проверим это, используя тестовый набор данных.

Оценка:

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

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

Применения SVM

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

Классификация текста:

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

Приложения для распознавания лиц:

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

Медицинские исследования:

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

Распознавание рукописных цифр:

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

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