来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件

支持向量机模型也可以处理回归问题,假设我们能容忍 f(x)f(x)yy 之间最多有 ϵ\epsilon 的偏差,只有当 f(x)f(x)yy 之间的偏差大于 ϵ\epsilon 时才计算损失,如下图所示:

这被称为 支持向量回归(Support Vector Regression,简称 SVR),它的基本形式为:

\mathop \min_{w,b} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^m \ell_{\epsilon} (f(x_i)-y_i)

其中 ϵ\ell_{\epsilon} 表示 ϵ\epsilon-不敏感损失(ϵ\epsilon- insensitive loss)函数:

ϵ(z)={0,zϵzϵ,z>ϵ \ell_{\epsilon}(z) = \left\{ \begin{align} &0, &|z| \leq \epsilon \\ &|z| - \epsilon, &|z| > \epsilon \\ \end{align} \right.

由于回归线两侧的松弛程度可以不同,可以引入两个松弛变量,将 SVR 的基本形式改写为:

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

约束条件为:

s.t.f(xi)yiϵ+ξiyif(xi)ϵ+ξi^ξi0,ξi^0,i=1,2,,m \begin{align} s.t. &f(x_i) - y_i \leq \epsilon + \xi_i \\ &y_i - f(x_i) \leq \epsilon + \hat{\xi_i} \\ &\xi_i \geq 0, \hat{\xi_i} \geq 0, i = 1,2,\dots,m \end{align}

引入拉格朗日乘子得到拉格朗日函数:

L(w,b,ξ,ξ^,α,α^,μ,μ^)=12w2+Ci=1m(ξi+ξi^)i=1mμiξii=1mμi^ξi^+i=1mαi(f(xi)yiϵξi)+i=1mαi^(yif(xi)ϵξi^) L(w,b,\xi,\hat{\xi},\alpha,\hat{\alpha},\mu,\hat{\mu}) = \frac{1}{2} \|w\|^2 + C \sum_{i=1}^m (\xi_i + \hat{\xi_i}) - \sum_{i=1}^m \mu_i \xi_i - \sum_{i=1}^m \hat{\mu_i} \hat{\xi_i} + \sum_{i=1}^m \alpha_i(f(x_i) - y_i - \epsilon - \xi_i) + \sum_{i=1}^m \hat{\alpha_i}(y_i - f(x_i) - \epsilon - \hat{\xi_i})

w,b,ξi,ξi^w, b, \xi_i, \hat{\xi_i} 求偏导并令其为 0 得到:

{w=i=1m(αi^αi)xi0=i=1m(αi^αi)C=(αi+μi)C=(αi^+μi^) \left\{ \begin{align} w &= \sum_{i=1}^m (\hat{\alpha_i} - \alpha_i)x_i \\ 0 &= \sum_{i=1}^m (\hat{\alpha_i} - \alpha_i) \\ C &= (\alpha_i + \mu_i) \\ C &= (\hat{\alpha_i} + \hat{\mu_i}) \\ \end{align} \right .

将其带入拉格朗日函数,得到 SVR 的对偶形式:

\begin{align} \mathop \min_{\alpha,\hat{\alpha}} &\frac{1}{2} \sum_{i=1}^m \sum_{j=1}^m (\hat{\alpha_i} - \alpha_i)(\hat{\alpha_j} - \alpha_j) x_i x_j - \sum_{i=1}^m y_i(\hat{\alpha_i} - \alpha_i) + \epsilon(\hat{\alpha_i} - \alpha_i) \\ s.t. &\sum_{i=1}^m (\hat{\alpha_i} - \alpha_i) = 0 \\ & 0 \leq \alpha_i, \hat{\alpha_i} \leq C \end{align}