博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分类(三):支持向量机SVM
阅读量:5898 次
发布时间:2019-06-19

本文共 1812 字,大约阅读时间需要 6 分钟。

hot3.png

    有些学习方法(如感知机)只需要找到任一线性分界面即可,而另一些方法(如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

上式的相关证明,请参考: 对该关系解释的很详细很清楚。

下面解释下两者在什么情况下是等价的,也就是满足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(序列最小优化算法)等算法。

本文参考的博客:

理解SVM的三层境界:

   帮助挺大的,讲的易懂

拉格朗日乘子和KKT条件:

 

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

你可能感兴趣的文章
Layout.addView时报错 java.lang.IllegalStateExcepti...
查看>>
Office 365 轻松上手指南 - SharePoint Online (二)
查看>>
HTML5与CSS3视口-retina屏幕适配
查看>>
21-DHCP Relay技术 //IOU模拟
查看>>
为什么开发人员必须要了解数据库锁?
查看>>
vlan hybrid端口的简单设置
查看>>
墨者安全分享:DDoS功击原理和防护原理
查看>>
Shell命令-文件及内容处理之sort、uniq
查看>>
Github项目推荐-图神经网络(GNN)相关资源大列表
查看>>
VLAN在交换机上的实现方法,可以大致划分为六类
查看>>
windows server 2008 R2 AD 域之---当计算机加入域时出现“拒绝访问”错误消息
查看>>
Centos7 使用NVM安装Node.js
查看>>
Egret3D之初体验
查看>>
Learn In 2016 | 2016最值得学的框架与语言
查看>>
pxe.sh
查看>>
Memcache分布式部署方案
查看>>
redis开启多个实例
查看>>
ubuntu启动时的初始化信息一
查看>>
Weave Scope 多主机监控 - 每天5分钟玩转 Docker 容器技术(81)
查看>>
PowerPC
查看>>