本文将简述支持向量机(SVM)的原理与大致推导过程.
1 支持向量与间隔
给定训练样本D={(x1,y1),(x2,y2),…,(xN,yN)},xi∈RL,yi∈{−1,+1},其中输入数据的特征维度为L,类别标签为二分类. 直观上,我们希望在样本空间中用一个超平面将样本分为两类,该超平面可以表示为:
wTx+b=0,其中,w=[w1;w2;…,wL]为超平面的法向量.
为了能使超平面将样本很好地分类,我们希望最大化最小间隔,所以下面计算点到超平面的距离:
设x投影到超平面上的点为x0,有x⊥=x−x0与法向量w平行. 则点x到超平面的距离为r=||x⊥||.
x⊥=rw||w||,r=wTx⊥||w||=(wTx+b)−(wTx0+b)||w||=wTx+b||w||.若该超平面能将训练样本正确分类,则始终有:
yi(wTxi+b)⩾1.使等号成立的向量即”支持向量”(support vector).
由公式(2),我们需要最大化两个类别的支持向量到超平面的距离之和2||w||,即”间隔”(margin). 最大化该距离等价于下面的优化问题,也即找到具有最大间隔的划分超平面:
minw,b12||w||2s.t.yi(wTxi+b)⩾1,i=1,2,…,m.公式(4)即支持向量机的基本型.
2 对偶问题
公式(4)很难进行最优化求解,所以这种情况下可以使用拉格朗日乘子法构造最优化问题(4)的”对偶问题”(dual problem),来求解该最优化问题. 对式(4)的每个约束条件添加拉格朗日乘子αi⩾0,则该问题的拉格朗日函数为:
L(w,b,α)=12||w||2+N∑i=1αi(1−yi(wTxi+b)),其中,α=(α1;α2;…;αN).
令L(w,b,α)分别对w和b的偏导为0,再代入式(5)中将w与b消去,则得到了原优化问题的对偶问题:
maxαN∑i=1αi−12N∑i=1N∑j=1αiαjyiyjxTixj.s.t.N∑i=1αiyi=0,αi⩾0,i=1,2,…,N.此外,上式还需满足K.K.T.条件:
αi⩾0;yif(xi)−1⩾0;αi(yif(xi)−1)=0.解出α后得到模型:
f(x)=N∑i=1αiyixTix+b.3 核函数
注意到若样本x在原始空间中线性不可分,那么我们希望将样本从原始空间映射到一个线性可分的更高维的空间,因此通过映射后的模型可以表示为:
f(x)=wTϕ(x)+b.但求解式(9)的对偶问题需要计算ϕ(xi)Tϕ(xj),其计算代价通常很大. 所以我们设想一个函数:
κ(xi,xj)=⟨ϕ(xi)Tϕ(xj)⟩.将式(10)代入式(6),重写以后求解可得到模型在使用核函数时的表示:
f(x)=N∑i=1αyyiκ(x,xi)+b.公式(10)被称为”核函数”(kernel function).
4 折页损失
通常,由于很难恰巧找到一个可以将所有样本分类的超平面,我们引入了软间隔的概念来放松约束条件. 在这种情况下,一种常用的损失函数是折页损失 (Hinge Loss):
lhinge(z)=max(0,1−z).
v1.5.2