软间隔最大化SVM
假设有训练集:
T={(x1,y1),(x2,y2),...,(xm,ym)}
其中yi∈{−1,+1}。再假设数据集线性不可分,即数据中存在一些异常值(离群点),若去除这些异常值,剩下的大部分样本仍然线性可分。
对于线性可分的情况,样本点都满足下面的条件yi(wTxi+b)≥1。而线性不可分意味着某些样本不满足函数间隔大于等于1的约束条件,我们引入变量loss用于表示样本偏离yi(wTxi+b)≥1的距离。
如果yi(wTxi+b)≥1,则loss=0。
如果不满足条件,即yi(wTxi+b)<1时,则必须加上loss才能最低限度的符合条件:yi(wTxi+b)+loss=1,因此$loss = 1-y_i(w^T x_i +b) $。
于是有:
loss=max{0,1−yi(wTxi+b)}
为此,我们可以引入松弛变量ξi≥0用于表示loss,使得函数间隔加上松弛变量后始终满足大于等于1的条件:
yi(wTxi+b)+ξi≥1
于是约束条件可以变为:
1−ξi−yi(wTxi+b)≤0
加入松弛变量后,样本到超平面的函数距离的要求放松了,在预期的函数间隔内允许一定程度上的误分类情况,因此称之为软间隔。同时,对引入的每个松弛变量都加上一定大小的惩罚,得到软间隔最大化的SVM学习条件如下:
min21∣∣w∣∣2+Ci=1∑mξi
其中,C为惩罚系数,用于指定对误分类情况的惩罚力度。也就是说,我们希望21∣∣w∣∣2尽量小的同时,误分类点也尽可能的少,C用于协调二者。最终得到凸二次规划的问题为:
w,b,ξmin21∣∣w∣∣2+Ci=1∑mξis.t.1−ξi−yi(wTxi+b)≤0(i=1,2,...m)ξi≥0(i=1,2,...m)(1)
学习的对偶算法
首先用拉格朗日函数转化原始的约束问题为无约束问题:
L(w,b,ξ,α,μ)=21∣∣w∣∣2+Ci=1∑mξi+i=1∑mαi[1−ξi−yi(wTxi+b)]+i=1∑mμi(−ξi)
其中αi≥0,μi≥0 均为拉格朗日乘子。于是要优化的目标函数为:
w,b,ξminαi≥0,μi≥0maxL(w,b,α,ξ,μ)
本问题满足KKT条件,转换为对偶问题可得:
αi≥0,μi≥0maxw,b,ξminL(w,b,α,ξ,μ)
首先是优化函数的w,b,ξ求极小值,对变量求偏导得:
∂w∂L=0⇒w=i=1∑mαiyixi(2)
∂b∂L=0⇒i=1∑mαiyi=0(3)
∂ξi∂L=0⇒C−αi−μi=0(4)
将求导结果代入拉格朗日函数得到:
L(w,b,ξ,α,μ)=21∣∣w∣∣2+Ci=1∑mξi+i=1∑mαi[1−ξi−yi(wTxi+b)]+i=1∑mμi(−ξi) =21∣∣w∣∣2−i=1∑mαi[yi(wTxi+b)−1+ξi]+i=1∑mαiξi=21∣∣w∣∣2−i=1∑mαi[yi(wTxi+b)−1]=21wTw−i=1∑mαiyiwTxi−i=1∑mαiyib+i=1∑mαi=21wTi=1∑mαiyixi−i=1∑mαiyiwTxi−i=1∑mαiyib+i=1∑mαi=21wTi=1∑mαiyixi−wTi=1∑mαiyixi−i=1∑mαiyib+i=1∑mαi=−21wTi=1∑mαiyixi−i=1∑mαiyib+i=1∑mαi=−21wTi=1∑mαiyixi−bi=1∑mαiyi+i=1∑mαi=−21(i=1∑mαiyixi)T(i=1∑mαiyixi)−bi=1∑mαiyi+i=1∑mαi=−21i=1∑mαiyixiTi=1∑mαiyixi−bi=1∑mαiyi+i=1∑mαi=−21i=1∑mαiyixiTi=1∑mαiyixi+i=1∑mαi=−21i=1,j=1∑mαiyixiTαjyjxj+i=1∑mαi=i=1∑mαi−21i=1,j=1∑mαiαjyiyjxiTxj
将(3)代入第一行即可得到第二行;第二行消去i=1∑mαiξi得到第三行;第三行与线性可分的SVM一样,所以最后计算结果和线性可分的SVM也一样,唯一不同的只是约束条件。
继续对式子求极大:
αmaxi=1∑mαi−21i=1,j=1∑mαiαjyiyjxiTxjs.t.i=1∑mα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,同时将目标函数变号求极小值,得到:
αmin21i=1,j=1∑mαiαjyiyjxiTxj−i=1∑mαis.t.i=1∑mαiyi=00≤αi≤C
上面的式子就是软间隔最大化SVM的优化目标,与硬间隔SVM相比,约束条件中的0≤αi变为0≤αi≤C。这样的问题同样可以使用SMO算法求极小值,进而求出w,b。
软间隔最大化的支持向量
硬间隔最大化SVM,所有满足αi∗>0的样本i即为支持向量。对于软间隔最大化的SVM,由于引入了松弛变量ξi,支持向量的判断稍微复杂一些。
如下图所示,划分超平面用实线表示,间隔边界由虚线表示。误分类的点到间隔平面的几何距离为∣∣w∣∣2ξi。

软间隔支持向量xi要么在间隔边界上,要么在间隔边界内,还可能在分离超平面误分类的一侧:
(1) 如果α=0,那么yi(wTxi+b)−1≥0,即样本在间隔边界上或者已经被正确分类。如图中所有远离间隔边界的点。
(2) 如果0<α<C,且ξi=0,yi(wTxi+b)−1=0,即点在间隔边界上(蓝框部分)。
(3) 如果α=C,说明这是一个可能比较异常的点,需要检查此时ξi:
-
如果0<ξi<1,那么点被正确分类,但是却在超平面和自己类别的间隔边界之间(黄框部分)。
-
如果ξi=1,那么点在分离超平面上,无法被正确分类。
-
如果ξi>1,那么点在超平面的另一侧,也就是说,这个点不能被正常分类(红框部分)。
于是,上面图片中所有标注了距离的都是支持向量。
软间隔最大化SVM算法过程
输入:线性可分的m个样本(x1,y1),(x2,y2),...,(xm,ym),
输出:分离超平面的参数w∗和b∗和分类决策函数。
(1) 选择惩罚系数C>0,构造优化问题:
αmin21i=1,j=1∑mαiαjyiyjxiTxj−i=1∑mαi
s.t.i=1∑mαiyixi=00≤αi≤C,i=1,2,...,m
(2) 采用SMO算法求出使得上式极小化的α∗
(3) 计算w∗=i=1∑mαi∗yixi
(4) 找到所有的S个支持向量(xs,ys),计算:
bs∗=ys−(w∗)Txs=ys−i=1∑mαi∗yixiTxs
最终得到:
b∗=S1i=1∑Sbs∗
(5) 得到划分超平面与决策函数:
w∗Tx+b∗=0f(x)=sign(w∗Tx+b∗)
参考文章:
《统计学习方法 第二版》
支持向量机原理(二) 线性支持向量机的软间隔最大化模型