支持向量机

 

1.线性可分支持向量机与硬间隔最大化


线性支持向量机是一个二分类模型,实际上是想求一个分离超平面:

                                                                \omega ^{*}x+b^{*}=0                                                                     (1)

也就是求解公式(1)中的\omega ^{*}b^{*}, 进而带入到某一个函数中,形成分类决策函数:

                                                                         f(x)=sign(\omega ^{*}x+b^{*} )                                                         (2)

 


1.1 函数间隔和几何间隔


支持向量机想求的这个超平面希望点到该平面的间隔最大化,也是在间隔最大化的过程中,求得\omega ^{*}b^{*}。所以,首先要定义这个间隔,假设,分离超平面为:

                                                               \omega x+b=0                                                                   

其中\omega为分离超平面的法向量。在给定特征空间上的训练数据集为:

                                             T=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n})\}

其中,y\in \{+1,-1\},用以标记正负类别。接下来,采用:

                                                                 |\omega x+b|

能够相对地表示点到分离超平面的远近,采用:

                                                                           y(\omega x+b)

可表示分类的正确性及确信度,这就是函数间隔的概念(functional margin)。

定义(函数间隔):对于给定的数据集T和超平面(\omega ,b),定义超平面关于样本点(x_{i},y_{i})(x_{i},y_{i})的函数间隔:

                                                                       \gamma_{i}^{\wedge }=y_{i}(\omega \cdot x_{i}+b)

希望得到的最小间隔,即数据集中所有样本点到超平面的距离中,最小值:

                                                                       \gamma_{min}^{\wedge }=min\gamma _{i}^{\wedge }

函数间隔的问题是,成比例地改变\omegab,分离超平面是不变的,但是,函数间隔却成了原来的倍数关系,于是,给出几何间隔的概念:利用\omega的2范数规范化。(其实这很像或者就是点到平面的距离公式)

                                                                        \gamma _{i}=\frac{\gamma _{i}^{\wedge }}{\left \| \omega \right \|}

定义超平面关于训练数据集T的几何间隔为超平面关于T中所有样本点的几何间隔之最小值。(注意这里是关于超平面,而不是关于样本点):

                                                                      \gamma =min\gamma _{i}                        i=1....N


1.2 间隔最大化


支持向量机学习得基本想法是求解能够正确划分训练集且几何间隔最大的分离超平面。将其抽象为数学表达式即为:

                                                                           max_{\omega ,b}      \gamma

                                                                          s.t.          y_{i}(\frac{\omega }{\left \| \omega \right \|}\cdot x_{i}+\frac{b}{\left \| \omega \right \|})\geq \gamma            i=1,2,....,N

约束条件表示,超平面关于每个训练样本点的几何间隔至少是\gamma

考虑函数间隔和几何间隔的关系,将上式改写成:

                                                                        max_{\omega ,b}        \frac{\gamma^{\wedge }}{\left \| \omega \right \|}

                                                                       s.t.            y_{i}(\omega \cdot x_{i}+b)\geq \gamma^{\wedge }            i=1,2,....,N

由于等比例增大\omegab\gamma^{\wedge }\left \| \omega \right \|也等比例增大,对最优化问题没有影响,因此,取\gamma^{\wedge }=1,构成一个等价最优化问题,并且最大化\frac{1}{\left \| \omega \right \|}与最小化\frac{1}{2}\left \| \omega \right \|^{2}等价,于是上述数学表达式等价于:

                                                                      min_{\omega ,b}       \frac{1}{2}\left \| \omega \right \|^{2}  

                                                                      s.t.            y_{i}(\omega \cdot x_{i}+b)-1\geq 0         i=1,2,....,N


1.3支持向量和间隔边界


在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量,是使约束条件式等号成立的点。长带宽度称为间隔(margin),为\frac{2}{\left \| \omega \right \|}。在决定分离超平面时只有支持向量起作用,而其他实例点不起作用。支持向量的个数一般很少,所以支持向量由很少的重要的训练样本组成。


1.4 支持向量机的学习过程


 

