支持向量机与SMO优化算法

来源:互联网 发布:广发大数据 编辑:程序博客网 时间:2024/05/21 00:45

1 算法概述

1.1 工作原理

类似于感知机,用一个分离超平面将正负类分开,不同之处在于,感知机只是要求分开正负类,而支持向量机要求找出分离间隔最大的超平面。

1.2 三要素

模型:超平面分类决策模型

策略:分类间隔最大化、合页损失函数最小化

算法:凸二次规划、序列最小化算法(SMO)

1.3 线性可分支持向量机与硬间隔

1.3.1 函数间隔和几何间隔

我们定义函数间隔为  ,超平面为 

如果我们成比例的改变 w 和 b,超平面没有任何变化,但是函数间隔却同比增大或减小,这是没有意义的,所以无法把函数间隔当做优化目标。但我们可以对法向量w增加一些约束,这时函数间隔成为几何间隔。

1.3.2 约束条件最优化问题

由于函数间隔对最优化问题的解没有影响,所以对其取1,最优化目标变为凸二次规划问题(有最优解)



1.3.3对偶算法

使用对偶算法的原因:1,对偶问题往往更容易求解 2,引入核函数,推广到非线性分类问题

将约束条件作为拉格朗日乘子,构建拉格朗日函数,极大化拉格朗日函数才能等价于原问题。原问题极小极大问题,转换为极大极小问题。

对偶最优化问题的解为α(>0),由α求出原始问题的解 w 和 b,组成分离超平面。

1.3.4 KKT条件

(1)拉格朗日函数L对原始问题参数w、b和拉格朗日乘子向量α的偏导数为零。

(2)第二项拉乘子与约束条件的乘积和小于等于零。

(3)第三项仿射函数等于零

(4)拉格朗日乘子α大于等于零。

(5)拉乘子与约束条件的乘积等于零(对偶互补条件)

1.3.5 支持向量

由于w和b只依赖于训练数据中对应于α>0的点,其他点没有影响,所以称其为支持向量。

根据kkt互补条件,支持向量就是位于间隔边界上的点。

1.4 线性支持向量机与软间隔

1.4.1 软间隔

线性可分支持向量机,对线性不可分训练数据是不适用的,因为不等式约束条件不能都成立。这时我们就需要修改间隔的标准,使其成为软间隔最大化。对于某些不能满足函数间隔大于1的点,引入一个松弛变量,使函数间隔大于1-

加上惩罚参数C,原始问题如下:



      

C越大,代表对误分类惩罚力度越大。

1.4.2 对偶算法

对偶形式化后,约束条件变为0<= α <= C,w可由 KKT 条件推出,而b需要进一步限制条件,即kkt互补条件和0<α<C,由此可推出b的计算公式。

1.5 非线性支持向量机与核函数

非线性分类问题是指通过利用非线性模型才能更好地进行分类的问题。所采取的办法是将原问题输入空间映射到一个新的空间(希尔伯特空间),在新空间中,原来线性不可分的数据变得线性可分,从而把非线性问题变换为线性问题。

在支持向量机问题中,将对偶问题目标函数中的内积用核函数代替,分类决策函数同样。

常用核函数:多项式核函数、高斯核函数、字符串核函数

2 序列最小化算法(SMO)

2.1 工作原理

支持向量机的问题可以形式化为凸二次规划问题,此问题可以有全局最优解,但当训练集容量很大时,算法往往变得低效,所以我们引入一个优化算法提高效率。

基本思路:如果所有变量的解都满足最优化问题的KKT条件,那么最优化的解就得到了。也就是说,我们通过不断优化变量满足KKT条件,直到所有变量都符合条件,此时,我们求得的解就是最优解。

2.2 优化方法

每次选择两个变量,固定其他所有变量,这样构建的一个二次规划问题有解析解,如果这两个变量得到了优化,那么原始的二次规划问题也更接近最优解。

α1:第一个变量的选择为外层循环,选取违反KKT条件最严重的的样本点。首先遍历0<α<C的样本点,即在间隔边界上的点,然后在遍历整体训练集。

α2:第二个变量的选择希望使其有足够大的变化,找到差值最大的作为其选择。

注:更新完变量后,要对其剪辑,满足不等式约束。


优点:泛化能力强,计算开销小,结果易于解释

缺点:对参数调节和核函数的选择敏感


参考资料:统计学习方法(李航)、机器学习实战(Peter)

原创粉丝点击