支持向量机理解

支持向量机是一种非常有效的分类算法,至少在深度学习没有火起来之前,是很受欢迎的。线性可分和非线性可分的样本都能处理。最先我们分割样本的思路就是找到一个最佳的超平面(直线)把正负样本很好的分离。

支持向量机理解

经过深入的实验,然后你会发现这个最佳超平面不是那么好找的,以下的直线都能很好的分割样本,而这样的直线可能有无数条,你怎么办?

支持向量机理解

这时候就引入间隔的概念,r = y(wT x+b)>0 就说明分对了,这是函数间隔,不能适应w,b的变换,进而就有了

几何间隔 支持向量机理解    说白了就是样本点到超平面的距离,

支持向量机理解

红色圈圈和蓝色圈圈的点就是最接近超平面的点,称为支持向量,而红蓝圈圈的分类间隔就是支持向量机理解的大小,直觉上来说,这个分类间隔越大,分类效果越好(证明是对的),支持向量的确定就是这个算法的目标吧。

给定训练样本,最初是这样分的

支持向量机理解

为了适应间隔需求,经过尺寸变化得到等价的

支持向量机理解

再看仔细点,

支持向量机理解

前面提到的分类间隔,这里表示为M

支持向量机理解

理论证明这个 M 越大,训练结果越优

表示成优化问题就是

支持向量机理解

与下面等价,

支持向量机理解

这就是优化方法里面常见的二次凸优化问题,matlab工具齐全,到这里就可以解决完了。然后估计是个效率不高的方法,进一步结合问题本身,提出更高效的解法 SMO。

按照优化方法的习惯,加入拉格朗日乘子alpha,定义拉格朗日函数L,前面的约束条件可以简化成支持向量机理解, L就表示为

支持向量机理解

根据KKT 条件, 需满足的。对分量w,b 求偏导

支持向量机理解

观察 L 表达式, 可以知道 L是一直小于等于原先的目标函数的,因而原先目标函数的最小化等价于L的最大化。

优化问题转化为

支持向量机理解

对于约束条件,可以进一步与式子合并,简化成


支持向量机理解

现在就剩拉格朗日乘子这个参数了,你说怎么办?

二次优化问题常规解法

支持向量机理解

进一步地启发式算法SMO(序列最小优化)

与上面不同的是,每次只选取两个参数进行优化 alpha_i,alpha_j,

求解过程也是求偏导,选取,  实现的话知道最后推导出来的公式就好了==



=====================================================