【模式识别/机器学习】支持向量机SVM浅析

支持向量机(Support Vector Machines,SVM)是1995年Cortes喝Vapnik首先提出的,它在解决小样本、非线性以及高位模式识别问题中表现出了许多特有的优势,并且可以推广应用到函数拟合等问题领域。

本文旨在浅析SVM的基本原理和做一些简单的公式推理,参考书籍为西电出版社张向荣的《模式识别》一书。


1.基本概念

本大节介绍一些支持向量机中会提到的模式识别基本概念,有一定基础的可以略过此节。

1.1 定义数据集

给定一个数据集

D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\}                                (1-1)

其中x_i \in R^n,y_i \in \{+1,-1\},i=1,2,...,m。这里我们将y_i=+1称样例i为正例,反之则将样例i称作负例。

1.1.1 数据集的线性可分性

对式(1-1)给出的数据集,如果存在权值向量w=(w_1,w_2,\cdot \cdot \cdot ,w_m)和偏置b,使得有超平面w^Tx+b=0能够将样例分开,则称该数据集线性可分,否则称该数据集线性不可分。

也可以说存在权值向量w=(w_1,w_2,\cdot \cdot \cdot ,w_m)和偏置b,满足下式

\left\{\begin{matrix} w^Tx_i+b>0 , y_i=+1 \\ w^Tx_i+b<0 , y_i=-1 \end{matrix}\right.                                                (1-2)

即可称数据集为线性可分的。

1.1.2 超平面划分

上文的超平面指的是一个m维的抽象平面,举个例子,在数据集为一维时,超平面为一个点,二维时为一条线,三维则是一个面。

在数据集上找到一个划分正例与负例的超平面就是机器学习分类任务的主要工作。

划分的超平面由方程中w^Tx+b=0的权值向量w和偏置b唯一确定。

假设有一个超平面方程为w^Tx+b=0,那么在数据集所在的m维特征空间中的任意一点x到超平面的距离r我们定义为

r=\frac{\begin{vmatrix}w^Tx+b\end{vmatrix}}{\begin{Vmatrix}w\end{Vmatrix}}                                                          (1-3)

对于一个数据集中的样本(x_i,y_i),我们可以看w^Tx+by_i的符号是否一致来判断分类是否正确。举个例子,我们这里假设数据集特征空间是一维的,也就是说m=1,再假设数据中有两个负例(-1,-1)和(-2,-1),还有两个正例(1,1)和(2,1)

我们给出两个超平面x=0-x=0。将四个样本点分别带入两个超平面,那么可以发现x=0可以将样本点全部正确分类,而-x=0则完全分类错误。

1.1.3 函数间隔和几何间隔

定义一个训练样本(x_i,y_i)的函数间隔为

\gamma _i=y_i(w^Tx_i+b)                                                (1-4)

假设超平面能够完全正确划分数据集,那么当样本为正例时,由式(1-2)得w^Tx_i+b\geqslant 0,样本的函数间隔为\begin{vmatrix} w^Tx_i+b \end{vmatrix},是一个非负值;当样本为负例时,w^Tx_i+b<0,样本的函数间隔为\begin{vmatrix} w^Tx_i+b \end{vmatrix},同样是一个非负值。假设有一个正样本,由于超平面划分错误,被认为成了负样本,那么由式(1-2)可以知道w^Tx_i+b<0,但由于y_i=1,故函数间隔变为了一个负值。

由上面的分析可以知道,函数间隔代表了我们样本分类的确信度,函数间隔为正,那么我们可以认为样本分类正确,反之则认为分类错误。正常来说,我们希望函数间隔越大越好,因为他代表了分类的确信度。但是当wb成比例变化时,函数间隔也会成比例变化。这样的显然是不够科学的。

为了解决上述问题,我们可以选择对权值向量w增加约束条件。从而引出了一个真的用来定义点到超平面的距离——几何间隔。

给定如图中所示的超平面w^Tx+b=0,设A(x_i,y_i)为超平面划分空间正面的任意一个样本点,B为A在超平面上的投影,则矢量BA的方向为w

设A到超平面的距离为\gamma _i,那么就可以根据已知信息求得B点为x=x_i-\gamma _r\frac{w}{\begin{Vmatrix} w \end{Vmatrix}},将B带入到超平面可以得到

w^T(x_i-\gamma _i\frac{w}{\begin{Vmatrix} w \end{Vmatrix}})+b=0                                                (1-5)

 可推出

\gamma _i=\frac{w^Tx_i+b}{\begin{Vmatrix} w \end{Vmatrix}}=(\frac{w}{\begin{Vmatrix} w \end{Vmatrix}})^Tx_i+\frac{b}{\begin{Vmatrix} w \end{Vmatrix}}                                        (1-6)

 同理,当A在超平面另一侧时可得

\gamma _i=-\left [ (\frac{w}{\begin{Vmatrix} w \end{Vmatrix}})^Tx_i+\frac{b}{\begin{Vmatrix} w \end{Vmatrix}} \right ]                                                  (1-7)

那么当样本正确分类时,x_i到超平面的距离是

\gamma _i=y_i\left [ (\frac{w}{\begin{Vmatrix} w \end{Vmatrix}})^Tx_i+\frac{b}{\begin{Vmatrix} w \end{Vmatrix}} \right ]                                                (1-8)

 这里的γ与前文函数间隔中的γ指代的东西不同,请注意区分。

我们称式(1-8)中的γ为超平面关于样本点A的几何间隔。并且定义\gamma =\underset{i=1,\cdot \cdot \cdot ,m}{min}\gamma _i为数据样本的全局间隔。不难发现当\begin{Vmatrix} w \end{Vmatrix}=1时,几何间隔就是函数间隔。除此之外,有下式成立

\gamma =\frac{\hat{\gamma} }{\left \| w \right \|}                                                                (1-9)

1.2 最大间隔分离超平面

支持向量机是定义在特征空间上间隔最大的线性分类器,其自主学习的思想是找到能正确划分数据集并且使得几何间隔最大的分离超平面。支持向量机不考虑将所有点远离超平面,只关心求得的超平面离他最近的点之间也有较大的确信度可以将它们分开。

最大几何间隔分类超平面的求取可以用以下数学问题表示

        (1-10)

 由几何间隔与函数间隔的关系,上式可写作

       (1-11)

 式(1-11)的最优化问题即为所求的最大几何间隔分离超平面。根据训练的数据是否线性可分,支持向量机可以分为三种模型:线性可分支持向量机、线性支持向量机和非线性向量机

2.线性可分支持向量机

本大节开始SVM的公式推理,首先从最简单的线性可分SVM开始,理解透彻线性可分SVM,其他类型的SVM就可以类推。

2.1 学习算法

对于给定的线性可分的训练数据集,通过学习间隔最大化或等价求解相应的凸二次规划问题得到的分离超平面为w^Tx+b=0以及相应的分离决策函数f(x)=sign(w^Tx+b)我们称之为线性可分支持向量机。

 由于式(1-11)中的目标函数不是凸函数,不利于我们最优问题的求解,所以我们需要对公式进行进一步的处理。对于一个线性可分的数据集,由于函数间隔的改变对式(1-11)的优化问题没有影响,故我们可以将全局的函数间隔定义为1,即\hat{\gamma }=1,也可以说是将离超平面最近的点的距离定义为\frac{1}{\left \| w \right \|}。又由于求取\frac{1}{\left \| w \right \|}的最大值等价于求\frac{1}{2}\left \| w \right \|^2的最小值,故优化函数可以改写成如下形式

        (2-1)

 此时上式为一个典型的二次规划问题,求出上式的解w^*b^*就可以得到最大间隔的分离超平面,也得到了线性可分支持向量机的模型。由此我们得到了线性可分支持向量机的学习算法——最大间隔法。

值得一提的式是,对于线性可分的数据集,特征空间中存在无数的划分超平面可以将两类数据分开,但是由最大间隔法求得的划分超平面却是唯一的。

支持向量:在线性可分的前提下,使得式(2-1)的线性约束中等号成立的点称为支持向量,即满足的点称为支持向量。如图所示,在两条虚线上的点即为支持向量。

2.2 对偶问题求解

根据拉格朗日函数的对偶性,我们可以将式(2-1)的优化问题转化为求取其对偶问题(为什么可以这样做请参考这里),这样我们便可求得w^*b^*

改写约束条件:

g_i(w)=-y_i(w^Tx_i+b)+1\leq 0,i=1,\cdot \cdot \cdot ,m                        (2-2)

这里的有多少个样本就有多少个约束条件。接着构建拉格朗日函数:

L(w,b,\alpha )=\frac{1}{2}\left \| w \right \|^2-\sum_{i=1}^{m}\alpha _i[y_i(w^Tx_i+b)-1]                        (2-3)

此处的拉格朗日乘子\alpha _i\geq 0.

根据拉格朗日函数的对偶性,将原始问题转换为其对偶问题

d=\underset{\alpha :\alpha _i\geq 0}{max} \, \underset{w,b}{min}\,L(w,\alpha ,b)                                                (2-4)

我们先忽略α,求取L的极小值。分别对L求w和b的偏导并令其等于0:

\frac{\partial L}{\partial w}=w-\sum_{i=1}^{m}\alpha _iy_ix_i=0                                                (2-5)

\frac{\partial L}{\partial b}=\sum_{i=1}^{m}\alpha _iy_i=0                                                        (2-6)

将式(2-5)和(2-6)代入式(2-3)并化简可得

\underset{w,b}{min}\,L(w,\alpha ,b)=-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _i\alpha _jy_iy_j(x_i)^Tx_j+\sum_{i=1}^{m}\alpha _i                (2-7)

求出了L的极小值,下面就要求取d的极大值,也就是说要求L的极小值关于α的极大化,这个问题可以表述为:

                (2-8)

这里的<x_i,x_j>指两个向量的内积,也就是前文中的(x_i)^Tx_j,式(2-8)又与下面的优化问题等价

                (2-9)

 式(2-9)为简单的最优化问题,假设\alpha ^*为(2-9)的解,那么由KKT条件可知,若存在j>0,使得d^*_j>0,则一定存在 w^*b^* 是原始优化问题的解,此时

w^*=\sum_{i=1}^{m}\alpha ^*_iy_ix_i                                                        (2-10)

b^*=y_j-\sum_{i=1}^{m}\alpha ^*_iy_i<x_i,x_j>                                        (2-11)

以上就是线性可分支持向量机的对偶学习算法。

3.线性支持向量机

 假设一个数据集中存在一些特异点(Outlier),将这些特异点去除后,剩下的大部分样本点的集合是线性可分的,那么某些样本点就无法满足函数间隔大于1的条件,需要使用线性支持向量机的对偶学习方法。

对于去除特异点后的线性可分数据集,其学习的问题可以转换为如下的凸二次优化问题:

        (3-1)

这里引入了松弛变量\xi _i\geq 0,目标函数增加了相应的代价,C>0为惩罚参数。为的是在最大化间隔的同时使得错误分类点的数量尽量小。上式的解存在且w唯一,而b的解存在于一个区间。实际上线性可分支持向量机也是线性支持向量机的一种特殊情况。

同理,构建拉格朗日函数并得到其对偶问题为

              (3-2)

对比可以发现,线性可分SVM与线性SVM唯一的区别就是对偶变量的约束不一样。

软间隔支持向量:当数据线性不可分时,将对偶问题(3-2)的解\alpha ^*中对应\alpha ^*_i>0的点称为称为软间隔的支持向量。若\alpha ^*_i<C,\xi_i =0,此时对应的支持向量恰好在间隔边界;若\alpha ^*_i=C,0<\xi_i <1则分类正确,支持向量在间隔边界与分类超平面之间;若\alpha ^*_i=C,\xi_i =1则支持向量在分类超平面上;若\alpha ^*_i=C,\xi_i >1则支持向量位于误分一侧。

4.非线性支持向量机

实际生活中,我们的数据往往是非线性的。非线性的问题很难求解,所以我们希望可以将非线性的问题转换为线性问题,然后利用线性分类方法来求解这个问题。

核技巧的基本思想是通过一个非线性变换将输入空间(欧式空间或离散集合)映射到一个特征空间(希尔伯特空间),使得输入空间中的超曲面模型对应于特征空间中的超平面模型,从而通过在特征空间中求解线性支持向量机实现分类。

4.1 核函数定义及有效性判定

\chi是输入空间,H是特征空间,如果存在一个\chi到H的映射\phi (x): \chi \rightarrow H,使得对所有的x,z\in \chi,函数K(x,z)满足

K(x,z)=<\phi(x),\phi(z)>                                                (4-1)

 那么称K(x,z)为核函数,\phi(x)为映射函数。

核技巧并不显式地定义映射函数,它通过在学习和预测中定义核函数。特征空间的维度往往很高,甚至是无穷维度,并且对于给定的核函数,特征空间核函数与映射函数取法不唯一。对于线性支持向量机的对偶问题,目标函数和决策函数都只涉及输入实例的内积。故我们可以用核函数K(x,z)=<\phi(x),\phi(z)>来替代目标函数中的内积<x_i,x_j>

对于一个给定的核函数,能否找到一个有效的映射函数,是一个重要的问题。

(Mercer定理)任何半正定的函数都可以作为核函数。Mercer定理给出了核函数有效性和相应核函数矩阵的关系。我们不用寻找映射函数即可证明核函数是否有效,只需要在训练的样本集上求出核函数矩阵并判断其是否正定即可。

4.2 常用的核函数

1)线性核函数

