支持向量机
简要介绍
支持向量机(support vector machine),又称SVM,是一种常见的数据分类学习算法,目的是求得参数建立函数f(X)=WTX+b,将样本代入,大于0的与小于0的为不同类别,求得参数有两种方法,其一,满足一个条件,即f(X)=0分开的两个类别间隔要最大化,所以SVM亦称为最大间隔算法,见图一,另外一种方法是类似对数几率回归一样,即使得损失函数最小化,损失函数比较特殊,此处建议观看吴恩达老师的课程支持向量机一章,下文对第一种方法推导。
具体原理
两个类别的最大间距为∣∣w∣∣2,最大化间距即最小化∣∣w∣∣,即我们最终要求
求参数w,b使得21∣∣w∣∣2最小约束条件:yi(wTxi+b)≥1,i=1,2,⋯,m
约束条件即为要满足这条直线(或者平面或者更高维的东东)能够完全分开数据,这是SVM的硬间隔,当然也有软间隔,即不需要完全分开数据,能够承受一定的误差,则能够减少噪声样本的影响,我们还是回到硬间隔上。
上面的公式是不等约束条件的优化问题,用拉格朗日乘子法:
L(w,b,α)=21∣∣w∣∣2+i=1∑mαi(1−(yi(wTxi+b))).∂w∂L=0 →w=i=1∑mαiyixi (1)∂b∂L=0 →i=1∑mαiyi=0 (2)
将(1)式代入拉格朗日函数中,经过复杂的化简,过程见图
即最终得到
W(α)=i=1∑Nαi−21(i,j=1∑NαiαjyiyjxiTxj)
现在求参数α的值使得上述式子有最大值,从而可以求得w和b,不过上述式子还有约束条件
αi≥0yi(wTxi+b)≥1,i=1,2,⋯,mαi(1−yi(wTxi+b))=0,i=1,2,⋯,m
关于为什么求21∣∣w∣∣2最小等价于求W(α)最大,并且还有不同的约束条件,这就涉及到拉格朗日乘子法中不等式约束条件的做法了,即求对偶问题和KKT条件,这里不多述
然而这么多αi,又怎么求呢?这里就用到SMO(序列最小化算法)
其核心思想是
- 选取两个合适的αi,αj,将其他变量看作常数
- 这就变成了双变量的优化问题,约束条件为αiyi+αjyj=C
- 重复步骤1直至达到终止循环条件
有两个问题:1,如何选取αi,αj,2,循环终止条件是什么
-
αi应该要遍历所有的α都要取一遍,αj的选取与αi有关,其标准为两个α所对应的预测误差值之差的绝对值最大
-
当所有α不能被更新,即收敛后则终止循环
最大
- 当所有α不能被更新,即收敛后则终止循环