Регрессия опорных векторов (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 — это мощная и гибкая модель регрессии, которая может решать широкий спектр задач регрессии. Его способность моделировать нелинейные отношения, устойчивость к выбросам и эффективное использование памяти делают его популярным выбором для многих приложений машинного обучения.
Комментарии приветствуются!