背景
在 线性可分支持向量机 的基础上,我们考虑以下图这个情况:

图中有两个超平面红色线和黑色线。红色的超平面使得模型有更好的泛化效果。但是由于蓝色A异常点的存在,使得SVM模型学到的是黑色的超平面,这会影响到模型的预测效果。
更极端的情况是假设在B处有一蓝色的异常点,就会使得数据变成线性不可分。
为了解决这个问题,SVM引入软间隔最大化的方法来解决。
软间隔最大化
回顾线性可分SVM的硬间隔最大化条件
w,bmin21∣∣w∣∣2s.t. yi(w⋅xi+b)≥1,i=1,2,…,N
线性不可分意味着某些样本点(xi,yi) 不能满足函数间隔大于等于1得约束条件,软间隔最大化的思想时:允许部分点位于间隔内部,这些点到超平面的距离小于1。如下图所示:

所以,引入一个loss:
yi(wxi+b)≥1,loss=0
yi(wxi+b)<1,loss=1−yi(wxi+b)
即:
loss=max{0,1−yi(wTxi+b)}
所以,对每一个样本点(xi,yi)引入ξi, ξi=1−yi(wTxi+b),ξi≥0
说明:
(1)当样本点满足yi(wxi+b)≥1时,ξi=0。
(2)当样本点 yi(wxi+b)<1 时,即样本点位于间隔内部, ξi=1−yi(wTxi+b) 表示样本点到边界H1(或H2)的距离。
这样ξi 就可以起到和loss一样的效果。
所以,在最小化最大距离时,同时也要最小化这个ξi (让位于间隔内部的点尽量的靠近边界),目标函数由原来的21∣∣w∣∣2 变成:
21∣∣w∣∣2+Ci=1∑Nξi
这里的C>0 称为惩罚系数。C值越大对误分类的惩罚越大,C值越小对误分类的惩罚越小。
因为$\xi_i $ 表示样本点(xi,yi) 到边界H1(或H2)的距离,所以样本点到超平面的距离就变成了1−ξi 。这样约束条件变为:
yi(w⋅xi+b)≥1−ξi,i=1,2,…,N
所以,线性不可分支持向量机的学习问题变成了如下的凸二次规化问题(原始问题):
w,bmin21∣∣w∣∣2+Ci=1∑Nξis.t. yi(w⋅xi+b)≥1−ξi,i=1,2,…,Nξi≥0
学习的对偶算法
和线性可分SVM的优化方式类似,首先将软间隔最大化的约束问题用拉格朗日函数转化为无约束问题如下:
L(w,b,ξ,α,μ)=21∣∣w∣∣2+Ci=1∑Nξi+i=1∑Nαi[1−ξi−yi(wTxi+b)]+i=1∑Nμi(−ξi)
其中αi≥0,μi≥0 均为拉格朗日乘子。于是要优化的目标函数等价为:
w,b,ξminαi≥0,μi≥0maxL(w,b,α,ξ,μ)
其对偶问题为:
αi≥0,μi≥0maxw,b,ξminL(w,b,α,ξ,μ)
首先是优化函数的w,b,ξ求极小值,对变量求偏导得:
∂w∂L=0⇒w=i=1∑Nαiyixi
∂b∂L=0⇒i=1∑Nαiyi=0
∂ξi∂L=0⇒C−αi−μi=0
将求导结果代入拉格朗日函数得到:
L(w,b,ξ,α,μ)=21∣∣w∣∣2+Ci=1∑Nξi+i=1∑Nαi[1−ξi−yi(wTxi+b)]+i=1∑Nμi(−ξi) =21∣∣w∣∣2−i=1∑Nαi[yi(wTxi+b)−1+ξi]+i=1∑Nαiξi=21∣∣w∣∣2−i=1∑Nαi[yi(wTxi+b)−1]=21wTw−i=1∑NαiyiwTxi−i=1∑Nαiyib+i=1∑Nαi=21wTi=1∑Nαiyixi−i=1∑NαiyiwTxi−i=1∑Nαiyib+i=1∑Nαi=21wTi=1∑Nαiyixi−wTi=1∑Nαiyixi−i=1∑Nαiyib+i=1∑Nαi=−21wTi=1∑Nαiyixi−i=1∑Nαiyib+i=1∑Nαi=−21wTi=1∑Nαiyixi−bi=1∑Nαiyi+i=1∑Nαi=−21(i=1∑Nαiyixi)T(i=1∑Nαiyixi)−bi=1∑Nαiyi+i=1∑Nαi=−21i=1∑NαiyixiTi=1∑Nαiyixi−bi=1∑Nαiyi+i=1∑Nαi=−21i=1∑NαiyixiTi=1∑Nαiyixi+i=1∑Nαi=−21i=1∑Nj=1∑NαiyixiTαjyjxj+i=1∑Nαi=i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxj
所以最后计算结果和线性可分的SVM也一样,唯一不同的只是约束条件。
继续对式子求极大:
αmaxi=1∑Nαi−21i=1,j=1∑NαiαjyiyjxiTxjs.t.i=1∑Nαiyi=0C−αi−μi=0αi≥0(i=1,2,...,m)μi≥0(i=1,2,...,m)
对于C−αi−μi=0,αi≥0,μi≥0有:
C−αi=μi≥0⇒C≥αi⇒0≤αi≤C
基于上面的条件0≤αi≤C,同时将目标函数变号求极小值,得到:
αmaxi=1∑Nαi−21i=1,j=1∑NαiαjyiyjxiTxjs.t.i=1∑Nαiyi=00≤αi≤C
上面的式子就是软间隔最大化SVM的优化目标,与硬间隔SVM相比,约束条件中的0≤αi变为0≤αi≤C。这样的问题同样可以使用SMO算法求极小值,进而求出w,b。
学习算法
输入:训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)},
其中,xi∈X=Rn,yi∈Y={−1,+1},i=1,2,…,N; 0<η⩽1
输出:分离超平面和分类决策函数
(1)选择惩罚参数C>0 ,构造并求解凸二次规划问题
αmaxi=1∑Nαi−21i=1,j=1∑NαiαjyiyjxiTxjs.t.i=1∑Nαiyi=00≤αi≤C
采用SMO算法求得最优解α∗=(α1∗,α2∗,…αN∗)T
(2)计算w∗=∑i=1Nαi∗yixi
(3)找到所有的S个支持向量(xs,ys),计算:
bs∗=ys−(w∗)Txs=ys−i=1∑mαi∗yixiTxs
最终得到:
b∗=S1i=1∑Sbs∗
(4) 得到划分超平面与决策函数:
w∗Tx+b∗=0f(x)=sign(w∗Tx+b∗)
软间隔最大化的支持向量
硬间隔最大化SVM,所有满足αi∗>0的样本i即为支持向量。对于软间隔最大化的SVM,由于引入了松弛变量ξi,支持向量的判断稍微复杂一些。
如下图所示,∣∣w∣∣2ξi 表示实例$x_i $到间隔边界的距离。

软间隔支持向量xi分布在间隔边界上和间隔边界内,还可能在分离超平面误分类的一侧,具体说明如下:
(1) 如果 αi=0,那么该样本的约束无效,可能在间隔边界上或者已经被正确分类。如图中所有远离间隔边界的点。
(2) 如果0<αi<C,且ξi=0,yi(wTxi+b)−1=0,即点在间隔边界上(蓝框部分)。
(3) 如果 αi=C,说明这是一个可能比较异常的点,需要检查此时ξi:
-
如果0<ξi<1,那么点被正确分类,点位于间隔边界和超平面之间(黄框部分)。
-
如果ξi=1,那么点在分离超平面上。
-
如果ξi>1,那么点在超平面的误分类一侧(红框部分)。