SVM-регрессия

Материал из MachineLearning.

Перейти к: навигация, поиск
Статья написана с использованием LLM ChatGPT 5.6 Terra и проверена участником А.Ю.Почтарев 18 июля 2026

Промпт приводится полностью в Обсуждение:SVM-регрессия


Содержание

Регрессия методом опорных векторов (SVM-регрессия, англ. support vector regression, SVR) — метод обучения с учителем для предсказания числовой целевой переменной. Это регрессионный вариант метода опорных векторов (SVM). В наиболее распространённой постановке, называемой \varepsilon-SVR, алгоритм ищет функцию, которая как можно более гладка и при этом допускает отклонение предсказания от обучающего ответа не больше заданной величины \varepsilon. Отклонения за пределами этой «трубки» штрафуются линейно.[1]

SVR применяют, когда нужно построить зависимость между признаками и непрерывной величиной: например, прогнозировать цену, потребление энергии, физическое измерение или остаточный срок службы оборудования. Нелинейные зависимости моделируются посредством ядерного метода, поэтому модель может быть нелинейной в исходных признаках, оставаясь линейной в некотором признаковом пространстве. Как и другие SVM, SVR опирается на регуляризацию и решается как выпуклая задача квадратичного программирования; для фиксированных гиперпараметров это означает отсутствие локальных минимумов целевой функции.[1]

Постановка задачи и мотивация

Пусть дана обучающая выборка

\mathcal D=\{(x_i,y_i)\}_{i=1}^{n},\qquad x_i\in\mathbb R^p,\quad y_i\in\mathbb R,

где x_i — вектор признаков, а y_i — известный числовой ответ. Требуется построить функцию f, которая хорошо предсказывает y для новых объектов из того же распределения. В линейном случае

f(x)=w^{\mathsf T}x+b,

где w — вектор весов, b — свободный член.

В обычном методе наименьших квадратов штрафуется любая ненулевая ошибка. В \varepsilon-SVR ошибки до \varepsilon считаются практически несущественными. Используется \varepsilon-нечувствительная функция потерь (англ. \varepsilon-insensitive loss):

L_{\varepsilon}(y,f(x))=\max\{0,\,|y-f(x)|-\varepsilon\}.

Геометрически это соответствует трубке ширины 2\varepsilon вокруг графика f. Объекты внутри трубки не вносят вклад в эмпирическую ошибку; для объекта с большей ошибкой важна только часть отклонения, выходящая за её границу. Такая функция потерь растёт линейно, а не квадратично, поэтому одиночные большие выбросы влияют на критерий слабее, чем при квадратичной потере, но не перестают влиять совсем.[1]

Одной только малой ошибки на обучающей выборке недостаточно: сложная функция может переобучиться. В линейной модели величина ||w|| служит мерой её сложности: меньшая норма соответствует более «плоской» функции. SVR совместно минимизирует сложность и ошибки за пределами трубки.

\varepsilon-SVR

Прямая задача оптимизации

Для допуска нарушений вводятся неотрицательные переменные \xi_i и \xi_i^*. Они измеряют соответственно превышение верхней и нижней границ трубки. После отображения признаков \varphi(x) в некоторое пространство признаков минимизируется величина

\min_{w,b,\xi,\xi^*} \frac{1}{2} ||w||^2 + C \sum_{i=1}^{n}(\xi_i+\xi_i^*)

при ограничениях

y_i-w^T\varphi(x_i)-b \leq \varepsilon+\xi_i

w^T\varphi(x_i)+b-y_i \leq \varepsilon+\xi_i^*

\xi_i \geq 0,\quad \xi_i^* \geq 0,\quad i=1,\ldots,n

Параметр C > 0 задаёт компромисс между шириной трубки, гладкостью функции и наказанием за нарушения:

  • при большом C модель сильнее стремится объяснить обучающие данные и обычно имеет меньшую регуляризацию;
  • при малом C важнее малая норма w, поэтому модель может быть более простой, но недообученной;
  • большее \varepsilon делает трубку шире и, как правило, уменьшает число опорных векторов, однако может скрыть значимые для задачи ошибки.

