机器学习——支持向量机基础知识

35 阅读2分钟

1、间隔与支持向量

给定训练样本集 D={(x1,y1),...,(xm,ym)},yi{1,+1}D = \{ ({\mathbf{x}_ 1},{y_1}),...,({\mathbf{x}_ m},{y_m})\} ,{y_i} \in \{ - 1, + 1\} 。其中xi\mathbf{x}_ i是向量。在样本空间中,划分超平面可以通过如下线性方程来描述:

wx+b=0\mathbf{w} ^ {\top} \mathbf{x}+b=0

其中w=(w1,...,wd)\mathbf{w} = ({w_1},...,{w_d})为法向量,决定了超平面的方向;bb为位移项,决定了超平面与原点之间的距离。划分超平面可被法向量和位移bb确定。样本空间中任意点x\mathbf{x}到超平面(w,b)(\mathbf{w},b)的距离可写为(点到平面距离公式):

r=wx+bwr = \frac{{|\mathbf{w} ^ {\top} \mathbf{x}+b|}}{{||\mathbf{w}||}}

假设超平面(w,b)(\mathbf{w},b)能将训练样本正确分类,即对于(xi,yi)D({\mathbf{x}_ i},{y_ i}) \in D,若yi=+1y_i=+1,则有wxi+b>0\mathbf{w} ^ {\top} \mathbf{x}_ i+b>0,若yi=1y_i=-1,则有wxi+b<0\mathbf{w} ^ {\top} \mathbf{x}_ i+b<0,令

wxi+b+1,yi=+1{{\bf{w}}^ \top }{{\bf{x}}_ i} + b \ge + 1,{y_ i} = + 1

wxi+b1,yi=1{{{\bf{w}}^ \top }{{\bf{x}}_ i} + b \le - 1,{y_ i} = - 1}

这个通过放缩w,b\mathbf{w},b是肯定可以做到的。距离超平面最近的几个训练样本使上式的等号成立,则这几个向量被称为“支持向量”,两个异类支持向量到超平面的距离之和为:

γ=2w\gamma = \frac{2}{{||\mathbf{w}||}}

它们被称之为“间隔”。要找到最大间隔的划分平面,也就是要找到能满足上面两个不等式约束的参数w,b\mathbf{w},b,使得γ\gamma最大,即:

maxw,b2w,s.t.yi(wxi+b)1,i=1,2,..,m.\mathop {\max }\limits_{\mathbf{w},b} \frac{2}{{||\mathbf{w}||}}, s.t.{y_i}({\mathbf{w}^\top}{\mathbf{x}_ i} + b) \ge 1,i = 1,2,..,m.

等价于:

minw,b12w2,s.t.yi(wxi+b)1,i=1,2,..,m.\mathop {\min }\limits_{\mathbf{w},b} \frac{1}{2}||\mathbf{w}||^2, s.t.{y_i}({\mathbf{w}^\top}{\mathbf{x}_ i} + b) \ge 1,i = 1,2,..,m.

这就是支持向量机(SVM)的基本型。求解可以使用拉格朗日乘子法。

2、核函数

如果训练样本不是线性可分的,那么我们就要将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。令ϕ(x)\phi (\mathbf{x})表示将x\mathbf{x}映射后的特征向量,于是在特征空间中划分超平面所对应的模型可以表示为:

f(x)=wϕ(x)+bf(\mathbf{x}) = {\mathbf{w}^\top}\phi (\mathbf{x}) + b

则有:

minw,b12w2,s.t.yi(wϕ(xi)+b)1,i=1,2,..,m.\mathop {\min }\limits_{\mathbf{w},b} \frac{1}{2}||\mathbf{w}||^2, s.t.{y_i}({\mathbf{w}^\top}{\phi (\mathbf{x}_ i)} + b) \ge 1,i = 1,2,..,m.

其对偶问题是:

maxαi=1mαi12i=1mj=1mαiαjyiyjϕ(xi)ϕ(xj)\mathop {\max }\limits_\alpha \sum\limits_{i = 1}^m {{\alpha _ i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _ i}{\alpha _ j}{y_i}{y_j}\phi {{({\mathbf{x}_ i})}^\top}\phi ({\mathbf{x}_ j})} }

s.t.i=1mαiyi=0s.t.\sum\limits_{i = 1}^m {{\alpha _ i}{y_ i}} = 0

αi0,i=1,2,...,m{\alpha _ i} \ge 0,i = 1,2,...,m

求解上式涉及到计算ϕ(xi)ϕ(xj)\phi {({\mathbf{x}_ i})^\top}\phi ({\mathbf{x}_ j}),这通常很难计算。我们可以设想这样一个函数:

κ(xi,xj)=ϕ(xi),ϕ(xj)=ϕ(xi)ϕ(xj)\kappa ({\mathbf{x}_ i},{x_j}) = \left\langle {\phi ({\mathbf{x}_ i}),\phi ({\mathbf{x}_ j})} \right\rangle = \phi {({\mathbf{x}_ i})^\top}\phi ({x_j})

