主要参考,也可以说是摘录自《机器学习》和《机器学习实战》相关章节。
基础知识以及更详细的讲解可看这里:
解密SVM系列 http://blog.csdn.net/on2way/article/details/47729827
能将训练样本分开的划分超平面可能会有很多,直观上应该去找位于两类样本“正中间”的划分超平面。
划分超平面的线性方程组:
wTx+b=0
划分超平面就可以被法向量w和位移b确定,将超平面记为(w,b)。样本空间中任意点到超平面(w,b)的距离可写为
r=|wTx+b|||w||
距离超平面最近的训练样本叫做“支持向量”,两个异类支持向量距离为y。
欲找到具有“最大间隔”的划分超平面,也就是找事满足约束的w和b,使得y最大。
max2||w||
即最小化
min12||w||2
约束条件为
s.t.yi(wTxi+b)>=1,i=1,2,...m
这是支持向量机简称(SVM)的基本型。
现在要做的就是求解上式。
使用拉格朗日乘子法可得到其“对偶问题”,该问题的拉格朗日函数可写为:
将w和b代入消去,得到
从上式中解出a后,可以代回求出w和b。
那又如何求解上式呢,一个著名的高效算法是SMO。
SMO的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么就增大其中一个同时减小另一个。这里所谓的“合适”,就是指 两个alpha必须要符合一定的条件,条件之一就是这两个alpha必须要在间隔边界之外,而其第二个条件则是这两个alpha还没有进行过区间化处理或者不在边界上。