一、拉格朗日对偶性
在学习SVM之前,首先要理解什么是拉格朗日对偶性,
1.原始问题
假设f(x),ci(x),hj(x)是定义在Rn上的连续可微函数,考虑yue束优化问题
称此问题为原始问题。
2.由原始问题引入的拉格朗日函数
这里x=(x(1),x(2),…x(n))属于Rn,ai,βi是拉个朗日乘子,ai>=0。另外,考虑以下问题:
显然,L(x,ai,βi)的第三个多项式为0,若是上述问题求得最大值,只有当ai取0值的情况下可以得到.当上述问题取得最大值时,则θp(x)=f(x).因此,有如下关系式:
如果此时再考虑最小化问题
这个问题与原始问题是等价的,他们有相同的解.因此可以把原始问题当作广义拉格朗日函数的极大极少问题.
3.对偶问题
我们称以下问题为上述C.8问题的对偶问题
4.原始问题和对偶问题的关系:
根据数学家的推导,在满足kkt条件的情况下,原始问题和对偶问题具有相同的解,即原始问题的最小值等于对偶问题的最大值,并且两者有着相同的最优解.一下是kkt条件:
有了这个基础之后,再去看看支持向量机就容易多了。
二、支持向量机
支持向量机分为线性可分,近似线性可分,线性不可分3中情况。先介绍最简单的线性可分的情况。假设给定特征空间上的训练数据集T={(x1,y1),(x2,y2),…(xn,yn)}.其中,xi为第i个特征向量,yi为xi的类标记。当yi=+1,称xi为正例,当yi=-1,成xi为负例。线性目标是找出一个超平面,将实例分成不同的类别,分离超平面对应的方程是w.x+b=0.相应的决策函数是f(x)=sign(w.x+b).支持向量机学习的基本想法是求解能够正确分类划分数据集合并且使得几何间隔最大的分离超平面。这就意味不仅要将正负实例点分开,并且要一足够大的确信度将他们分开。
根据一些文献资料,可以得出如下线性可分支持向量机学习的最优化问题:
约束条件中的yi是类标签,而(w.xi+b)是估计出来值,当估计正确,则两者的乘积为一个正数。可以把这个约束条件理解为把所有的点都分类正确。
然后讲上述线性可分支持向量机的最优化问题构建一个拉格朗日函数如下:
根据上面阐述的知识,这个函数在一定的条件下可以等价于原始问题。同时,我们可以利用如下的对偶问题求出这个拉格朗日函数的最优解,也就是原始问题的最优解。
以下是该拉格朗日函数的对偶问题:
求得最优解:
然后得出:
选择其中的aj>0,计算
最后得出决策平面:
三、线性不可分的支持向量机
我对这个的理解比较肤浅。当样本在低维空间中线性不可分时,经过高维变换之后,将样本投影到高维的空间,然后达到可分的效果。
以高斯核函数为例:
该核函数对应的支持向量机手机高斯径向基函数分类器,在此情况下,分类决策函数为:
其实,在所有实现的代码过程中,只需要将x和xi做内积的部分用K(x,xi)核函数替换就好。
四、序列最小化最优化算法
假如通过标题二中的方法求解的话,当训练样本很大的时候,运算量就会变得很大。所以platt提出了SMO算法。SMO算法的思路是,当所有的变量的解都满足最优化问题的KKT条件,那么这个解就是该最优化问题的最优解。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划子问题,这个二次规划子问题会更接近原始二次规划问题的解,因为这会使得目标函数的值变得更小。假设选择两个变量a1,a2.其他变量为ai(i=1,2,..N)是固定的。则SMO的子问题可以写成:
其中约束条件:
分析约束条件,用二维空间中的图像表示约束条件:
设最优值a2new取值范围要满足条件:
当y1不等于y2,如上左图所示,则
若y1等于y2,则
上面是a2new的边界值。当a2在边界内时,计算方式如下:
综合上述,a2new的解是
而a1new的解是
每次完成两个变量的优化后,要重新计算b。当a1和a2都是大于0小于c,根据kkt条件,那么
此时b1=b2.
如果a1,a2是0或者c,根据kkt条件,选择b1和b2的重点作为新的b。
一直迭代上述过程,知道所有的变量都符合KKt条件,得出来的解就是最优解。