支持向量机的问题,就是下面的这个最优化问题,通过求解下面的约束最优化问题,得到\omega ^{*}b^{*},问题就解决了:

                                                                      min_{\omega ,b}       \frac{1}{2}\left \| \omega \right \|^{2}  

                                                                      s.t.            y_{i}(\omega \cdot x_{i}+b)-1\geq 0         i=1,2,....,N

想求解这个约束最优化问题,首先要采用拉格朗日的方法,转化为无约束问题:

定义相应的拉格朗日函数,引进拉格朗日乘子\alpha _{i}\geq 0作为约束条件的权重:

                                                         L(\omega ,b,\alpha )=\frac{1}{2}\left \| \omega \right \|^{2}-\sum_{i=1}^{N}\alpha _{i}y_{i}(\omega \cdot x_{i}+b)+\sum_{i=1}^{N}\alpha _{i}

通过求解这个拉格朗日函数,得到一个简单的对偶问题:

                                                              min_{\alpha }           \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y_{i}y_{j}(x_{i}\cdot x_{j})-\sum_{i=1}^{N}\alpha _{i}

                                                               s.t.               \sum_{i=1}^{N}\alpha _{i}y_{i}=0

                                                                                    \alpha _{i}\geq 0                                                i=1,2,....,N

求得最优的\alpha ^{*}=(\alpha _{1}^{*},\alpha _{2}^{*},...,\alpha _{l}^{*})^{T})(怎么求这个公式的最小值是数值分析要解决的问题,属于二次规划问题,目前广泛采用的是SMO算法,最后所求的大部分\alpha为0,因为只有支持向量对应的样本决定了间隙的大小。):

                                                            \omega ^{*}=\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}

并选择\alpha ^{*}的一个正分量\alpha _{j}^{*}> 0,计算

                                                            b^{*}=y_{j}-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x_{i}\cdot x_{j})

求得分离超平面:

                                                              \omega ^{*}x+b^{*}=0

分类决策函数: 

                                                              f(x)=sign(\omega ^{*}x+b^{*} )


2. 线性支持向量机与软间隔最大化


对于线性不可分训练数据 ,线性可分方法中的不等式约束:

                                                                  y_{i}(\omega \cdot x_{i}+b)-1\geq 0

不适用。也就是说这个不等式约束,不能对任何一个数据点都成立,有的成立,有的不成立,在此情况下,可以通过添加一个松弛变量 \xi,使之依然成立,这样,约束条件变为。

                                                                            y_{i}(\omega \cdot x_{i}+b)\geq 1-\xi _{i}

与此同时,对每个松弛变量\xi _{i},支付一个代价\xi _{i},目标函数随即变为:

                                                                            \frac{1}{2}\left \| \omega \right \|^{2}+C\sum_{i=1}^{N}\xi _{i}

这个松弛系数的大小代表了数据样本x_{i}违反最大间距规则的程度,大部分正常样本的\xi _{i}=0,而违反这一规则的样本,\xi _{i}> 0C> 0,称为惩罚参数,一般由问题决定,C值大时,对误分类的惩罚增大,当其值比较小时,模型允许部分点违反规则。此时,目标函数的最小化意味着要使     \frac{1}{2}\left \| \omega \right \|^{2}尽量小,这样间隔就会变大,同时,也要使\sum_{i=1}^{N}\xi _{i}尽量小,误分类点的个数就少,而C就是二者的调和系数。从图中可以看出来,对于没有违反规则的店,成本函数为0 ,对于违反约束条件的样本,成本与\xi成正比,斜线的斜率为C。引入松弛变了可以纠正模型的过拟合,让支持向量机对噪声数据有更强的适应能力。

现在,原始最优化问题变为:

                                                            min_{\omega ,b,\xi }        \frac{1}{2}\left \| \omega \right \|^{2}+C\sum_{i=1}^{N}\xi _{i}

                                                             s.t.               y_{i}(\omega \cdot x_{i}+b)\geq 1-\xi _{i}        i=1,2,....,N

                                                                                 \xi _{i}\geq 0                                    i=1,2,....,N

原始问题是一个凸二次规划问题,解存在,\omega解唯一,但b不唯一,存在一个区间。这种称为线性支持向量机。实际上,相对于硬间隔支持向量机,软间隔支持向量机是以允许存在一些误分类点位代价,寻找分离超平面。


2.1 求解对偶问题