Эквивалентная запись критерия без явных переменных \xi показывает его смысл:

\min_{w,b} \frac{1}{2} ||w||^2 + C \sum_{i=1}^{n} L_{\varepsilon}(y_i,w^T\varphi(x_i)+b)

Двойственная задача и опорные векторы

Для ядровой SVR обычно решают двойственную задачу. Она выражает результат только через попарные значения ядра K(x_i,x_j)=\varphi(x_i)^T\varphi(x_j). Максимизируется величина

\max_{\alpha,\alpha^*} -\frac{1}{2} \sum_{i=1}^{n}\sum_{j=1}^{n}(\alpha_i-\alpha_i^*)(\alpha_j-\alpha_j^*)K(x_i,x_j) - \varepsilon \sum_{i=1}^{n}(\alpha_i+\alpha_i^*) + \sum_{i=1}^{n}y_i(\alpha_i-\alpha_i^*)

при ограничениях

\sum_{i=1}^{n}(\alpha_i-\alpha_i^*)=0

0 \leq \alpha_i \leq C,\quad 0 \leq \alpha_i^* \leq C,\quad i=1,\ldots,n

После нахождения множителей Лагранжа прогноз записывается как

f(x)=\sum_{i=1}^{n}(\alpha_i-\alpha_i^*)K(x_i,x)+b.

Объекты, для которых \alpha_i-\alpha_i^*\ne0, называются опорными векторами. Именно они определяют итоговую функцию; точки строго внутри \varepsilon-трубки обычно имеют нулевые коэффициенты и не входят в сумму. Это свойство даёт разреженное представление модели, хотя на шумных данных число опорных векторов может быть большим.[1]

Ядра и нелинейные зависимости

Отображение \varphi не требуется вычислять явно. Достаточно выбрать ядро — симметричную положительно полуопределённую функцию, для которой существует скалярное произведение в некотором признаковом пространстве. Это и есть ядерный трюк (англ. kernel trick).

Часто используются следующие ядра:

  • линейное: K(x,z)=x^{\mathsf T}z; подходит, когда зависимость близка к линейной или число признаков очень велико;
  • полиномиальное: K(x,z)=(\gamma x^{\mathsf T}z+r)^d; учитывает взаимодействия признаков ограниченной степени;
  • радиально-базисное (RBF, гауссово): K(x,z)=\exp(-\gamma||x-z||^2); задаёт локальное сходство объектов и является распространённой отправной точкой для нелинейной SVR.

Здесь \gamma>0, r и d — гиперпараметры. У RBF-ядра большое \gamma означает малый радиус влияния отдельной точки и повышает гибкость модели; слишком большое значение может привести к переобучению. Выбор ядра — не автоматическое доказательство нелинейности данных: его, как и значения C и \varepsilon, проверяют на данных, не использованных при обучении.[1]

Обучение, выбор модели и оценка качества

Матрица ядра имеет размер n\times n, поэтому хранение всех её элементов требует квадратичной по n памяти. Решение полной двойственной задачи также может быть вычислительно затруднительно на очень больших выборках. Практические реализации используют специализированные методы декомпозиции задачи квадратичного программирования: на каждом шаге оптимизируется небольшой рабочий набор коэффициентов. Такие подходы лежат в основе распространённых библиотек SVM, включая LIBSVM.[1]

Практический порядок работы обычно таков:

  1. Отделяют тестовую выборку, которую не используют ни для подбора параметров, ни для предварительной обработки.
  2. Преобразуют числовые признаки к сопоставимому масштабу, например стандартизируют. Для RBF- и полиномиального ядер это особенно важно, поскольку расстояния и скалярные произведения зависят от масштаба признаков.
  3. При необходимости масштабируют и целевой признак y; метрики затем считают после обратного преобразования предсказаний.
  4. На обучающей части подбирают ядро и параметры C, \varepsilon, а для RBF также \gamma. Для этого применяют перекрёстную проверку (англ. cross-validation) или выделенную проверочную, то есть отложенную, выборку (англ. hold-out validation).
  5. Оценивают окончательную модель на тестовых объектах заранее выбранной метрикой, например MAE, RMSE или R^2. Метрика должна соответствовать стоимости ошибок в прикладной задаче.

