Все о классификации опорных векторов — выше и выше

Всестороннее чтение по классификации опорных векторов

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

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

Прежде чем продолжить эту статью, я бы посоветовал вам быстро прочитать мои предыдущие статьи — Краткое и грязное руководство по регрессии случайного леса и Раскрытие истинной силы регрессии опорных векторов, чтобы разобраться в концепциях Ансамблевое обучение и SVM. Если вы считаете эту статью информативной, рассмотрите возможность аплодировать этой статье, чтобы она дошла до большего числа людей, и подпишитесь на меня, чтобы узнать больше #MachineLearningRecipes.

Машина опорных векторов под капотом

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

Хотя это важная часть исследования, в основном ее изучают исследователи, пытающиеся оптимизировать и/или масштабировать алгоритм. В этом разделе мы рассмотрим только математическую интуицию, стоящую за определением гиперплоскости и классификатора. Двумерные линейно разделимые данные могут быть разделены линией. Функция прямой линии задается выражением y=ax+b. Переименовав x в x1 и y в x2, мы получим ax1−x2+b=0.

Если мы определим x = (x1,x2) и w = (a,−1), мы получим: w⋅x+b=0. Это уравнение гиперплоскости. После определения гиперплоскости ее можно использовать для прогнозирования. Функция гипотезы h. Точка выше или на гиперплоскости будет классифицирована как класс +1, а точка ниже гиперплоскости будет классифицирована как класс -1.

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

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

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

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

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

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

Библиотеки классификации SVM

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

Во-первых, есть классификатор LinearSVC(). Как следует из названия, этот классификатор использует только линейное ядро. В классификаторе LinearSVC() мы не передаем значение ядра, поскольку оно используется только для целей линейной классификации. Scikit-Learn предоставляет два других классификатора — SVC() и NuSVC(), которые используются для целей классификации.

Эти классификаторы в основном схожи с некоторыми отличиями в параметрах. NuSVC() похож на SVC(), но использует параметр для управления количеством опорных векторов. Теперь, когда вы поняли, что такое классификация опорных векторов, мы попытаемся создать наш собственный классификатор опорных векторов. Код и другие ресурсы для построения этой регрессионной модели можно найти здесь.

Шаг 1. Импорт библиотек и выборка набора данных:

На первом этапе импортируйте библиотеки, которые мы будем использовать для реализации классификатора SVM в этом примере. Нет необходимости импортировать все библиотеки в одном месте. Python дает нам возможность импортировать библиотеки в любое место. Для начала мы будем импортировать библиотеки Pandas, Numpy, Matplotlib и Seaborn.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

В этом примере использовался набор данных Predicting a Pulsar Star. Этот набор данных содержит 16 259 ложных сигналов, вызванных РЧ-помехами/шумом, и 1 639 примеров реальных пульсаров. В каждой строке сначала перечислены переменные, а метка класса является последней записью. Используемые метки классов: 0 (отрицательный) и 1 (положительный).

Шаг 2. Исследовательский анализ и визуализация данных.

После успешной загрузки данных наш следующий шаг — изучить данные, чтобы получить представление о них. В наборе данных 9 переменных. 8 непрерывных переменных и 1 дискретная переменная. Дискретная переменная — это переменная target_class. Это также целевая переменная.

df.columns = ['IP Mean', 'IP Sd', 'IP Kurtosis', 'IP Skewness', 
              'DM-SNR Mean', 'DM-SNR Sd', 'DM-SNR Kurtosis', 'DM-SNR Skewness', 'target_class']
df.column
df['target_class'].value_counts()/np.float(len(df))
df.info()
plt.figure(figsize=(24,20))
plt.subplot(4, 2, 1)
fig = df.boxplot(column='IP Mean')
fig.set_title('')
fig.set_ylabel('IP Mean')

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

Шаг 3. Разработка признаков и подгонка модели:

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

Для обработки категориальных значений применяются методы кодирования меток. Гиперпараметр по умолчанию означает C=1.0, kernel=rbf и gamma=auto среди других параметров.

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

После выбора нужных параметров следующим шагом будет импорт train_test_split из библиотеки sklearn, которая используется для разделения набора данных на данные для обучения и тестирования. После этого SVR импортируется из sklearn.svm, и модель подгоняется к набору обучающих данных.

Шаг 4. Точность, точность и матрица путаницы:

Классификатор необходимо проверить на переоснащение и недообучение. Показатель точности обучающего набора составляет 0,9783, а точность тестового набора — 0,9830. Эти два значения вполне сопоставимы. Так что о переоснащении речи не идет. Точность можно определить как процент правильно предсказанных положительных результатов от всех предсказанных положительных результатов.

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

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

svc=SVC() 
svc.fit(X_train,y_train)
y_pred=svc.predict(X_test)
print('Model accuracy score with default hyperparameters: {0:0.4f}'. format(accuracy_score(y_test, y_pred))

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

Преимущества классификатора SVM:

Классификация опорных векторов имеет определенные преимущества, перечисленные ниже:

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

Недостатки классификатора SVM:

Некоторые из недостатков, с которыми сталкивается SVM при обработке классификации, указаны ниже:

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

На этом мы подошли к концу этой статьи. Я надеюсь, что эта статья помогла вам получить представление об идее, лежащей в основе алгоритмов SVC. Если у вас есть какие-либо вопросы или вы считаете, что я допустил какие-либо ошибки, свяжитесь со мной! Свяжитесь со мной через LinkedIn и ознакомьтесь с другими моими рецептами машинного обучения: