临街小站

ML学习-SVM

支持向量机(Support Vector Machine)的求解通常是借助凸优化技术。

间隔与支持向量

给定训练样本集$D={(x_1,y_1),(x_2,y_2),…,(x_m,y_m)},y_i \in (-1,+1 )$ 分类学习最基本的思想就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。SVM就是帮助我们寻找到众多划分超平面中最符合的。

怎样定义符合这个指标呢,作为分类问题,训练中能够尽可能划分出不同类别的样本是基本,然后在测试集中也能表现出来很好的分类能力,对未见示例泛化能力最强。在训练中表现的就是对训练样本局部扰动容忍度最高。

公式表示

划分超平面可以用此式表示:

$\vec{\omega}^T \vec{x} + b=0$

其中$\vec{\omega}=(\omega_1;\omega_2;…;\omega_d)$为法向量,决定了超平面的方向;b为位向量,决定了超平面与原点之间的距离。

样本空间中任意点到超平面x到超平面$(\vec{\omega},b)$的距离可写为:

$r=\frac{\mid\vec{\omega}^T \vec{x}+b\mid}{\mid\mid \vec{\omega}\mid\mid}$

设置函数:

  1. $\omega^T x_i + b \geq +1 , y_i= +1$

  2. $\omega^T x_i + b \leq -1 , y_i= -1$

简化两个式子:

$y_i(\omega^T x_i +b) \geq 1 , i=1,2,…,m$
这个是之后式子的约束条件

距离超平面最近的几个训练样本点使得上面的不等式等号成立,它们被称为支持向量(support vector),两个异类支持向量到超平面的距离之和称为间隔(margin)

$\gamma = \frac{2}{\omega}$

为了使得间隔最大,也就是求$\max\limits_{w,b} \frac{2}{\mid\mid \omega \mid\mid}$

转换为$\min\limits_{w,b}\frac{\mid\mid \omega \mid\mid^2}{2}$

这就是支持向量机

对偶问题

模型$f(x)=\vec{\omega}^T \vec{x}+b$,参数$\omega b$是模型参数。而$\min\limits_{w,b}\frac{\mid\mid \omega \mid\mid^2}{2}$是一个凸二次规划,除了使用现成的优化计算包外,我们可以使用数学上的对偶关系更高效的求出结果。

对这个凸二次规划式子添加拉格朗日乘子$\alpha \geq 0$,则问题的拉格朗日函数可写为:

$L(\vec{\omega},b,\vec{\alpha})=\frac{1}{2}\mid\mid \omega \mid\mid^2+\sum\limits_{i=1}^m\alpha_i(1-y_i(\omega^Tx_i+b))$

令L对$\omega b$的偏导为零可得:

  1. $\omega=\sum\limits_{i=1}^m \alpha_iy_ix_i$

  2. $0=\sum\limits_{i=1}^m\alpha_iy_i$

式1代入拉格朗日式子,式2作为约束函数,得到上一小节式子的对偶问题:

$\max\limits_{\alpha} \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m \alpha_i \alpha_j y_i y_jx_i^T x_j$

约束条件:$\sum\limits_{i=1}^m\alpha_iy_i=0$

上式是南教授《机器学习》书中记录的式子,这里认为下面式子可能更好理解

$\max\limits_{\alpha} \sum_{i=1}^m\alpha_i+\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m \alpha_i \alpha_j y_i y_jx_i^T x_j$

从上式解出$\vec{\alpha}$之后,求出$\vec{\omega}$和b即可得到模型:

$f(\vec{x})=\vec{\omega}^T\vec{x}+b=\sum\limits_{i=1}^m \alpha_iy_ix_i^T\vec{x}+b$

支持向量机一个极其重要的特性就是:训练完成后,大部分的训练样本不需要保存,最终模型仅与支持向量有关。上式是一个二次规划问题,求解的高效办法是使用SMO。

使用SMO求解

SMO(Sequential Minimal Optimization)基本思路:固定$\alpha_i$之外的所有参数,然后求$\alpha_i$上的极值。

具体到这个问题,由于存在约束条件$\sum\limits_{i=1}^m\alpha_iy_i=0$,固定$\alpha$之外的值,则$\alpha$值都能导出。所以采用了部分的调整,每次固定两个变量$\alpha_i \alpha_j$之外的其余参数,之后不断执行下述步骤直到收敛:

  1. 选取一对需要更新的变量$\alpha_i \alpha_j$

  2. 固定其余参数,求解上个小结推导出的式子更新$\alpha_i \alpha_j$