xi\mathbf{x}_ ixj\mathbf{x}_ j在特征空间的内积等于它们在原始样本空间中通过函数(核函数κ(,)\kappa ( \cdot , \cdot )计算的结果。只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。

几种常用的函数:

  • 线性核:κ(xi,xj)=xixj\kappa ({x_i},{x_j}) = x_i^\top{x_j}
  • 多项式核:κ(xi,xj)=(xixj)d\kappa ({x_i},{x_j}) = {(x_i^\top{x_j})^d}
  • 高斯核:κ(xi,xj)=exp(xixj22σ2)\kappa ({x_i},{x_j}) = \exp ( - \frac{{{{\left\| {{x_i} - {x_j}} \right\|}^2}}}{{2{\sigma ^2}}})
  • 拉普拉斯核:κ(xi,xj)=exp(xixjσ)\kappa ({x_i},{x_j}) = \exp ( - \frac{{\left\| {{x_i} - {x_j}} \right\|}}{\sigma })
  • Sigmoid核:κ(xi,xj)=tanh(βxixj+θ)\kappa ({x_i},{x_j}) = \tanh (\beta x_i^\top{x_j} + \theta )

3、软间隔

引入软间隔是为了防止出现过拟合,允许在一些样本上分类出错,保证泛化性。允许某些样本不满足约束

yi(wxi+b)1{y_i}({\mathbf{w}^\top}{\mathbf{x}_ i} + b) \ge 1

在最大化间隔的同时,不满足约束的样本应该尽量的可能少,于是优化目标可以写为:

minw,b12w2+Ci=1m0/1(yi(wxi+b)1)\mathop {\min }\limits_{\mathbf{w},b} \frac{1}{2}||\mathbf{w}|{|^2} + C\sum\limits_{i = 1}^m {{\ell_{0/1}}({y_i}({\mathbf{w}^\top}{\mathbf{x}_ i} + b) - 1)}

其中C>0C>0是一个常数,0/1\ell_{0/1}是“0/1损失函数”:

0/1(z)={1,if z<00,otherwise\ell_{0/1}(z) = \begin{cases} 1, & \text{if } z < 0 \\ 0, & \text{otherwise} \end{cases}

CC为无穷大时,会迫使所有样本都满足约束条件。三种常用的替代损失函数:

  • hinge损失:hinge(z)=max(0,1z);{\ell_{hinge}}(z) = \max (0,1 - z);
  • 指数损失:exp(z)=exp(z);{\ell_{\exp }}(z) = \exp ( - z);
  • 对率损失:log(z)=log(1+exp(z));{\ell_{\log }}(z) = \log (1 + \exp ( - z));

采用hinge损失,目标函数变为

minw,b12w2+Ci=1mmax(0,1yi(wxi+b))\mathop {\min }\limits_{{\bf{w}},b} \frac{1}{2}||{\bf{w}}|{|^2} + C\sum\limits_{i = 1}^m {\max (0,1 - {y_i}({{\bf{w}}^ \top }{{\bf{x}}_ i} + b))}

引入“松弛变量”ξi0{\xi _ i} \ge 0,可将上式重写为

minw,b,ξ12w2+Ci=1mξi\mathop {\min }\limits_{w,b,\xi}\frac{1}{2}||w|{|^2} + C\sum\limits_{i = 1}^m {{\xi_ i}}

s.t.yi(wTxi+b)1ξis.t.{y_i}({w^T}{x_i} + b) \ge 1 - {\xi _i}

ξi0,i=1,2,...,m.{\xi _ i} \ge 0,i = 1,2,...,m.

这就是常用的"软间隔支持向量机",优化该目标函数,同样使用拉格朗日乘子法。

4、支持向量回归

和支持向量机不同,支持向量回归要将尽可能多的样本限制在超平面某个范围内,所以同样要最大化间隔,可以看作这是为了防止过拟合。

在 SVR 中,我们的目标是找到一个函数,使其尽量接近所有数据点,并且超出某个阈值的误差最小。具体来说,SVR 采用了 ϵ\epsilon-不敏感损失函数,即在误差小于 ϵ\epsilon 时不考虑损失。

SVR 的优化问题可以表示为:

minw,b12w2+Ci=1n(ξi+ξi)\min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^*)

同时满足约束条件:

{yi(wxi+b)ϵ+ξi(wxi+b)yiϵ+ξiξi,ξi0\begin{cases} y_i - (\mathbf{w} \cdot \mathbf{x}_i + b) \leq \epsilon + \xi_i \\ (\mathbf{w} \cdot \mathbf{x}_i + b) - y_i \leq \epsilon + \xi_i^* \\ \xi_i, \xi_i^* \geq 0 \end{cases}

其中,ξi\xi_iξi\xi_i^* 是松弛变量,用于表示超过 ϵ\epsilon 的误差,CC 是权衡间隔和损失的超参数。

在 SVR 中,最大化间隔意味着找到一个使误差在 ϵ\epsilon 范围内的最平滑的函数,这样可以避免过拟合,提高模型的泛化能力。具体来说,SVR 的目标函数: 12w2\frac{1}{2} \|\mathbf{w}\|^2 与 SVM 相同,表示我们在最小化 w\mathbf{w} 的范数,这实际上是在最大化数据点到回归平面(函数)的间隔。