Раскрытие истинной силы регрессии опорных векторов

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

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

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

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

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

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

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

Гиперпараметры в SVR

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

1. Гиперплоскость:

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

2. Ядро:

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

К наиболее широко используемым ядрам относятся Linear, Non-Linear, Polynomial, Radial Basis Function (RBF) и сигмовидная. По умолчанию в качестве ядра используется RBF. Каждое из этих ядер используется в зависимости от набора данных.

3. Граничные линии:

Это две линии, проведенные вокруг гиперплоскости на расстоянии ε (эпсилон). Он используется для создания поля между точками данных.

Поддержка векторной регрессии

Регрессия опорных векторов - это алгоритм обучения с учителем, который используется для прогнозирования дискретных значений. В регрессии опорных векторов используется тот же принцип, что и в SVM. Основная идея SVR - найти наиболее подходящую линию. В SVR наиболее подходящей линией является гиперплоскость с максимальным количеством точек.

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

Для больших наборов данных используется Linear SVR или SGD Regressor. Линейный SVR обеспечивает более быструю реализацию, чем SVR, но учитывает только линейное ядро. Модель, созданная с помощью регрессии опорных векторов, зависит только от подмножества обучающих данных, поскольку функция стоимости игнорирует образцы, прогноз которых близок к их целевому.

Теперь, когда у нас есть суть того, что такое регрессия опорных векторов, мы попытаемся создать наш собственный регрессор SVR. Код и другие ресурсы для построения этой регрессионной модели можно найти здесь.

ШАГ 1. ИМПОРТ НЕОБХОДИМЫХ БИБЛИОТЕК

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

#Import the Libraries and read the data into a Pandas DataFrame
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
test = pd.read_csv("california_housing_test.csv")
train = pd.read_csv("california_housing_train.csv")

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

ШАГ 2. ВИЗУАЛИЗАЦИЯ ДАННЫХ

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

#Visualise the data
plt.figure()
sns.heatmap(data.corr(), cmap='coolwarm')
plt.show()
sns.lmplot(x='median_income', y='median_house_value', data=train)
sns.lmplot(x='housing_median_age', y='median_house_value', data=train)

ШАГ 3. РАЗРАБОТКА ФУНКЦИЙ

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

#Select appropriate features
data = data[[‘total_rooms’, ‘total_bedrooms’, ‘housing_median_age’, ‘median_income’, ‘population’, ‘households’]]
data.info()
data['total_rooms'] = data['total_rooms'].fillna(data['total_rooms'].mean())
data['total_bedrooms'] = data['total_bedrooms'].fillna(data['total_bedrooms'].mean()

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

ШАГ 4. УСТАНОВКА МОДЕЛИ

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

#Split the dataset into training and testing data
import train_test_split
X_train, X_test, y_train, y_test = train_test_split(train, y, test_size = 0.2, random_state = 0)
y_train = y_train.reshape(-1,1)
y_test = y_test.reshape(-1,1)

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

# Fit the model over the training data
from sklearn.svm import SVR
regressor = SVR(kernel = 'rbf')
regressor.fit(X_train, y_train)

Здесь, в этом конкретном примере я использовал ядро ​​RBF. Остальные параметры модели оставлены без настроек по умолчанию. Как только модель соответствует обучающим данным, наша модель готова к использованию.

Преимущества регрессии опорных векторов

Хотя регрессия опорных векторов используется редко, она дает определенные преимущества, указанные ниже:

  1. Он устойчив к выбросам.
  2. Модель решения можно легко обновить.
  3. Он обладает отличными возможностями обобщения с высокой точностью прогнозирования.
  4. Его реализация проста.

Недостатки регрессии опорных векторов

Ниже перечислены некоторые из недостатков, с которыми сталкиваются машины опорных векторов при решении проблем регрессии:

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

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