对于两个需要更新参数$\alpha_i$和$\alpha_j$的选取,遵循一个规则,使选取的两变量所对应样本之间的间隔最大。

核函数

这个部分解决不能线性可分问题。

这类问题,一般是将样本从原始空间映射到更高维的特征空间,使得样本在高维度空间中线性可分。

引出

令$\phi(\vec{x})$表示将$\vec{x}$映射后的特征向量,于是在特征空间中划分超平面对应的模型可以表示为:

$f(\vec{x})=\omega^T \phi(\vec{x})+b$

类似在线性可分情况下的式子:

$\min\limits_{\vec{w},b} \frac{\mid\mid \vec{\omega} \mid\mid^2}{2}$

约束条件:

$y_i(\vec{\omega}^T \phi(x_i)+b) \geq 1, i=1,2,…,m$

对偶问题:

$\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_jy_iy_j \phi(x_i)^T\phi(x_j)$

约束条件:$\sum\limits_{i=1}^m \alpha_i y_i =0$

关键问题$\phi(x_i)^T\phi(x_j)$是映射到特征空间之后的内积。由于维度太高不易计算,构造这样的函数:

$\kappa(\vec{x}_i,\vec{x}_j)=\langle \phi(x_i),\phi(x_j) \rangle = \phi(x_i)^T\phi(x_j)$

原式求解得到:

$f(\vec{x})=\vec{\omega}^T\phi(\vec{x})+b$

$=\sum\limits_{i=1}^m\alpha_iy_i\phi(x_i)^T\phi(x)+b$

$=\sum\limits_{i=1}^m\alpha_iy_i\kappa(x,x_i)+b$

这里的\kappa就是核函数。

核函数组合

  1. $\kappa_1$和$\kappa_2$都是核函数,则对于任意正数$\gamma_1$和$\gamma_2$的线性组合:$\gamma_1\kappa_1 + \gamma_2\kappa_2$
  1. 核函数的内积: $\kappa_1 \bigotimes \kappa_2(\vec{x},\vec{z})=\kappa_1(\vec{x},\vec{z})\kappa_2(\vec{x},\vec{z})$

  2. 对于任意函数$g(x)$,$\kappa(\vec{x},\vec{z})=g(x)\kappa_1(\vec{x},\vec{z})g(z)$

都是核函数

软间隔

为了缓解某些连核函数都无法有效处理的分类问题,需要允许SVM在一些样本上出错,即允许某些样本不满足约束$y_i(\vec{w}^Tx_i+b) \geq 1$,引入了软间隔概念。

优化目标可以修改为:

$\min\limits{\vec{\omega},b}\frac{\mid\mid \omega \mid\mid^2}{2}+C\sum\limits_{i=1}^m\ell_{0/1}(y_i(\vec{\omega}^Tx_i+b)-1)$

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

$\ell_{0/1}(z) = 1 if z<0 else 0$

当C无穷大时,所有样本均需要满足约束,等价于前面小结的式子;C为可数实数,则允许样本不满足约束

为了使得$\ell$容易求导,通常使用下面几个数学性质较好的式子替代:

代入原式,然后使用松弛变量$\xi_i \geq 0$,松弛变量$\xi$替换原来C后面的部分,表示样本不满足约束的程度。

使用之前介绍的对偶问题求解出最终的答案。

支持向量回归

支持向量回归(Support Vector Regression)假设我们能够容忍f(x)与y之间最多有$\epsilon$的误差,即仅当f(x)与y之间差别的绝对值大于$\epsilon$时才算损失。

相当于以f(x)为中心,构建了一个宽度为$2\epsilon$的间隔带,落在带内的样本是正确的。

SVR问题可用式子表示:

$\min\limits{\vec{\omega},b}\frac{\mid\mid \omega \mid\mid^2}{2}+C\sum\limits_{i=1}^m\ell_{\epsilon}(f(x_i-y_i))$

其中$\ell_{\epsilon}$:$\ell_{\epsilon} ==0 if \mid z\mid \leq \epsilon else (\mid z \mid - \epsilon)$

  1. 引入松弛变量$\xi_{i}$和$\hat{\xi_{i}}$,原式重写为$\min\limits_{\vec{\omega},b,\xi_{i},\hat{\xi_{i}}}\frac{\mid\mid \vec{\omega}\mid\mid^2}{2}+C\sum\limits_{i=1}^m(\xi_{i} + \hat{\xi_{i}})$

  2. 引入拉格朗日乘子,求对偶问题

  3. 推导出带有核函数的算式

clinjie wechat
Think about u every day