SVR
Коротко
Definition
SVR, или Support Vector Regression, — это адаптация метода опорных векторов для задач регрессии, где модель ищет максимально простую функцию, допускающую ошибки внутри заданной ε-трубки.
SVR связан с SVM, но решает не классификацию, а регрессию.
Главная идея: не пытаться идеально пройти через все обучающие точки, а найти достаточно плоскую функцию, у которой большинство ошибок лежит внутри допустимого коридора ширины .
Ошибки внутри ε-трубки не штрафуются. Штрафуются только точки, которые выходят за её пределы.
Интуиция
Обычная регрессия часто старается уменьшить среднюю ошибку по всем объектам. SVR смотрит иначе: если ошибка меньше , она считается приемлемой и не штрафуется. Если ошибка больше , штрафуется только превышение.
Это создаёт ε-трубку вокруг предсказательной функции.
Точки внутри трубки не влияют на решение напрямую. Точки на границе и за пределами трубки становятся важными — они играют роль support vectors.
Поэтому SVR часто строит решение, которое зависит не от всех обучающих объектов, а от части наиболее важных точек.
Формальное описание
SVR относится к supervised learning и решает задачу регрессии.
| Характеристика | Значение |
|---|---|
| Тип модели | Метод опорных векторов для регрессии |
| Тип обучения | Обучение с учителем |
| Задача | Задачи регрессии |
| Тип данных | Чаще всего Табличные данные |
| Целевая переменная |
Для линейного случая модель ищет функцию:
При этом она стремится:
- сделать функцию как можно более плоской;
- допустить ошибки внутри ε-трубки;
- штрафовать отклонения, которые выходят за пределы этой трубки.
Плоскость модели связана с нормой весов:
Чем меньше норма весов, тем проще и «плосче» функция.
Входы и выходы
Вход:
где:
- — число объектов;
- — число признаков.
Выход:
то есть численное предсказание.
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 пытается построить функцию и ε-трубку вокруг неё.
| Точка | Истинное значение | Предсказание | Ошибка | Внутри ε-трубки? |
|---|---|---|---|---|
| 1 | 10.0 | 10.2 | 0.2 | да, если |
| 2 | 12.0 | 11.7 | 0.3 | да, если |
| 3 | 15.0 | 13.8 | 1.2 | нет, штрафуется превышение |
Для третьей точки штраф будет не 1.2, а:
Первые две точки не штрафуются, потому что их ошибки лежат внутри допустимого коридора.
Практические замечания
Хороший workflow для SVR:
- Разделить данные на train, validation и test.
- Масштабировать признаки.
- Начать с simple baseline.
- Попробовать linear SVR.
- Если зависимость нелинейная, попробовать RBF kernel.
- Подобрать
C,epsilonиgamma. - Оценить качество через Метрики качества регрессоров.
- Проверить переобучение по train/validation.
- Сравнить с ансамблями деревьев.
В большинстве прикладных задач SVR требует более аккуратного подбора гиперпараметров, чем линейная регрессия.