1.目标函数
支持向量机将向量映射到一个高维的空间中,并在这个高维空间中建立一个最大间隔超平面,使得观察到的数据能够根据其类别最好地划分开。分布在分类超平面的间隔区边缘的样本点即为支持向量机所对应的支持向量。
支持向量机的目标函数形式化描述如式(1):
(1)
其中是分类超平面的方向向量,是输入向量。分隔的超平面是。为了获得最佳的分类超平面,就要使得不同类别中距离分类超平面最近的样本点相距最远,亦即分类间隔最大。最近的样本点在平面上,因此,分类间隔可表示为式(2):
(2)
其中||w||为w的范数,范数是一种度量向量长度的方法。最大化间隔可表示为式(3)的最优化问题:
(3)
式中s.t表示约束条件。引入松弛变量和惩罚因子,式(3)修改为式(4):
(4 )其中,xi为训练样本的实例,yi是对应实例的目标函数值(1或-1,对应正负样本的标签),是对应每个实例的松弛变量,C是惩罚因子,对于所有的样本惩罚因子相同,w是支持向量机需要求解的超平面的斜率。
2.SMO算法求解
求解支持向量目标函数的方法主要有“Chunking”方法,“Osuna”方法,“SMO”方法。本章中采用“SMO”算法[10],即序列最小优化算法来求解传统支持向量机的目标函数。SMO算法是一种启发式搜索算法,特别是当训练样本中支持向量比较少时,SMO算法能快速地求解出SVM模型。下面将给出支持向量机目标函数求解的推导过程,最后介绍SMO算法求解SVM模型时的约束条件。
对式(4),构造拉格朗日函数,如式(5):
(5)
其中,,为拉格朗日乘子。
上式分别对w,b,求导,并令偏导数为0,如式(6)、式(7)、式(8):
(6)
(7)
(8)
由KKT条件可知,目标函数取得极值时,最优解一定位于约束边界,即最优解满足式(9)与式(10):
(9)(10)
分析式(6) (7) (8) (9) (10),可得出如下结论:
- ,即对应正确分类点;
- ,即对应支持向量;
- ,即对应误分点。
应用拉格朗日函数与KKT条件,式(4)可转化为式(11):
(11)其中K(xi,xj)是核函数,ai是每个样本对应的拉格朗日乘子。
式(11)可通过序列最小优化(SMO)算法来求解。该算法使用启发式搜索,同时更新两个算子。SMO算法每次更新两个拉格朗日乘子,由于条件的约束,的更新应满足下图所示的要求:
如图3.1所示,拉格朗日乘子的更新受惩罚因子C的约束。当要更新的a算子所对应的样本标签不同时,由条件知,,
如上图左图所示,其中,且。同理,当更新的a算子所对应的样本标签相同时,,如上图右图所示。惩罚因子C表示对样本的重视程度,限制了a的取值范围,而,因此也间接影响到分类超平面的方向。