分类(三):支持向量机SVM

    有些学习方法(如感知机)只需要找到任一线性分界面即可,而另一些方法(如NB)则需要按照某个准则找到最优的线性分界面。对于SVM而言,它定义的准则是寻找一个离数据点最远的决策面。


    SVM算法的数学原理相对比较复杂,但是思想比较简单,就是通过某种核函数,将数据在高维空间里寻找一个最优超平面,能够将两类数据分开


1、支持向量

    从决策面到最近数据点的距离决定了分类器的间隔,这种构建方法意味着SVM的决策函数完全由部分的数据子集所确定,并且这些子集定义了分界面的位置。这些子集被称为支持向量(support vector)。


2、目标函数

例子:

    要用一条直线,将下图中黑色的点和白色的点分开,很显然,图上的这条直线就是我们要求的直线之一(可以有无数条这样的直线)。

213702_rtjX_1020238.png

令黑色的点 类= -1, 白色的点 类 =  +1

sgn表示符号函数,当f(x) > 0的时候,sgn(f(x)) = +1, 当f(x) < 0的时候sgn(f(x)) = –1。

213855_93WX_1020238.png

Classifier Boundary就是f(x),红色和蓝色的线(plus plane与minus plane)就是support vector所在的面,红色、蓝色线之间的间隙就是我们要最大化的分类间的间隙。

213913_fuMe_1020238.png

当支持向量确定下来的时候,分割函数就确定下来了,两个问题是等价的。得到支持向量,还有一个作用是,让支持向量后方那些点就不用参与计算了。

给出我们要优化求解的表达式:

214033_YxM4_1020238.png

min ||w||^2,这个式子可以让函数更平滑,之所以说更加平滑了,我认为是因为平方的作用使得w表示的特征更加明显从而更易区分,所以SVM是一种不太容易over-fitting的方法。


原问题,加上一些限制条件:

215245_Knjo_1020238.png

后面的s.t. 限制条件有多个,对应着样本的个数。


3、拉格朗日乘子法

    在求解上式最优解前,先来看看拉格朗日乘子法。

探讨不等式约束的极值问题求法,问题如下:

154750_FR32_1020238.png

定义1:一般化的拉格朗日公式:

154830_8ErJ_1020238.png

这里的α和β都是拉格朗日乘子,要求上式的最小值,先看看定义2.


定义2:

155311_Lzos_1020238.png

p代表primal原始的。

假设gi(w)>0或者hi(w)≠0,因此可以通过调整α和β来使得Θp(w)有最大值为无穷;而只有当满足约束gi(w)≤0 and hi(w)=0时,Θp(w)可以f(w)。如下图:

155828_htFg_1020238.png

因此,我们要求的min_w f(w) 可以转换为 min_w Θp(w) 。

160310_GiXK_1020238.png

要求解min_w Θp(w),首先是有2个参数w和α,其次先求关于α的最大值,考虑到α也是不等式约束,然后再在w上求最小值,难度比较大。那先看看定义3


定义3:

160704_CThK_1020238.png

D代表dual对偶,ΘD(w)将问题从原先的先求关于α的最大值再求关于w的最小值,转变为先求关于w的最小值再求关于α的最大值,

160929_OZlT_1020238.png

这个问题是原问题的对偶问题,相对于原问题只是更换了min和max的顺序,而且一般更换顺序的结果是

161045_Webi_1020238.png

上式的相关证明,请参考:http://www.cnblogs.com/zhengyuhong/p/3590635.html 对该关系解释的很详细很清楚。

下面解释下两者在什么情况下是等价的,也就是满足KKT(Karush-Kuhn-Tucker, KKT condition)条件。


4、KKT

该条件如下:

162540_KeoV_1020238.png

所以,如果w, α, β满足上述的几个条件,那么他们就是原问题和对偶问题的解。

其中,公式(5)这个条件可以理解为如果α>0,那么gi(w)=0,也就是说w处于可行域(gi(w)≤0)的边界上,也就是所说的支持向量;如果α=0,那么gi(w)<0,也就是位于可行域的内部,也就不是所说的支持向量。


5、目标函数的变换

讲了这么多定义,回到SVM目标函数求最优解的问题上来。

原问题:

215245_Knjo_1020238.png

利用拉格朗日乘子法,转换为拉格朗日函数

165040_0sdw_1020238.png

下面按照对偶问题的求解步骤进行:

165218_F26R_1020238.png

对上式,没有β原因是没有等式约束条件,首先求解L(w, b, α)最小值,只和w、b有关系,因此对w和b分别求偏导,得到:

165758_04s6_1020238.png

165812_SDUY_1020238.png

第一个式子变换下得到:

165835_2jK3_1020238.png

将其代回到拉格朗日函数,并将其化简:

170025_5uBv_1020238.png

最后得到:

170052_DKj6_1020238.png

由于最后一项为0,简化为:

170122_Zqeg_1020238.png

拉格朗日函数现在只包含α变量,而我们求出了α也就得到了w和b。

接着,是极大化过程:170318_2t48_1020238.png

170319_UYVy_1020238.png

对于这个问题的求解,需要借助SMO(序列最小优化算法)等算法。





本文参考的博客:

http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html

理解SVM的三层境界:

http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495537.html

http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495689.html   帮助挺大的,讲的易懂

http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html

拉格朗日乘子和KKT条件:

http://www.cnblogs.com/zhengyuhong/p/3590635.html 


转载于:https://my.oschina.net/u/1020238/blog/520222

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值