Использование машин опорных векторов

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

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

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

Функционирование SVM

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

Различные виды SVM

Существует две различные разновидности SVM, и каждая из них используется для определенного набора целей:

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

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

Ядро SVM

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

Линейное ядро

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

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

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

Радиальная базисная функция (RBF)

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

Общие функции ядра и их математические формулы:

Поскольку мы уже построили SVM для данных, которые могут быть линейно разделены, теперь мы можем построить его в Python для данных, которые не могут быть линейно разделены. Использование ядер — один из способов достижения этой цели.

Какие проблемы возникают при построении моделей машинного обучения в масштабе? Крис Броссман из The RealReal обсуждает сценарий своей команды для больших задач.

Реализация SVM на Python

Скачать данные для этой реализации можно по этой ссылке.

Шаг 1. Импорт набора данных

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
data= pd.read_csv(‘/home/aakash/Downloads/bill_authentication.csv’)
data.head()

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

X = data.drop(‘Class’, axis=1)
y = data[‘Class’]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)

Шаг 3. Обучение данных и прогнозирование

Мы будем использовать класс классификатора опорных векторов, сокращенно SVC в пакете Scikit-Learn SVM, поскольку мы будем выполнять задачу классификации.

from sklearn.svm import SVC
svclassifier = SVC(kernel=’linear’)
svclassifier.fit(X_train, y_train)
from sklearn.svm import SVC
svclassifier = SVC(kernel=’linear’)
svclassifier.fit(X_train, y_train)
y_pred = svclassifier.predict(X_test)

Шаг 4. Анализ эффективности модели

from sklearn.metrics import classification_report, confusion_matrix
print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))

Преимущества использования SVM

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

Заключение

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

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

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

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