Перейти к основному содержимому

Регрессия опорных векторов

Ранее мы везде настраивали коэффициенты линейной регрессии только для квадратичной функции потерь:

L(y^,y)=(y^y)2\mathcal{L}(\hat{y},y)=(\hat{y}-y)^2

Но их можно настраивать, используя и другие функции потерь, более соответствующие смыслу задачи. Например, когда для нас несущественны небольшие отклонения в пределах ε>0\varepsilon>0, а сверх этого потери возрастают линейно, то можно использовать для настройки ε\varepsilon-нечувствительную функцию потерь (ε\varepsilon-insensitive loss):

L(y^,y)={0,если y^yεy^yε,если y^y>ε\mathcal{L}(\hat{y},y)= \begin{cases} 0, & \text{если } |\hat{y}-y|\le \varepsilon \\ |\hat{y}-y|-\varepsilon, & \text{если } |\hat{y}-y| > \varepsilon \end{cases}

Регрессия опорных векторов (support vector regression) - это линейная регрессия, веса которой настраиваются, используя ε\varepsilon-нечувствительную функцию потерь с L2 регуляризацией. На графике ниже показан пример настроенной регрессии (слева) и ε\varepsilon-нечувствительная функция потерь (справа):

support-vector-regression.png

После настройки регрессии опорных векторов, все объекты обучающей выборки разделятся на опорные (support vectors) и неинформативные (non-informative vectors).

Опорные объекты:

  • прогнозируются с ошибкой по модулю больше или равной ε\varepsilon

  • и влияют на наклон прогнозирующей гиперплоскости (обозначены желтыми кружками).

В свою очередь, неинформативные объекты:

  • прогнозируются с ошибкой по модулю меньше ε\varepsilon

  • и не влияют на наклон прогнозирующей гиперплоскости (обозначены зелёными кружками), поскольку на них функция потерь равна нулю.

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

Обобщение метода (kernel trick)

Оптимизационную задачу для регрессии опорных векторов и формулу для построения прогноза можно переформулировать так, что прогноз будет зависеть только от скалярных произведений между векторами x,x\lang \mathbf{x},\mathbf{x}'\rang, а не от самих векторов x,x\mathbf{x},\mathbf{x}'. Методы, для которых выполнено это свойство, можно обобщить через ядра (применить так называемый kernel trick), заменив все скалярные произведения на другую функцию, удовлетворяющую ряду свойств и называемую ядром Мерсера:

x,xK(x,x).\lang \mathbf{x},\mathbf{x}'\rang \to K(\mathbf{x},\mathbf{x}').

Регрессию опорных векторов можно таким образом превратить из линейного метода в нелинейный относительно исходных признаков.