支持向量机SVM(4)

来源:互联网 发布:ife矩阵结果分析 编辑:程序博客网 时间:2024/06/04 17:41

之前推导的Kernal SVM算法带来了很多好处,但是存在过拟合问题。分析这个问题产生的原因有2个:

1)   核函数表达能力太强,too powerful

2)   我们坚持要求每个样本点都要分对,不允许有错误,这样一些噪音样本会导致过拟合。


如上图,虽然第一个分类有某些点分类错误,但直觉上我们认为这是一种更合理的方式,而第二个图坚持分类正确,但是边界太复杂。

如和解决这个问题,自然而然的想法是容许一些错误,也就是我们放弃一些噪音点。寻找一个次优解。以前是怎么解决的。回想PLA算法,当数据线性不可分的时候,我们有Pocket PLA算法,寻求误差最小的解。将这个思想和hard SVM结合起来,或许就能解决这个问题。




可见最小化目标变成了2项,第一项是力求margin最大化,第二项是我们犯错的大小,C这是权衡二者的权重。C很大,最小化的话第二项必须很小,说明我们力求少犯错,反之,这是力求margin最大。

注意在条件中我们把样本分成了两部分。正确的和不正确的。为了方便我们将上面的最优化问题换个表达方式,如下:




我们称这样的模型为:soft SVM。

观察上面的模型,它是非线性的,也不是一个Qp问题,没办法求解。还有一个问题是,对于犯错误的我们就定义误差为1,否则为0,不能表达误差的大小。比如举例margin越近的误差值应该越小,反之越大。于是我们引入一个新的变量表示第n个样本引入的误差,替换掉原来errorcount的方式。于是Soft SVM为题变为:




这样就变成了一个含有二次项和线性项的二次目标。




Dual Problem

为了消除最优化问题对于d的依赖,回想以前是怎么做的,没错通过朗格朗日乘子引出对偶问题。




不同的是,这里约束表达式有2个,所以有2个乘子,分别是αn和βn.转化后的等价问题是:




为了简化αn和βn ,推导如下:



简化后为题变为:




这个表达式我们很熟悉,没错,就是前面的Hard SVM,用和前面相




将这些条件代入就得到了标准的Soft SVM Dual:






Kernel Soft-Margin SVM


引入Kernal并运用二次规划问题得到KernelSoft-Margin SVM的算法步骤如下:




基本上和Hard SVM相同,注意还有第三步没有解决,之前我们求解b是根据互补松弛性,推出只需要一个SVS就可以计算出b。






Soft-MarginGaussian SVM的实例:




αn的物理意义:



1)   不是支持向量,图中的×和o,对应于αn=0

2)   Free SV,这些向量处于margin的边界上,图中用□表示,对应0< αn <C

3)   Bounded SV,位于margin内部,是受到惩罚的向量,对应αn=C

Practical Need: Model Selection

我们的模型中都有很多参数,比如对于高斯核的SOFT SVM算法,我们有参数γ和C,该如何选择?




不同参数下的分类边界,横轴代表C,纵轴代表γ

其实前面已经有了方法,这就是cross validation——ECV




不同参数下的ECV

用Leave-One-Out CV Error for SVM。我们有以下结论:




不同参数下支持向量的个数

nSV : oftenused as a safety check if computing Ecv is too time-consuming