支持向量机(SVM)(四)----SMO

    我们前几节说了线性可分,以及在低维线性不可分,但是在高维是线性可分的。还有一种情况,如下图:


    这种因奇异点而造成的划分平面不合理的移动,不是我们所想的,或者因为个别奇异点导致线性不可分,其余的大部分的点都是线性可分的,如果因此 就映射到高维来解决,那么也不值当,如下的情况:


    这些情况因为outliers而造成了线性不可分,或者导致划分超平面不是很明确。为了降低线性不可分的算法对,对奇异点的敏感程度,我们引入正则化。也就是说,我们现在不要求,每个样本点到分割平面的函数间隔至少为1,我可以允许少部分的点可以在间隔内,但是大部分的点都是在间隔之外的。也可以理解我们对每个样本点加入一个松弛变量,这样就会使得个别点的函数间隔加上松弛变量之后大于等于1,这样,约束条件就变成:


    与此同时,我们会对每个松弛变量,付出一个代价,那么原来的目标函数于是就变成:


    如此,我们就允许样本的函数间隔小于1,如果某个函数的间隔为,那么我们就要对目标函数付出的代价。参数C大的时候,对错误分类的惩罚增大,C值小时对误分类的惩罚减小,因此,参数C就是控制,使得最小,(也就是使得间隔尽量大),同时使得误分类的个数尽量小!故而C是一个调和二者的系数!

    对于上述这种支持向量机,我们也称为线性支持向量机,只不过相对于硬间隔最大化,我们的目标函数实现的就是软间隔最大化,也就是允许个别点在的函数间隔略小于1.于是我们的问题就变为:


    现在问题的解法与我们之间方法是一样的,只不过加入了一个松弛变量。同样利用Lagrange multiplier,可得:


    我们对等式两边分别对,b,,求偏导得:




    同样带入原式,得:


    我们根据(1),(2),(1)+(2) 得:,又因,则:。原问题化为对偶形式:



    从上式可以看出,与硬间隔相比,只是改变了取值范围。根据KKT条件我们有:




    这几个式子在SMO算中有非常重要的作用,乍一看不是太明白,所以我们还是根据KKT条件来推导一下,原问题的部分KKT条件为:


    再加上这个条件便有:


    (1)证明:

    

    (2)证明:


    (3)证明:

    

    我们所有该交代的都已经说明,还剩最后一个任务没有解决掉,那就是如何求解:



    SMO(Sequential Minimal optimization)

    SMO是启发式算法,其基本思路是:

    1,如果所有变量的解都满足此最优化问题的KKT条件, 那么得到解;

    2,否则, 选择两个变量, 固定其它变量, 针对这两个变量构建一个二次规划问题, 称为子问题, 可通过解析方法求解, 提高了计算速度。

    3,子问题的两个变量: 一个是违反KKT条件最严重的那个, 另一个由约束条件自动确定。

    注意,子问题中的两个变量,只有一个是自由变量。假如为两个变量,其余的固定,根据:


    可知:


   可以看出,如果确定,那么也随之确定,所以子问题中,同时更新两个变量。为了让问题一般化,我们的目标函数可以改写成如下形式:



    由上式得:,不妨设变量为,固定,由于公式太长,懒得敲了,手推了一下:


    为了求解该二次规划问题,我们首先要对约束条件进行分析,然后在这个约束条件下求解最小值。从上数中我们知道,总共只有两个变量,其变化可以在二维空间中描述。图中我们设,而只能为+1或者-1,所以两者要么相等,要么互为相反数,于是:


    其中(1)和(2)是相同的时候,(3)和(4)是不相同的时候。那么对应如下:



    在纸质照片,最后求出的目标函数中,假设其初始可行解为,最优解为:,并且假设沿着约束方向,的未剪切最优解为:。由于需满足,再根据的关系我们可以知道,最优值还必须要满足:


    其中L与H是所在对角线端点的界,要交代一下,我们刚刚提到的未剪切的最优解,指的是我们接下来不考虑这个范围,故而称为未剪切!如图1,如果不相同的时候,L就是在M,N两点中取最大值,H就是在A,B两点坐标中取最小值,即:


    同理在图2中我们可以得到:


    我们先求解为剪切时的最优值


    最后推导出了


    又因为的最优值又必须满足,所以经约束条件之后为:


    又因为,我们将带入到,于是有:


    我们知道,并且等式两端同时除以和乘以的结果是一样的,因此我们有:


    以上就是SMO的算法流程,到此我们也结束了SVM。





参考:李航《统计学习方法》

          吴恩达 机器学习课程   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值