支持向量机理解
支持向量机是一种非常有效的分类算法,至少在深度学习没有火起来之前,是很受欢迎的。线性可分和非线性可分的样本都能处理。最先我们分割样本的思路就是找到一个最佳的超平面(直线)把正负样本很好的分离。
经过深入的实验,然后你会发现这个最佳超平面不是那么好找的,以下的直线都能很好的分割样本,而这样的直线可能有无数条,你怎么办?
这时候就引入间隔的概念,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,
求解过程也是求偏导,选取, 实现的话知道最后推导出来的公式就好了==
=====================================================