SVR

Коротко

Definition

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

SVR связан с SVM, но решает не классификацию, а регрессию.

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

Ошибки внутри ε-трубки не штрафуются. Штрафуются только точки, которые выходят за её пределы.

Интуиция

Обычная регрессия часто старается уменьшить среднюю ошибку по всем объектам. SVR смотрит иначе: если ошибка меньше , она считается приемлемой и не штрафуется. Если ошибка больше , штрафуется только превышение.

Это создаёт ε-трубку вокруг предсказательной функции.

Точки внутри трубки не влияют на решение напрямую. Точки на границе и за пределами трубки становятся важными — они играют роль support vectors.

Поэтому SVR часто строит решение, которое зависит не от всех обучающих объектов, а от части наиболее важных точек.

Формальное описание

SVR относится к supervised learning и решает задачу регрессии.

ХарактеристикаЗначение
Тип моделиМетод опорных векторов для регрессии
Тип обученияОбучение с учителем
ЗадачаЗадачи регрессии
Тип данныхЧаще всего Табличные данные
Целевая переменная

Для линейного случая модель ищет функцию:

При этом она стремится:

  1. сделать функцию как можно более плоской;
  2. допустить ошибки внутри ε-трубки;
  3. штрафовать отклонения, которые выходят за пределы этой трубки.

Плоскость модели связана с нормой весов:

Чем меньше норма весов, тем проще и «плосче» функция.

Входы и выходы

Вход:

где:

  • — число объектов;
  • — число признаков.

Выход:

то есть численное предсказание.

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

Как обучается

В линейном случае SVR ищет параметры и , минимизируя сложность модели и штраф за точки вне ε-трубки.

Прямая задача:

при условиях:

где:

  • — ширина допустимой ε-трубки;
  • и — slack-переменные для ошибок выше и ниже трубки;
  • — параметр штрафа за выход за пределы трубки.

Интуитивно:

  • делает модель проще;
  • штрафует большие ошибки;
  • задаёт, какая ошибка считается допустимой.

Kernel trick

Для нелинейных зависимостей SVR использует kernel trick.

Идея: вместо явного преобразования признаков в более высокоразмерное пространство модель использует функцию ядра:

Ядро измеряет похожесть объектов так, как если бы они были отображены в новое пространство признаков.

Популярные ядра:

  • linear;
  • polynomial;
  • RBF / Gaussian;
  • sigmoid.

RBF-ядро:

Параметр управляет радиусом влияния одного объекта. Большая делает влияние более локальным, маленькая — более широким.

Двойственная задача

На практике SVR часто решают через двойственную задачу с множителями Лагранжа и .

Двойственная задача:

при условиях:

После решения двойственной задачи предсказание для нового объекта записывается через ядро и обучающие объекты.

Часто для решения используется Sequential Minimal Optimization, или SMO.

Функция потерь

SVR использует ε-insensitive loss.

Для ошибки:

ε-insensitive loss:

Если ошибка по модулю меньше , loss равен нулю.

Если ошибка больше , штрафуется только превышение:

Это отличает SVR от обычной регрессии с MSE, где штрафуется каждая ненулевая ошибка.

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

Основные гиперпараметры SVR:

  • kernel;
  • C;
  • epsilon;
  • gamma;
  • degree;
  • coef0;
  • tol;
  • max_iter;
  • shrinking.

Kernel

Ядро определяет вид модели:

KernelКогда использовать
linearзависимость примерно линейная
polynomialесть полиномиальные зависимости
RBFуниверсальный вариант для нелинейных зависимостей
sigmoidиспользуется реже

C

Параметр регулирует штраф за ошибки вне ε-трубки.

Если большой:

  • модель сильнее штрафует ошибки;
  • старается лучше подогнаться под train;
  • риск переобучения выше.

Если маленький:

  • модель допускает больше ошибок;
  • решение обычно проще;
  • риск недообучения выше.

Epsilon

Параметр задаёт ширину ε-трубки.

Если большой:

  • больше ошибок считается допустимыми;
  • меньше support vectors;
  • модель проще.

Если маленький:

  • почти все ошибки начинают иметь значение;
  • больше support vectors;
  • модель может стать сложнее.

Gamma

Для RBF-ядра определяет радиус влияния одного обучающего объекта.

Если большой:

  • влияние объекта локальное;
  • модель может стать очень гибкой;
  • риск переобучения выше.

Если маленький:

  • влияние объекта широкое;
  • модель более гладкая;
  • риск недообучения выше.

Degree и coef0

Для polynomial kernel важна степень полинома degree.

Для polynomial и sigmoid kernels может использоваться coef0, который влияет на свободный член ядра.

Когда использовать

SVR стоит использовать, если:

  • задача является регрессией;
  • данных не слишком много;
  • признаки хорошо масштабированы;
  • зависимость может быть нелинейной;
  • хочется использовать kernel trick;
  • нужна модель, устойчивее игнорирующая малые ошибки внутри ε-трубки.

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

Когда не использовать

SVR может быть плохим выбором, если:

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

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

Для больших табличных задач часто практичнее использовать:

Предсказание

После обучения SVR предсказывает значение для нового объекта через support vectors.

Общая формула:

На практике в сумме реально важны только объекты с ненулевыми коэффициентами. Они и являются support vectors.

Если используется linear kernel, модель похожа на обычную линейную регрессию, но обучается с ε-insensitive loss и регуляризацией.

Метрики оценки

SVR оценивают как обычную регрессионную модель.

Основные метрики:

  • MAE;
  • MSE;
  • RMSE;
  • R²;
  • MAPE, если целевая переменная не близка к нулю.

Подробнее см. Метрики качества регрессоров.

Важно сравнивать SVR с baseline:

Типичные ошибки понимания

Путать SVR и SVM-классификатор

SVM обычно используют для классификации, а SVR — для регрессии. Идея margin похожа, но постановка задачи другая.

Думать, что ε — это ошибка модели

не является метрикой качества. Это ширина зоны, внутри которой ошибки не штрафуются при обучении.

Не масштабировать признаки

SVR очень чувствителен к масштабу признаков, особенно с RBF-ядром.

Без стандартизации один признак может доминировать в расстояниях и испортить модель.

Ставить слишком большой C

Большой заставляет модель сильно подгоняться под обучающие данные. Это может улучшить train-качество, но ухудшить обобщение.

Использовать RBF без подбора gamma

Параметр сильно влияет на гибкость модели. Неправильное значение может привести к переобучению или недообучению.

Применять kernel SVR к слишком большим данным

Kernel SVR может быть вычислительно тяжёлым на больших датасетах. Перед применением нужно учитывать масштаб данных.

Минимальный пример

Пусть есть зависимость между одним признаком и численным ответом .

SVR пытается построить функцию и ε-трубку вокруг неё.

ТочкаИстинное значениеПредсказаниеОшибкаВнутри ε-трубки?
110.010.20.2да, если
212.011.70.3да, если
315.013.81.2нет, штрафуется превышение

Для третьей точки штраф будет не 1.2, а:

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

Практические замечания

Хороший workflow для SVR:

  1. Разделить данные на train, validation и test.
  2. Масштабировать признаки.
  3. Начать с simple baseline.
  4. Попробовать linear SVR.
  5. Если зависимость нелинейная, попробовать RBF kernel.
  6. Подобрать C, epsilon и gamma.
  7. Оценить качество через Метрики качества регрессоров.
  8. Проверить переобучение по train/validation.
  9. Сравнить с ансамблями деревьев.

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

Связанные понятия