原始问题的拉格朗日函数:

L(\omega ,b,\alpha,\xi ,\mu )=\frac{1}{2}\left \| \omega \right \|^{2}+C\sum_{i=1}^{N}\xi _{i}-\sum_{i=1}^{N}\alpha _{i}(y_{i}(\omega \cdot x_{i}+b)-1+\xi _{i})-\sum_{i=1}^{N}\mu _{i}\xi _{i}

其中,\alpha _{i}\geq 0,\xi _{i}\geq 0.

对偶问题:

                                   min_{\alpha }                 \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y_{i}y_{j}(x_{i}\cdot x_{j})-\sum_{i=1}^{N}\alpha _{i}

                                   s.t.                     \sum_{i=1}^{N}\alpha _{i}y_{i}=0

                                                             0\leq \alpha _{i}\leq C                i=1,2,....,N 

求得最优的\alpha ^{*}=(\alpha _{1}^{*},\alpha _{2}^{*},...,\alpha _{l}^{*})^{T}):

                                                            \omega ^{*}=\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}

选择一个0< \alpha _{j}< C,计算:

                                                           b^{*}=y_{j}-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x_{i}\cdot x_{j})

对任意个符合条件的\alpha _{j},都可以求出b^{*},实际计算要取平均值。


2.2 支持向量

在线性不可分情况下,将\alpha ^{*}=(\alpha _{1}^{*},\alpha _{2}^{*},...,\alpha _{l}^{*})^{T}中,对应于\alpha _{i}^{*}> 0的点成为支持向量,软间隔的支持向量或者在间隔边界上,或者在边界与超平面之间,或者在分离超平面误分的一侧。若\alpha _{i}^{*}< C,则\xi _{i}=0,支持向量落在间隔边界上。若\alpha _{i}^{*}=C0< \xi _{i}< 1,则分类正确,点落在间隔边界与分离超平面之间,若\alpha _{i}^{*}=C\xi _{i}=1,点落在分离超平面上,若\alpha _{i}^{*}=C\xi _{i}> 1则点位于超平面误分的一侧。


3 非线性支持向量机与核函数


解决这个问题要依靠非线性变换,将原空间的数据映射到新空间,在新空间里,用线性分类方法学习模型。 核函数,将欧氏空间中的超曲面模型,对应到特征空间中的超平面模型。


3.1 核函数的定义

\chi是输入空间,\Psi为特征空间,如果存在一个从\chi\Psi的映射

                                                                         \phi (x):\chi \rightarrow \Psi

使得对所有x,z\in \chi, 函数K(x,z)=\phi (x)\cdot \phi (z),则称K(x,z)为核函数,\phi (x)为映射函数,通过\phi (x)把低维空间的向量映射到高维空间,而核函数是两个样本点在高维空间所对应的样本点之间的内积。

那么K(x,z)满足什么条件的时候,才能称为核函数呢?

通常所说的核函数是正定核函数,正定核的充要条件如下:

K: \chi \times \chi \rightarrow R是对称函数,则K(x,z)为正定核函数的充要条件是对任意x_{i}\in \chi , i=1,2,3,4...m, K(x,z)对应的Gram矩阵:

                                                                             K= [K(x_{i},x_{j})]_{m\times m}

是半正定矩阵。


3.2 非线性支持向量机学习算法


(1)选取核函数和参数C,构造最优化问题:

                                                   min_{\alpha }            \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y_{i}y_{j}K(x_{i},x_{j})-\sum_{i=1}^{N}\alpha _{i}

                                                 s.t.                 \sum_{i=1}^{N}\alpha _{i}y_{i}=0

                                                                       0\leq \alpha _{i}\leq C                 i=1,2,....,N

求得最优的\alpha ^{*}=(\alpha _{1}^{*},\alpha _{2}^{*},...,\alpha _{l}^{*})^{T}):

                                                            \omega ^{*}=\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}

选择一个0< \alpha _{j}< C,计算:

                                                           b^{*}=y_{j}-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}K(x_{i},x_{j})

参考:

李航. 统计学习方法[M]. 清华大学出版社, 2012.

黄永昌. scikit-learn机器学习常用算法原理及编程实战 机械工业出版社 2018.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值