1 间隔与支持向量机
分类学习最基本的想法就是基于训练集在样本空间找到一个划分超平面,将不同类别的样本分开。划分超平面可以通过如下的线性方程来描述:
![](https://i-blog.csdnimg.cn/blog_migrate/7be006aa0da5dcf925374ff23c0e2dd0.gif)
其中
为法向量,决定了超平面的方向;
为位移项,决定了超平面和原点之间的距离。样本空间中任意点
到超平面
的距离可写为:
![](https://i-blog.csdnimg.cn/blog_migrate/217b0e7039d69b82bf24db2598252dfc.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6872867a863714d15d9a0d64c20734ce.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7e62167f7eef0d87631af965cde5ead1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/d5638e78977a60c3666bedf166cc722e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ab3151b8c37d84a9f39ea9c95dcb24fd.gif)
令
![](https://i-blog.csdnimg.cn/blog_migrate/b1564845147b8803595465d153741367.gif)
如下图使得(3)等号成立的距离超平面最近的这几个训练样本点称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为
![](https://i-blog.csdnimg.cn/blog_migrate/cbc0353dd23a1ede99da22ca4cfc4866.gif)
其被称为间隔(margin)
欲找到具有最大间隔的划分超平面,也就是要找到满足(3)式的参数
和
,使得
最大,即
![](https://i-blog.csdnimg.cn/blog_migrate/c0f8fee67cd8cfaf98b5584fcfbf03fb.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6872867a863714d15d9a0d64c20734ce.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/cdab9437b701fd21fb3294cfba7c4bc2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6c21fdd5cd0d817afa3cd08217fdb52e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/884bb8dc8b598c0fd81424efb49f1635.gif)
显然,为了最大化间隔,仅需最大化
,这等价于最小化
,于是(5)可重写为:
![](https://i-blog.csdnimg.cn/blog_migrate/c7f79c2ddbade2e0b4cd14999fff5032.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3cff19df41ab1cf459b0440e094adbfa.gif)
![](https://img-my.csdn.net/uploads/201210/25/1351141994_1802.jpg)
这就是支持向量机(support vector machine, SVM)的基本型。
2 对偶问题
通过上述描述 我们想要通过(6)来得到最大间隔划分超平面所对应的模型
(6)式本身是一个凸二次规划(convex quadratic programming)问题,能直接用现成的优化计算包求解,但是可以用更高效的办法。
整个思路:为确定函数
中的参数
和
,寻找最大分类间隔,导出
,继而引入拉入拉格朗日函数,化为单一因子对偶变量
的求解,如此,求
与
等价,而求
即为SMO。
![](https://i-blog.csdnimg.cn/blog_migrate/c0f8fee67cd8cfaf98b5584fcfbf03fb.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6872867a863714d15d9a0d64c20734ce.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8d4d56e27f6ad1b262367c1af20aa05f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/c0f8fee67cd8cfaf98b5584fcfbf03fb.gif%2Cb)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif)
对式(6)使用拉格朗日乘子法可得到其“对偶问题”(dual problem):
![](https://i-blog.csdnimg.cn/blog_migrate/3556f80b238c68c2bc72252c64b5c9be.gif)
其中
。令
对
和
的偏导为零可得:
![](https://i-blog.csdnimg.cn/blog_migrate/ad606420592aec697332db00285b492a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/bd38f57e0481d54905666d15cb2061f3.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/c0f8fee67cd8cfaf98b5584fcfbf03fb.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6872867a863714d15d9a0d64c20734ce.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/d5c3e4b220c288e4dcc42501e40dbf86.gif)
将(9)带入(8)再考虑(10)的约束,就得到了(6)的对偶问题:
![](https://img-my.csdn.net/uploads/201206/02/1338605996_4659.jpg)
求解
后即可得到模型:
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif)
![](https://img-my.csdn.net/uploads/201210/25/1351142572_5782.jpg)
上述过程需满足KKT(Karush-Kuhn-Tucker)条件,即要求:
![](https://i-blog.csdnimg.cn/blog_migrate/a0a063b81526db5ddc122f4bb617366d.gif)
若
,则
,所对应的样本点位于最大间隔边界上,是一个支持向量,这显示出支持向量的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D%3E0)
![](https://i-blog.csdnimg.cn/blog_migrate/45c35522660e9403b384c669f7ff1d88.gif)
(11)是一个二次规划问题,采用二次规划算法求解时,当训练样本较多时,开销很大。因此,采用SMO(Sequential Minimal Optimization)的高效算法。
SMO的基本思路是先固定
之外的所有参数,然后求
上的极值。由于存在约束
,若固定
外的其他变量,则
可由其他变量导出。于是SMO每次选择两个变量
和
,并固定其他参数,这样,在参数初始化时,SMO不断执行如下两个步骤直至收敛:
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/d5c3e4b220c288e4dcc42501e40dbf86.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
1)选取一对需要更新的变量
和
;
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
2)固定
和
以外的参数,求解(11)获得更新后的
和
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
选择
和
时,选取的两变量所对应的样本之间的间隔最大,直观的解释就是:这样的两个变量有很大的差别,对它们进行更新会给目标函数更大的变化。
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
仅考虑
和
时,(11)中的约束条件可重写为:
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7Dy%20_%7Bi%7D+%5Calpha%20_%7Bj%7Dy%20_%7Bj%7D%3Dc%2C%2C%5Calpha%20_%7Bi%7D%5Cgeq%200%2C%5Calpha%20_%7Bj%7D%5Cgeq%200%2C)
其中
![](https://i-blog.csdnimg.cn/blog_migrate/7b2f118a34a7c5ae64161a58f112bb9e.gif)
用(14)中的等式消去(11)中的
,则得到一个关于变量
的单变量二次规划问题,仅有的约束为
,这样的二次规划问题是有闭式解的,不必调用优化算法即可高效的计算出更新后的
和
。
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D%5Cgeq%200)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bi%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/82005cc2e0087e2a52c7e43df4a19a00.gif%20_%7Bj%7D)
然后就是确定偏移项
,主要到对支持向量
,都有
,即
![](https://i-blog.csdnimg.cn/blog_migrate/6872867a863714d15d9a0d64c20734ce.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a132bf021c7f89bfb3eb9fb10e94bb33.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4817255f2dab1bd15780d821e86b5d12.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/36d09908cda199933657d5781a248d19.gif)
其中
为所有支持向量的下标集。理论上可选取任意支持向量机并通过求解(16)式获得b,但现实任务中常采用一种鲁棒性的做做法:使用所有支持向量求解的平均值
![](https://i-blog.csdnimg.cn/blog_migrate/988eb79721742b0fc7fee7147ab57d0c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6872867a863714d15d9a0d64c20734ce.gif%3D%5Cfrac%7B1%7D%7B%7CS%7C%7D%5Csum_%7Bs%5Cin%20S%7D%281/y_%7Bs%7D-%5Csum_%7Bi%5Cin%20S%7D%5Calpha%20_%7Bi%7Dy_%7Bi%7D%5Cmathbf%7Bx%7D_%7Bi%7D%5E%7BT%7D%5Cmathbf%7Bx%7D_%7Bs%7D%29)
3 核函数
前边的讨论中样本是线性可分的,即存在一个划分超平面能将训练样本正确分类,然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面,对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。幸运的是,若原始空间是有限维的,即属性数有限,那么一定存在一个高维的特征空间使样本可分。
令
表示
映射后的特征向量,于是在特征空间中划分超平面所对应的模型可表示为:
![](https://i-blog.csdnimg.cn/blog_migrate/84a410f2f8f889f27fac8065647f137b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7e62167f7eef0d87631af965cde5ead1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/abf66c85067e45e22cc2dbc8b4699226.gif)
类似(6),有
![](https://i-blog.csdnimg.cn/blog_migrate/ce333bd07b23dbf755c147f3c7a70ea1.gif)
其对偶问题为
![](https://i-blog.csdnimg.cn/blog_migrate/f34f9f801b413337f09e076a5a6e25f7.gif)
求解(20)涉及到计算
,这是样本
和
映射到高维特征空间之后的内积,通常直接计算
是比较困难的,为避开这样,可以设想一个函数:
![](https://i-blog.csdnimg.cn/blog_migrate/3a2ad83362e1774b49c1d1102f5bd0db.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/c723a32f1741e1064775fb7951ee980b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/942cbccf5436b6f5ea2a35d3835cf6a0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3a2ad83362e1774b49c1d1102f5bd0db.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9dc466038dfd5507651a1a1291a727ec.gif)
即
和
在特征空间的内积等于它们在原始样本空间中通过函数
(核函数)计算的结果。于是(20)可重写为:
![](https://i-blog.csdnimg.cn/blog_migrate/c723a32f1741e1064775fb7951ee980b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/942cbccf5436b6f5ea2a35d3835cf6a0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/12c758c8cabd1414932f224fa82251fa.gif)
![](https://img-my.csdn.net/uploads/201304/03/1364957480_2629.jpg)
求解后可得到:
![](https://i-blog.csdnimg.cn/blog_migrate/7e37f7b386432fe3dea7c7dce6fb6fb4.gif)
核函数的存在问题:
Mercer定理:
如果函数K是
上的映射(也就是从两个n维向量映射到实数域)。那么如果K是一个有效核函数(也称为Mercer核函数),那么当且仅当对于训练样例
,其相应的核函数矩阵是对称半正定的。
![](https://i-blog.csdnimg.cn/blog_migrate/6224e0480147d65a1688a6b29d987f8a.png)
![clip_image065[7]](https://i-blog.csdnimg.cn/blog_migrate/cc32ab45551d370c8ca6c114b269caa5.png)
常用核函数:
1 线性核函数
![](https://i-blog.csdnimg.cn/blog_migrate/18e18b807bd87b575ed6c0da6a5fd25b.gif)
2 多项式核
![](https://i-blog.csdnimg.cn/blog_migrate/e9a1dd8beaa1b91858f4f3ae7cb7f185.gif)
3 高斯核
![](https://i-blog.csdnimg.cn/blog_migrate/5c302568a909427d05a8c4b148926b5b.jpeg)
4 拉普拉斯核
![](https://i-blog.csdnimg.cn/blog_migrate/fd21e76042198dea7b21b3ca8d30c013.gif)
5 Sigmoid核
![](https://i-blog.csdnimg.cn/blog_migrate/468a63da8aca3fabad2317b706f7ff34.gif)
此外,还可以通过组合得到:
若
和
位核函数,
和
为任意正数,
![](https://i-blog.csdnimg.cn/blog_migrate/3031b6555a5a73063a9a9393abbbad96.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/96d1dcc5be0f6a0ae852768a8a986447.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/cdab9437b701fd21fb3294cfba7c4bc2.gif%20_%7B1%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/cdab9437b701fd21fb3294cfba7c4bc2.gif%20_%7B2%7D)
1)核函数的线性组合:
![](https://i-blog.csdnimg.cn/blog_migrate/cdab9437b701fd21fb3294cfba7c4bc2.gif%20_%7B1%7Dk%20_%7B1%7D+%5Cgamma%20_%7B2%7Dk%20_%7B2%7D)
2)核函数的直积:
![](https://i-blog.csdnimg.cn/blog_migrate/5643c6258aac573721614972e8a8b43b.gif)
3)任意函数
:
![](https://i-blog.csdnimg.cn/blog_migrate/b6eded5f8c0fc4358ca9d1febdb7406e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7617a6108924d028079887adccc96e6c.gif)
4 软间隔与正则化
在现实任务中很难确定合适的核函数使得训练样例在特征空间线性可分;退一步说,即使恰好找到个某个核函数使训练样例在特征空间线性可分,也很难断定这个貌似线性可分的核函数是不是由于过拟合多造成的。
缓解该问题的一个办法是允许SVM在一些样本上出错,为此,要引入“软间隔”(soft margin )的概念。
![clip_image048](http://images.cnitblog.com/blog/458371/201212/31223704-0758d0b56ff7413985d4dacd3b0431d5.jpg)
前边所介绍的所有样本都必须划分正确,这成为“硬间隔”(hard margin),当引入软间隔时,就引入了松弛变量
,在最大化间隔的同时,不满足约束样本应尽可能少,于是优化目标可写为:
![](https://i-blog.csdnimg.cn/blog_migrate/ca15a418b6112a453ea57dc692655037.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/fb0236724ccb53502057e365084fef10.gif)
这就是“软间隔支持向量机”,其中C为惩罚因子。依据SVM的推到可得:
![clip_image058](http://images.cnitblog.com/blog/458371/201212/31223708-a01452bf52db485194b52f0fa9a691c1.jpg)
![clip_image060](http://images.cnitblog.com/blog/458371/201212/31223709-eb1d9347cad04148820012e175a86282.jpg)