最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github。
本文将讲解有关支持向量机(SVM)的有关知识,主要包括线性可分SVM,线性SVM和非线性SVM的相关原理和算法过程,以及SMO算法。该部分内容数学公式的推导非常非常多,一环扣一环,所以我尽量从中学数学的角度,尽可能直观的展现整个思维过程,读者们最好在了解整个算法流程之后自己在草稿本上推导一遍。此外,本文中将不再提前给出相关的定义,而是在遇到的时候再给出,或者在事后总结的时候给出。
本文主要是依据李航老师的《统计学习方法》和邹博老师的机器学习教学视频总结编写的。文中所用到的有关机器学习的基本概念和方法可以参考本人博客中该系列之前的文章,或者直接上网搜索相关的内容。以下文章所列出的公式以及公式的推导读者们最好是在草稿本上自己推导一遍。由于本人水平所限,文章中难免有错误和不当之处,欢迎大家多多批评指正!
一、支持向量机基本思想
支持向量机(support vector machines,SVM)是一种二分类模型,在神经网络提出之前可以说是效果最好的分类模型。SVM主要有三种:对线性可分数据根据硬间隔最大化进行分类的SVM被称为线性可分SVM(或硬间隔SVM);对近似线性可分的数据根据软间隔最大化进行分类的SVM被称为线性SVM(或软间隔SVM);对线性不可分数据根据核函数及软间隔最大化进行分类的SVM被称为非线性SVM。这三种不同情况也是由简至繁的。
所谓的线性可分就是指在一个二分类问题中,一定存在一个超平面将两个类别完全分割开,超平面的一侧是正类,另一侧是负类。那么什么又是超平面呢?超平面是n维空间中维度为n-1维的线性子空间,说人话就是:二维平面中的超平面是一维直线,三维空间中的超平面是二维平面,依此类推……
先来考虑最简单的情况——线性可分SVM。既然对于线性可分的数据一定存在一个超平面将两个类别完全分割开,那么我们希望样本点离该分割(离)超平面越远越好,最好使得距离该分割超平面最近的点最远。而距离分割超平面最近的点一定是至少有两个,并且分布在超平面两侧的两个类别中。不然,假如一个类别中的样本点到超平面最近的距离为4,另一个为6,则一定可以通过平移该分割超平面使得两者距离都为5。

如上图所示,红色实线为分割超平面,虚线经过距离分割超平面最近的样本点,其他样本点都位于虚线的一侧,可以说虚线把一类中的所有样本点支持住了,故虚线也被称作支持向量。而两条虚线是平行于实线的,且它们到实线的距离是相等的。线性可分SVM的目的就是找出这个使得距离该分割超平面最近的点最远的分离超平面。
二、线性可分支持向量机
线性可分SVM能够使用的前提是训练集数据是线性可分的。其思想是找出使得距离该分割超平面最近的点最远的分离超平面:W^X+b^=0,则相应的决策函数为:
f(X)=sign(W^X+b^)
上式的含义是当样本位于超平面的一侧时分类结果为正,另一侧为负。其中sign(x)是符号函数,其定义为:

现在知道了线性可分SVM的模型和其分类方式,下面来看怎么寻找这个最优的分割超平面。
我们知道,二维平面中的一条直线的一般式方程为:Ax+By+C=0,而一个点(x0,y0)到该直线的距离为:
dist(x0,y0)=A2+B2∣Ax0+Byo+C∣
当上式的分子不加绝对值时,则距离有正有负,位于直线一侧的点到直线的距离为正,另一侧的为负。拓展到更高维度的空间,设所求分离超平面的一般式方程为:
WTX+b=0
其中W和X是关于参数和变量(特征)的向量,b是一个标量,即:
W=(w1,w2,…,wn)T
X=(x1,x2,…,xn)T
而空间中一个点(X(i),Y(i))到该超平面的距离可以表示为:
dist(X(i),Y(i))=w12+w22+…+wn2w1x1(i)+w2x2(i)+…+wnxn(i)
注意上式的分子没加绝对值,说明距离有正有负。分母是W的L2范数,可以记为∣∣W∣∣。
又因为是二分类,Y(i)的取值只有+1和-1两种,当某个样本的分类正确时,有dist(X(i),Y(i))⋅Y(i)>0,则可以用dist(X(i),Y(i))⋅Y(i)其表示样本点到超平面的距离。所以样本点到超平面的最短距离γ为:
γ=i=1,2,...,nmindist(X(i),Y(i))⋅Y(i)=i=1,2,...,nmin∣∣W∣∣WTX(i)+b⋅Y(i)
则求使得距离分离超平面最近的点最远的分离超平面,就是求解使得下式成立的W和b的值。
argW,bmaxγ=argW,bmaxi=1,2,...,nmin∣∣W∣∣WTX(i)+b⋅Y(i)
=argW,bmax{∣∣W∣∣1i=1,2,...,nmin(WTX(i)+b)⋅Y(i)}公式(1)
上式中argmaxW,b的含义是当公式取最大值时,W,b的取值是多少。
当对WT和b进行等比例缩放时,超平面没有改变,点到超平面的距离dist(X(i),Y(i))也不会变,但是WTX(i)+b是会改变的。我们总是可以通过对WT和b进行等比例缩放,使得∣WTX(i)+b∣≥1,当分类正确时,也等价于(WTX(i)+b)⋅Y(i)≥1。所以(WTX(i)+b)⋅Y(i)的最小值是1,即:
i=1,2,...,nmin(WTX(i)+b)⋅Y(i)=1公式(2)
将公式(2)带入到公式(1)中得:
argW,bmaxγ=argW,bmax∣∣W∣∣1
s.t.(WTX(i)+b)⋅Y(i)≥1
其中s.t. 表示约束条件。如果不考虑最值是多少,而只考虑最值在何处取得时,上述公式等价于:
argW,bmin21∣∣W∣∣2
s.t.(WTX(i)+b)⋅Y(i)≥1
如此一来,一开始要求解的最小距离最大化,就变成了求解等价的上述公式。对于求解带约束条件的最值问题,可以用高数中学的拉格朗日乘子(数)法,构造拉氏函数:
L(W,b,α)=21∣∣W∣∣2−i=1∑nαi[(WTX(i)+b)⋅Y(i)−1]
原始问题是极小极大问题:minW,bmaxαL(W,b,α),但是该问题较难求解,所以通过求解其对偶问题(极大极小问题)maxαminW,bL(W,b,α)来得到原始问题的解。对于对偶问题,先求minW,bL(W,b,α)的解。将拉氏函数L(W,b,α)分别对W和b求偏导,并令其等于0得:
∂W∂L=W−i=1∑nαiyixi=0
∂b∂L=−i=1∑nαiyi=0
整理得:
W=i=1∑nαiyixi公式(3)
i=1∑nαiyi=0公式(4)
将公式(3)、(4)带入到minW,bL(W,b,α)中得:
W,bminL(W,b,α)=−21i=1∑nj=1∑nαiαjyiyjxixj+i=1∑nαi
进一步求解对偶问题maxαminW,bL(W,b,α):
α^=argαmax(−21i=1∑nj=1∑nαiαjyiyjxixj+i=1∑nαi)
算出α^后将其带入到公式(3)、(4)中得到所求分离超平面的参数W^和b^,则分离超平面为:
W^X+b^=0
线性可分SVM的决策函数为:
f(X)=sign(W^X+b^)
未完待续……