K(x,z)=<x,z>                                                (4-2)

2)多项式核函数

K(x,z)=(<x,z>+1)^p                                         (4-3)

3)高斯核函数

K(x,z)=exp(-\frac{\left \| x-z \right \|}{2\sigma^2})                                        (4-4)

线性核主要适用于线性可分的情况,参数少,速度快,对于一般的训练数据,分类效果比较理想。高斯核应用最广,主要用于线性不可分的情形,参数多,在实际使用中常通过训练数据的交叉验证寻找合适的参数。关于到底该选用哪种核,还是需要具体情况具体分析,目前没有最佳的核函数。

4.3 学习算法

通过选取适当的核函数和适当的参数C,构造并求解最优化问题

        (4-5)

 可以看到非线性支持向量机与前文的对偶问题并无太大区别,得到最优解后求得的w与前文也大同小异。值得注意一下的是b的计算

b^*=y_j-\sum_{i=1}^{m}\alpha ^*_iy_iK(x_i,x_j)-\sum_{i=1}^{m}\alpha _i                                (4-6)

以上就是非线性支持向量机的学习算法。

5.SMO算法

前文介绍的解决最优化问题的方法虽然可行,但在求解最优问题时的计算规模正比于数据量(计算复杂度达到了O(n^2)),在实际任务中会造成很大的计算开销。这里我们引入SMO算法。

最小序列优化(Sequential Minimal Optimization,SMO)是1988年由微软研究所的John C.Platt提出的一种快速二次规划优化算法。

SMO的基本思路就是在一次迭代中只优化两个变量而固定其他变量,从而将一个大的优化问题分解为若干个小的优化问题进行求解,类似于坐标上升法。SMO算法在线性支持向量机和数据稀疏时拥有更好的性能。

由于篇幅原因,SMO算法不作进一步说明,感兴趣的请参考大佬的教学,参考这里

总结

本文就支持向量机的基本原理和数学推导作了浅析,希望能够起到一个入门的作用,参考的是西电张向荣老师的《模式识别》一书。作者才疏学浅,文章难免有错,欢迎指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值