SVM
感知器能将线性可分数据集准确分割开,但是从损失函数可以看出,只是分割开了,但是没有一个最优解,比如:

这样虽然两条直线都将数据集分开了,但是如果出现了一个新的数据点,很有可能这个数据点的分割结果是错误的。比如这样:

那么就需要绿色的这个“超平面”作为分类输出才行。这个最有“超平面”就是支持向量机SVM的分类思想。
线性SVM
在感知器中有描述到样本点(xi,yi)到超平面Π:w⋅x+b=0的相对距离为:
d∗(xi,Π)=∣w⋅xi+b∣这个也被称为函数间隔(Functional Margin),当w和b等比例变大变小时候,超平面不会发生变化,但是d∗却在变大变小,为了解决这个问题,引出了几何间隔(Geometric Margin):
d(xi,Π)=∣∣w∣∣1∣w⋅xi+b∣=∣∣w∣∣1d∗(xi,Π)其中,∣∣w∣∣是w的欧式范数。SVM是让超平面到点集的距离最大化,也就是需要最大化几个间隔d(xi,Π),使得:
∣∣w∣∣1(w⋅xi+b)yi⩾d(i=1,..,N)这里,由于在超平面两边的样本点分别分别计算w⋅xi+b是有正有负的,而yi∈{−1,+1},所以能使得(w⋅xi+b)yi都是正数。yi在这个表示的是符号。
由于d∗=∣∣w∣∣d,所以上式两边同时乘以∣∣w∣∣,问题等价为最大化d=∣∣w∣∣d∗,并使得:
(w⋅xi+b)yi⩾d∗(i=1,..,N)可以发现d∗的取值对优化问题的解(超平面的位置)没有影响,比如,当d∗变成了λd∗,那么w和b也变成了λw和λb,但是超平面并没有变化。不妨假设d∗=1,问题转化为了最大化∣∣w∣∣1使得:
(w⋅xi+b)yi⩾1(i=1,..,N)由于∣∣w∣∣1是非负的,最大化∣∣w∣∣1,就是要最小化∣∣w∣∣,为了方便数学表达和计算,将优化问题写成最小化21∣∣w∣∣2使得:
(w⋅xi+b)yi⩾1(i=1,..,N)这就是SVM最原始的形式,如果数据集D是线性可分的,那么SVM的解就存在且唯一。
假设最优化的解为w∗和b∗,那么称超平面:
Π∗:w∗⋅x+b∗=0为最大硬间隔分离超平面。考虑到不等式的约束条件可以知道在两个平面:
Π1∗:w∗⋅x+b∗=−1Π2∗:w∗⋅x+b∗=+1中间是没有点的,因为(w⋅xi+b)yi<1了,但是在Π1∗和Π2∗上是有样本点的,通常称Π1∗和Π2∗为间隔边界,而边界上的点就是支持向量。
那么对于线性不可分的数据集呢?无法找到超平面完全分割数据集,更不用说要间隔最大化。就需要做出一定妥协,将“硬”间隔转化为“软”间隔,就是将不等式的条件放宽。
(w⋅xi+b)yi⩾1→(w⋅xi+b)yi⩾1−ξi其中,ξi被称为松弛变量,不小于0。加入这个松弛变量后,损失函数需要加入一个惩罚项:
L(w,b,x,y)=21∣∣w∣∣2+Ci=1∑NξiC被称为惩罚因子,C越大,最终SVM的模型越不能容忍误分类的点,反之越小。
到现在,SVM算法的最优化问题变为了最小化L(w,b,x,y),并使得:
(w⋅xi+b)yi⩾1−ξi(i=1,..,N)其中ξi⩾0,所以可以定义:
ξi=l(w,b,x,y)=max(0,1−y(w⋅x+b))其中y∈{−1,+1},所以当模型判断不正确时候,就会有惩罚,而判断正确了就没有惩罚了。损失函数可以写为:
L(w,b,x,y)=21∣∣w∣∣2+Ci=1∑Nl(w,b,xi,yi)同样也是使用梯度下降法进行训练的,所以有偏导数:
∂w∂L(w,b,x,y)=w+{0,yi(wxi+b)⩾1−Cyixi,yi(wxi+b)<1∂b∂L(w,b,x,y)={0,yi(wxi+b)⩾1−Cyi,yi(wxi+b)<1这样就可以写出线性SVM的算法实现过程:
输入:训练集D={(x1,y1),...,(xn,yn)},迭代次数M,学习率α,其中:xi∈X⊆Rn,yi∈{−1,+1}过程:
(1)初始化参数:w=(0,...,0)T∈RN,b=0(2)对j=1,...,M:
(a)算出误差向量e=(e1,...,en)T,其中:
ei=1−yi(w⋅xi+b)(b)取出误差最大的一项:
i=iargmaxei(c)若ei⩽0则退出循环。否则取对应样本来进行随机梯度下降:
w←(1−α)w+αCyixib←b+αCyi输出:线性SVM模型g(x)=sign(f(x))=sign(w⋅x+b)
SVM算法的对偶形式
SVM的问题为:
w,bminL(w,b,x,y)=21∣∣w∣∣2+Ci=1∑Nξi使得:
yi(w⋅xi+b)⩾1−ξi其中:ξi⩾0。那么原始问题的拉格朗日函数可以表达为(这里的α不是学习率):
L(w,b,ξ,α,β)=21∣∣w∣∣2+Ci=1∑Nξi−i=1∑Nαi[yi(w⋅xi+b)−1+ξi]−i=1∑Nβiξi为求解L的极小值,需要对α,β,ξ求偏倒,并令为0。就有:
∇wL=w−i=1∑Nαiyixi=0∇bL=−i=1∑Nαiyi=0∇ξiL=C−αi−βi解得:
w=i=1∑Nαiyixii=1∑Nαiyi=0以及对j=1,...,N都有:
αi+βi=C带入计算可以得到拉格朗日函数为:
L(w,b,ξ,α,β)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi所以原始函数的对偶问题就是求上式的最大值:
αmax(−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi)约束条件为
i=1∑Nαiyi=0以及对j=1,...,N都有:
αi⩾0βi⩾0αi+βi=C由于和是常数,所以上述约束条件可以简化为:
0⩽αi⩽C假设对偶形式的解为:α∗=(α1,...,αN)T,那么:
w∗=i=1∑Nαi∗yixib∗=yj−i=1∑Nαi∗yi(xi⋅xj)其中b∗中出现的j是满足0⩽αi⩽C的下标。