首页 > 代码库 > 支持向量机SVM
支持向量机SVM
(1)支持向量的基本形式
对于一个分类问题,如果用PLA算法,可能会有多种分类策略,如下图所示,很明显,第三个图是一个最佳的分类策略,因为在第三个图中,如果边界上的数据允许的测量误差可以更大一些。对未见示例的泛化性更强。这种方法就是支持向量机。
我们想要得到的是找到一条直线能够把样本数据正确的分开,而且,直线与最近的样本数据的距离是最大的。对于一条直线,如果用w=(w1,w2,w3,...,wn)表示超平面的法向量,决定超平面的方向,超平面可以通过以下的线性方程来描述:
wTx+b=0
样本到划分超平面的距离是:r=|wTx+b|/||w||
因此具有最大间隔的划分超平面是
可以通过等价转换,转化为如下形式:
这就是支持向量机的基本形式。
(2)基本支持向量的求解过程
支持向量机的采用的二次规划方式求解:
其实很简单,就仿照右上式吧左上式转化一下,只要相应的系数对应即可,这时候,即可求出最终的结果,求出w和b得到最终的的结果。
(3)对偶支持向量机(Dual SVM)
对偶是基本支持向量机的一种解答方式,即把线性约束放到优化问题本身中去,采用的方法是拉格朗日求解法,具体的求解过程如下,
-->
将原始问题的形式转化为拉格朗日的形式如上图所示。接下来就是求解w,b的值使得L(b,w,a)的值最小。这个问题可以按如下形式转化:最大值里的最小值一定大于最小值里边的最大值,如下图所示
.......(1)
根据上边的转化,问题最终转化为如下形式:
下边就是对上式求导,首先对b求导:........(2)
接着就是对w求导:........(3)
将(2)(3)式带入(1)式,即可得到下边的结果:
其中约束条件称为KKT条件,如下
在上边的式子中,当αn=0时1-yn(wTZn+b)可以不为0,当αn≠0时1-yn(wTZn+b)=0,这个时候对应的(xn,yn)为支持向量,根据已知的α求出W,然后根据αn≠0时1-yn(wTZn+b)=0,求出一个b。或者取多个b求平均值,这是,就可得到最终的分离平面,由此看见,该平面的产生只与支持向量相关。
通过上边的推导,可以得到,对偶问题转化为如下形式:
利用二次规划求解,仿照下边的左边的形式写成下边的右边的形式
根据上边的求解,最终得到最优的a,如下图所示
在线性可分问题中,假设数据是线性可分的,则存在一个划分超平面可以将训练样本正确分类,然而在现实中,原始的样本空间可能并不存在一个能正确划分的超平面,因此需要映射到一个更高维的空间上,如下图所示:
相应的对偶问题就转化为
(4)核函数
在上边的推到过程中求Q是非常复杂的,需要先映射到高维空间然后在求内积,下边相处的办法是先求出样本空间的内积,然后再映射到高维空间,降低复杂度。这个时候引入的核函数。
相应的核函数为:
通过核函数转化后的支持向量机的形式是:
通过上边的计算,核函数的支持向量机的算法如下:
(5)软间隔和正则化
在前边提到的问题中一直都是假定训练数据在样本空间是线性可分的,然而在现实中并不是这样,即使找到了某个核函数使训练样本在特征空间中线性可分,可能也会造成过拟合,因此提出的缓解这种错误的方法是“软间隔”,即允许一部分错误的存在,如下图所示:在图上,红色圈出了不满足约束的样本,
这时候约束条件变为:
通过上式,可以做如下转化,目标函数和约束变成了如下形式
对上式采用拉格朗日的方法求解,转化为如下形式:
接着对参数分别求导,带入,就如(3)中所示,得到如下形式:
内核的软间距的svm算法如下:
通过上边的式子,可以求出α,但是有一点b还没有求出来,b的求法采用和(3)中类似的方法
当αs≠0时,样本不会对f(x)有影响,
当αs>0时,=1-ξi,该样本是支持向量
ξi≤1时,向量在最大间隔内部。
支持向量机SVM