Регрессия опорных векторов (SVR) — это тип алгоритма регрессии, который использует машины опорных векторов (SVM) для выполнения регрессионного анализа. В отличие от традиционных алгоритмов регрессии, целью которых является минимизация ошибки между прогнозируемыми и фактическими значениями, SVR стремится разместить «трубу» вокруг данных таким образом, чтобы большинство точек данных попадало внутрь трубки. Цель SVR состоит в том, чтобы найти функцию с максимальным отрывом от трубки.

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

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

Чтобы реализовать SVR в Python, мы можем использовать класс SVR из модуля sklearn.svm в scikit-learn, популярной библиотеке машинного обучения Python. Вот пример кода для реализации SVR в Python:

from sklearn.svm import SVR
import numpy as np 

# Generate some sample data
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()

# Create an SVR object and fit the model to the data
clf = SVR(kernel='rbf', C=1e3, gamma=0.1)
clf.fit(X, y)

# Make some predictions with the trained model
y_pred = clf.predict(X)

# Print the mean squared error of the predictions
mse = np.mean((y_pred - y) ** 2)
print(f"Mean squared error: {mse:.2f}")

В этом примере мы генерируем некоторые выборочные данные, случайным образом выбирая 100 точек вдоль синусоидальной кривой. Затем мы создаем объект SVR с ядром RBF и некоторыми гиперпараметрами C и gamma. Мы подгоняем модель к выборочным данным и делаем некоторые прогнозы с помощью обученной модели. Наконец, мы вычисляем среднеквадратичную ошибку между предсказанными значениями и истинными значениями.

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

Реализация SVR в R

В R мы можем реализовать SVR с помощью пакета e1071, который предоставляет функцию svm для подбора машин опорных векторов. Вот пример кода для реализации SVR в R:

library(e1071)

# Generate some sample data
set.seed(1)
x <- sort(5 * runif(100))
y <- sin(x)

# Fit an SVR model to the data
model <- svm(x, y, kernel = "radial", gamma = 0.1, cost = 1000)

# Make some predictions with the trained model
y_pred <- predict(model, x)

# Print the mean squared error of the predictions
mse <- mean((y_pred - y) ^ 2)
cat(sprintf("Mean squared error: %.2f\n", mse))

В этом примере мы генерируем некоторые выборочные данные, случайным образом выбирая 100 точек вдоль синусоидальной кривой. Затем мы подгоняем модель SVR к данным, используя функцию svm из пакета e1071. Мы используем ядро ​​радиальной базисной функции (RBF) и указываем некоторые гиперпараметры гаммы и стоимости. Мы делаем некоторые прогнозы с помощью обученной модели и вычисляем среднеквадратичную ошибку между прогнозируемыми значениями и истинными значениями.

Обратите внимание, что гиперпараметры гамма и стоимость контролируют нелинейность и регуляризацию модели SVR соответственно. Эти значения можно настроить для оптимизации производительности модели в конкретном наборе данных. Кроме того, пакеты scikit-learn (Python) и e1071 (R) предоставляют множество других возможностей для настройки и тонкой настройки модели SVM.

Математика SVR

Математика регрессии опорных векторов (SVR) основана на тех же принципах, что и машины опорных векторов (SVM), с некоторыми изменениями для решения задач регрессии. Вот краткий обзор математики SVR:

  • Имея набор обучающих данных, SVR сначала преобразует входные данные в многомерное пространство признаков, используя функцию ядра. Функция ядра вычисляет сходство между двумя точками данных в исходном пространстве и отображает их в пространстве большего размера, где их легче разделить линейной гиперплоскостью.
  • Цель SVR — найти гиперплоскость в пространстве признаков, которая максимально разделяет обучающие данные, сохраняя при этом запас вокруг нее. Это делается путем решения задачи оптимизации, которая включает в себя минимизацию расстояния между гиперплоскостью и обучающими данными при максимальном запасе.
  • В SVR граница определяется как трубка вокруг гиперплоскости, а не как граница между двумя параллельными гиперплоскостями, как в SVM. Ширина трубки контролируется двумя параметрами: ε (эпсилон) и C. ε определяет ширину трубки, а C управляет компромиссом между размером поля и объемом обучающих данных, которые могут нарушать его. .
  • Задача оптимизации в SVR обычно формулируется как задача квадратичного программирования, которую можно решить с помощью методов численной оптимизации.
  • Как только гиперплоскость найдена, SVR использует ее для прогнозирования новых точек данных, вычисляя их расстояние до гиперплоскости в пространстве признаков. Расстояние преобразуется обратно в исходное пространство с помощью функции ядра для получения прогнозируемого результата.

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

Преимущества СВР

Регрессия опорных векторов (SVR) имеет несколько преимуществ по сравнению с другими моделями регрессии:

  • Нелинейность: SVR может моделировать нелинейные отношения между входными и выходными переменными, в то время как модели линейной регрессии могут моделировать только линейные отношения.
  • Устойчивость к выбросам: SVR менее чувствителен к выбросам во входных данных по сравнению с другими моделями регрессии. Это связано с тем, что процесс оптимизации в SVR рассматривает только точки данных вблизи границы решения, а не все точки данных.
  • Гибкость: SVR позволяет использовать различные функции ядра, которые можно использовать для моделирования различных типов нелинейных отношений между входными и выходными переменными.
  • Регуляризация: SVR включает член регуляризации в целевую функцию, что помогает предотвратить переоснащение и улучшить эффективность обобщения модели.
  • Эффективное использование памяти: SVR использует только подмножество обучающих данных (опорные векторы) для построения границы решения. Это приводит к более эффективному использованию памяти, что особенно полезно при работе с большими наборами данных.

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

Комментарии приветствуются!