Параметры следует подбирать вместе: например, эффект \gamma для RBF-ядра зависит от масштаба признаков и от C. Все преобразования — заполнение пропусков, масштабирование, кодирование категорий — обучают только на каждой обучающей части разбиения и затем применяют к соответствующей проверочной части. Иначе возникает утечка данных (англ. data leakage) и оценка качества оказывается чрезмерно оптимистичной.

Для очень больших наборов данных полная ядровая SVR часто непрактична. Возможные альтернативы зависят от задачи: линейная SVR, если линейность приемлема; приближённые ядерные методы; либо другие регрессионные модели. Это инженерное решение следует принимать по проверяемому качеству, времени обучения, времени предсказания и требованиям к объяснимости, а не по названию алгоритма.

Свойства, преимущества и ограничения

К преимуществам SVR относят выпуклую постановку задачи, возможность использовать нелинейные зависимости через ядра и часто разреженную форму предсказателя. \varepsilon-нечувствительная потеря явно выражает допустимую точность измерения: если ошибки меньше \varepsilon действительно несущественны, этот параметр имеет предметную интерпретацию.

Ограничения метода также существенны.

  • Нелинейная SVR чувствительна к масштабам признаков и к выбору C, \varepsilon и параметров ядра; значения «по умолчанию» редко являются обоснованным выбором.
  • Ядерная матрица ограничивает применимость метода на больших выборках по памяти и времени. Стоимость одного предсказания пропорциональна числу опорных векторов.
  • Результат с нелинейным ядром обычно труднее интерпретировать, чем коэффициенты линейной регрессии; опорные векторы не являются автоматически «наиболее важными признаками».
  • Стандартная SVR возвращает точечный прогноз, но не вероятностный прогноз и не доверительный интервал. Если интервальная неопределённость необходима, её строят отдельными методами и проверяют их калибровку.
  • Линейный рост потерь делает метод менее чувствительным к большим остаткам, чем квадратичная потеря, но не защищает от произвольных выбросов в признаках или целевой переменной. Нужны анализ данных и, при необходимости, специальные робастные методы.

Варианты и связь с другими методами

\nu-SVR заменяет непосредственный выбор \varepsilon параметром \nu\in(0,1]. В исходной формулировке \nu имеет интерпретацию верхней границы доли объектов с ошибкой и нижней границы доли опорных векторов при обычных условиях невырожденности; поэтому он может быть удобнее для настройки, чем заранее заданная ширина трубки.[1]

SVR отличается от SVM-классификации прежде всего типом целевой переменной и функцией потерь. SVM-классификатор разделяет классы и обычно использует шарнирную потерю; SVR оценивает действительное число и использует \varepsilon-нечувствительную потерю. С гребневой регрессией SVR роднят регуляризация и возможность ядрового расширения, но гребневая регрессия наказывает квадраты всех остатков, тогда как SVR игнорирует ошибки внутри трубки и имеет линейный штраф за её пределами. Поэтому их качество и число активных объектов могут заметно различаться даже на одной и той же выборке.[1]

История

Теоретической основой SVM стала статистическая теория обучения Владимира Вапника. Алгоритм максимизации зазора для классификации был изложен Б. Бозером, И. Гийон и В. Вапником в 1992 году.[1] В 1996 году в материалах конференции NIPS были опубликованы работы Вапника, Голоуича и Смолы о приближении функций и оценивании регрессии методом опорных векторов, а также Друкера, Бёрджеса, Кауфман, Смолы и Вапника под названием «Support Vector Regression Machines». Последняя работа представила SVR как новую регрессионную технику и сопоставила её с бэггингом регрессионных деревьев и гребневой регрессией в признаковом пространстве.[1][1]

В дальнейшем были разработаны алгоритмы для более крупных наборов данных, варианты постановки задачи и программные библиотеки. Обзор Смолы и Шёлькопфа 2004 года систематизировал основные формулировки SVR, методы оптимизации и связь с регуляризацией.[1]

См. также

Примечания

Литература

Личные инструменты