这部分涉及到的内容会帮助理解SMO算法
-
概念介绍
软间隔(soft margin)和硬间隔(hard margin)。
所谓“硬间隔”,就是说,一组数据样本是可以实现线性可分,大白话就是存在分隔超平面完全将正负样本分开。
所谓“软间隔”,就是说,数据样本不是实际的线性可分,而是近似线性可分,我们称为软间隔。
线性支持向量机
对于线性不可分的数据样本,通过解凸二次规划问题,即软间隔最大问题,得到分隔超平面和分类决策函数称为“线性支持向量机”。
松弛变量\xi
线性不可分意味着某些样本点(xi,yi)不能满足函数间隔大于等于1的约束条件,因此对每个样本点引进一个松弛变量,降低实际的“函数间隔”。也就是松弛变量加上理论函数间隔大于等于1。
-
软间隔最大化问题的意义
在现实生活中,我们99%的数据样本都是有瑕疵的,很大几率我们的数据是没法实现完全线性可分。当然,如果碰巧是线性可分,这时候通过前边说的引入拉格朗日变量和解对偶问题,求目标函数的最优化,我们就可以解出最大间隔超平面的方程和支持向量。这是idealism。如果我们发现这个问题不是完美的线性可分,总有几个outlier妨碍我们的超平面,我们可以姑且近似这是一个线性问题,也就是将其看作是“软间隔最大化问题”,通过修正我们的目标函数来对其进行求解。
1. 软间隔的目标函数和约束条件
![](http://latex.codecogs.com/svg.latex?\min_{w,b,\xi}\,\,\,\,\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i)
![](http://latex.codecogs.com/svg.latex?\\s.t.\;y_i(w\cdot\,x_i+b)\geq1-\xi_i,\\\xi_i\geq0,\,\,\\C>0,i=1,2,...N)
目标函数中的C是惩罚参数,C>0,C的值由我们决定,C值大对误分类的惩罚增大,C值小对误分类的惩罚小。
我们要求的目标函数的最小值,在引进松弛变量和惩罚参数有两个含义,一个是使得1/2w^2尽量小,也就是间隔尽量大,同时使得松弛变量尽量小,也就是误分类的点个数尽量小。
以上就将问题转化为凸二次规划问题。
然后软间隔最大化问题得到分离超平面,
![](http://latex.codecogs.com/svg.latex?w^T\cdot\,x+b=0)
对应分类决策函数,
![](http://latex.codecogs.com/svg.latex?f(x)=sign(w^T\cdot\,x+b))
2. 对偶算法
线性可分问题的对偶问题是
![](http://latex.codecogs.com/svg.latex?\min_\alpha\;\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot\,x_j)-\sum_{i=1}^N\alpha_i)
![](http://latex.codecogs.com/svg.latex?\\s.t.\;\sum_{i=1}^N\alpha_iy_i=0)
线性不可分的对偶问题,
引入拉格朗日乘子,
![](http://latex.codecogs.com/svg.latex?\iota(w,b,\xi,\alpha,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi-\sum_{i=1}^N\xi_i-\sum_{i=1}^N\alpha_i(y_i(w^T\cdot\,x_i+b)-1+\xi_i)-\sum_{i=1}^N\mu_i\xi_i)
其中,
![](http://latex.codecogs.com/svg.latex?\alpha_i\geq0,\;\mu_i\geq0)
拉格朗日极大极小问题
![](http://latex.codecogs.com/svg.latex?\max_\alpha\min_{w,b,\xi}\iota(w,b,\alpha))
首先计算min,对w,b,\xi求偏导(KKT条件)
![](http://latex.codecogs.com/svg.latex?\frac{\partial\\\iota}{\partial\\w}=w-\sum_{i=1}^N\alpha_iy_ix_i=0)
![](http://latex.codecogs.com/svg.latex?\frac{\partial\\\iota}{\partial\\b}=-\sum_{i=1}^N\alpha_iy_i=0)
![](http://latex.codecogs.com/svg.latex?\frac{\partial\\\iota}{\partial\\\xi}=C-\alpha_i-\mu_i=0)
带入拉格朗日等式,
得到,
![](http://latex.codecogs.com/svg.latex?\min_{w,b,\xi}\iota(w,b,\xi,\alpha,\mu)=\;-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot\,x_j)+\sum_{i=1}^N\alpha_i)
再对上式求\alpha的极大,即对偶问题:
![](http://latex.codecogs.com/svg.latex?\max_\alpha\;-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot\,x_j)+\sum_{i=1}^N\alpha_i)
对偶转换,
![](http://latex.codecogs.com/svg.latex?\min_\alpha\;\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot\,x_j)-\sum_{i=1}^N\alpha_i)
约束条件:
![](http://latex.codecogs.com/svg.latex?\\s.t.\;\sum_{i=1}^N\alpha_iy_i=0\\C-\alpha_i-\mu_i=0\\\alpha_i\geq0\\\mu_i\geq0,\;i=1,2,..N)
通过三式结合二式一式,得到: 0<=alpha<=C
3. 线性支持向量学习算法
针对软间隔,因为alpha存在[0,C]的区间。因此我们选(0,C)的alpha,计算
![](http://latex.codecogs.com/svg.latex?b=y_j-\sum_{i=1}^Ny_i\alpha_i(x_i\cdot\,x_j))
然后求得分离超平面
![](http://latex.codecogs.com/svg.latex?w^T\cdot\,x+b=0)
分类决策函数
![](http://latex.codecogs.com/svg.latex?f(x)=sign(w^T\cdot\,x+b))
选取(0,C)区间内的任意alpha都可以求出b,b的解可能不唯一。
3. 支持向量
在线性不可分的情况下,对偶问题的解alpha集合中对应alpha>0的样本点(xi,yi)的实例成为支持向量(软间隔的支持向量)。下图实线表示分离超平面,虚线表示间隔边界,正例有“o”表示,负例点由“X”表示。实例点xi到间隔边界的距离[图片上传失败...(image-e30e64-1530193320684)]
[](http://latex.codecogs.com/svg.latex?\frac{\xi_i}{||w||})
软间隔的支持向量xi或者间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。
若alpha
若alpha=C,\xi=1,则xi在分离超平面上;
若alpha=C,\xi>1,则分类错误,xi位于分离超平面误分一侧。
所以在算法里我们要尽力去找(0,alpha)的alpha,然后计算b,最终得到分割面方程。
接下来就到核函数的学习了,又是一块硬骨头,加油吧。