线性支持向量机与软间隔最大化
支持向量机(support vector machines,SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机( linear support vector machine in linearly separable case )、线性支持向量机( linear support vector machine)及非线性支持向量机(non-linear support vector machine)。简单模型是复杂模型的基础,也是复杂模型的特殊情况。当训练数据线性可分时,通过硬间隔最大化( hard margin maximization),学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化( soft margin maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧(kemel trick)及软间隔最大化,学习非线性支持向量机。
当输入空间为欧氏空间或离散集合、特征空间为希尔伯特空间时,核函数(kernel function)表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。这样的方法称为核技巧。核方法( kernel method)是比支持向量机更为一般的机器学习方法。
Cortes与Vapnik提出线性支持向童机,Boser、Guyon与Vapnik又引入核技巧,提出非线性支持向量机。
本章按照上述思路介绍3类支持向量机、核函数及一种快速学习算法——序列最小最优化算法(SMO)。
线性支持向量机
线性可分子问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为这时上述方法中的不等式约束并不能成立。怎么才能将它扩展到线性不可分问题呢?这就需要修改硬间隔最大化,使其成为软间隔最大化。
假设给定一个特征空间上的训练数据集
T={(x1,y1),(x2,y2),...,(xN,yN)} 其中,xi∈X=Rn,yi∈Y={−1,+1},i=1,2,...,N,xi为第i个特征向量,也称为实例,yi为xi的类标记。再假设训练数据集不是线性可分的。通常情况是,训练数据中有一些离群点,将这些离群点除去后,剩下大部分的样本组成的集合是线性可分的。
线性不可分意味着某些样本点是不能满足线性可分中的函数间隔大于等于1的约束条件的。为了解决这个问题,可以对每个样本点(xi,yi)引进一个松弛变量ξi⩾0,使函数间隔加上松弛变量大于等于1。这样,约束条件变为
yi(w⋅xi+b)⩾1−ξi 上式可以这么理解:ξi是数据点到其分隔边界的函数距离,而1−ξi则就是数据点到分界面的函数距离了。原来要求的是数据点到分界面的函数距离要大于等于1,现在就放宽到了数据点到分界面函数距离大于等于1-ξi。这其实是对异常离群点的一种容忍。
同时,对每一个松弛变量ξi,支付一个代价ξi。原来的目标函数变成了现在的
21∣∣w∣∣2+Ci=1∑Nξi 这里,C>0称为惩罚函数,一般由应用问题决定,C值大时对误分类的惩罚更大,C值小时对误分类的惩罚减小。最小化目标函数(上式)包含了两层含义:
使
21∣∣w∣∣2 尽可能小,即间隔尽量大;
同时使误分类点的个数尽可能小,
而C是调和两者的系数。
有了上面的思路,可以和训练数据集线性可分时一样来考虑训练数据集不可分时的线性支持向量机学习问题。相应于硬间隔最大化,它称为软间隔最大化。
线性不可分的线性支持向量机的学习问题变成如下凸二次规划问题(原始问题):
minw,b,ξ21∣∣w∣∣2+Ci=1∑Nξis.t. yi(w⋅xi+b)⩾1−ξi, i=1,2,...,N ξi⩾0, i=1,2,...,N 原始问题是一个凸二次规划问题,因而关于(w,b,ξ)的解是存在的。可以证明w的解是唯一的,但b的解可能不唯一,而是存在于一个区间。
设原始问题的解是w∗,b∗,于是可以得到分离超平面w∗⋅x+b∗=0及分类决策函数f(x)=sign(w∗⋅x+b∗)。称这样的模型为训练样本不可分时的线性支持向量机,简称线性支持向量机。显然,线性支持向量机包含线性可分支持向量机。由于现实中训练数据集往往是不可分的,线性支持向量机具有更广泛的适用性。
下面给出线性支持向量机的定义:
对于给定的线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大问题(上述原始问题),得到的分离超平面为
w∗⋅x+b∗=0 以及相应的分类决策函数
f(x)=sign(w∗⋅x+b∗) 称为线性支持向量机。
线性支持向量机学习的对偶算法
原始问题的对偶问题是
minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t. i=1∑Nαiyi=0 0⩽αi⩽C, i=1,2,...,N 下面我们来具体说明上述对偶问题是怎么得出的:
原始最优化问题的拉格朗日函数是
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 其中,
αi⩾0,μi⩾0 对偶问题是拉格朗日函数的极大极小问题。
首先求L(w,b,ξ,α,μ)对w,b,ξ的极小,由
▽wL(w,b,ξ,α,μ)=w−i=1∑Nαiyixi=0▽bL(w,b,ξ,α,μ)=−i=1∑Nαiyi=0▽ξiL(w,b,ξ,α,μ)=C−αi−μi=0 得
w=i=1∑Nαiyixii=1∑Nαiyi=0C−αi−μi=0 将上式代入上面的拉格朗日函数,得
minw,b,ξ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αis.t. i=1∑Nαiyi=0 C−αi−μi=0 αi⩾0 μi⩾0, i=1,2,...,N 拉格朗日对偶的重要作用是将w的计算提前并消除w,使得优化函数变为拉格朗日乘子的单一参数优化问题。
将对偶最优化问题(上式)进行变换:利用等式约束(上式第二项约束)消去μi,从而只留下变量αi,并将约束(上式后三项约束)写成
0⩽αi⩽C 下面具体来说明上式不等式是怎么得到的:
C−αi−μi=0⇒μi=C−αiui⩾0⇒C−αi⩾0⇒αi⩽Cαi⩾0⇒0⩽αi⩽C 再通过取负,将对目标函数求极大转换为求极小,于是得到对偶问题
minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t. i=1∑Nαiyi=0 0⩽αi⩽C, i=1,2,...,N 可以通过求解对偶问题而得到原始问题的解(w∗,b∗),进而确定分离超平面和决策函数。为此,我们以定理的形式叙述原始问题的最优解(w∗,b∗)和对偶问题的最优解α∗的关系。
定理:原始问题的最优解(w∗,b∗)和对偶问题的最优解的α∗关系:
设
α∗={α1∗,α2∗,...,αN∗} 是上述对偶问题的一个解,若存在α∗的一个分量αj∗,0<αj∗<C,则原始问题的解(w∗,b∗)可按下式求得:
w∗=i=1∑Nαi∗yixib∗=yj−i=1∑Nyiαi∗(xi⋅xj) 证明:
原始问题是凸二次规划问题,满足强对偶问题(凸函数+Slater条件),所以原函数问题和对偶问题等价,则解满足KKT条件。即得
▽wL(w,b,ξ,α,μ)=w−i=1∑Nαiyixi=0▽bL(w,b,ξ,α,μ)=−i=1∑Nαiyi=0▽ξiL(w,b,ξ,α,μ)=C−αi−μ=0αi∗(yi(w∗⋅xi+b∗)−1+ξi)=0μi∗ξi∗=0yi(w∗⋅xi+b∗)−1+ξi∗⩾0ξi∗⩾0αi∗⩾0μi∗⩾0,i=1,2,...,N 解释下上式所述的KKT条件:前三项是一阶偏导等于零,第四五项是互补松弛条件(强对偶性决定的),第六七项是原始问题的约束条件,最后两项是对偶问题的约束条件。
由上式KKT条件中的第一项可知,原始问题的解中的第一项成立,即
w∗=i=1∑Nαi∗yixi 再由KKT的互补松弛条件(第四五项)得,若存在αj∗,0<αj∗<C,则
yi(w∗⋅xi+b∗)−1=0 。这里具体是怎么得到的呢?
由互补松弛条件的第一项可知,当αj∗>0时,该项括号内才等于零,即
yi(w∗⋅xi+b∗)−1+ξi∗=0 里面还有个ξi∗未知,那怎么消去这个ξi∗呢?由互补松弛条件的第二项可知,当μi∗>0时,ξi∗=0,这时候就能消去ξi∗了。那么当μi∗>0时,αj∗必须满足什么条件呢?或者说,当αj∗满足什么条件时,才能保证μi∗>0?我们知道,对偶问题的条件中有一个C−αi−μi=0,即μi=C−αi>0,则αi<C,这时,上式中的ξi∗=0。也就是说,当0<αj∗<C时,ξi∗=0,则有
yi(w∗⋅xi+b∗)−1=0 即由此即得原始问题的解中的第二项(注意上式中1可以写成yi2,然后可消去yi,求得b∗),即
b∗=yj−i=1∑Nyiαi∗(xi⋅xj) 。由此定理可知,分离超平面可以写成
i=1∑Nαi∗yi(x⋅xi)+b∗=0 分类决策函数可以写成
f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗) 上式为线性支持向量机的对偶形式。
综合前面的结果,有下面的算法。
线性支持向量机学习算法
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)},其中,xi∈X=Rn,yi∈Y={−1,+1},i=1,2,...,N;
输出:分离超平面和分类决策函数。
(1)选择惩罚参数C>0,构造并求解凸二次规划问题(对偶问题)
minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t. i=1∑Nαiyi=0 0⩽αi⩽C, i=1,2,...,N 求得最优解
α∗={α1∗,α2∗,...,αN∗} (2)计算原问题的最优解的参数w∗和b∗。
w∗=i=1∑Nαi∗yixi 选择α∗的一个满足条件0<αj∗<C的分量αj∗ ,计算
b∗=yj−i=1∑Nyiαi∗(xi⋅xj) (3)求得分离超平面和分类决策函数
分离超平面:
w∗⋅x+b∗=0 分类决策函数:
f(x)=sign(w∗⋅x+b∗) 上述步骤(2)中,对任一符合条件0<αj∗<C的αj∗,按照该算法求b∗的公式都可以求出b∗,但是由于原始问题对b的解并不唯一,所以实际计算时,可以取在所有符合条件的样本点上的平均值。
支持向量
在线性不可分的情况下,将对偶问题的解
α∗=(a1∗,α2∗,...,αN∗)T 中对应于αi∗>0的样本点(xi,yi)的实例xi称为支持向量(软间隔的支持向量)。如下图所示,这时的支持向量要比线性可分时的情况更复杂一些。图中,分离超平面由实线表示,间隔边界由虚线表示,正例点由“。”表示,负例点由“x”表示。图中还标出了实例xi到间隔边界的距离
∣∣w∣∣ξi 软间隔的支持向量xi或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。
若αi∗<C,则ξi=0,支持向量恰好落在间隔边界上;
若αi∗=C,
0<ξi<1,则分类正确,xi在间隔边界与分离超平面之间;
ξi=1,则xi在分离超平面上;
ξi>1,则xi位于分离超平面误分一侧。
这里解释下为什么,由上一节我们知道
C−αi∗−μi∗=0μi∗ξi∗=0 所以,当αi∗<C,则μi∗>0,所以ξi=0,即支持向量恰好落在间隔边界上;而当αi∗=C时,μi∗=0,所以ξi>0。
合页损失函数
对于线性支持向量机学习来说,其模型为分离超平面w∗⋅x+b∗=0及决策函数f(x)=sign(w∗⋅x+b∗),其学习策略为软间隔最大化,学习算法为图二次规划。
线性支持向量机学习还有另外一种解释,就是最小化以下目标函数:
i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2 目标函数的第一项是经验损失是或经验风险,函数
L(y(w⋅x+b))=[1−y(w⋅x+b)]+ 称为合页损失函数(hinge loss function)。下标“+”表示以下取正值的函数。
[z]+={z,z>00,z⩽0 这就是说,当样本点(xi,yi)被正确分类且间隔函数(确信度)yi(w⋅xi+b)>1时,损失是0,否则损失是1−yi(w⋅xi+b),注意到在上图中的实例点x4被正确分类,但损失不是0。目标函数的第2项是系数为λ的L2范数,是正则化项。
定理:线性支持向量机原始最优化问题 等价于 合页损失+正则化的最优化问题
线性支持向量机原始最优化问题
minw,b,ξ21∣∣w∣∣2+Ci=1∑Nξis.t. yi(w⋅xi+b)⩾1−ξi, i=1,2,...,N ξi⩾0, i=1,2,...,N 等价于合页损失+正则化的最优化问题
minw,b i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2 证明:令
[1−yi(w⋅xi+b)]+=ξi ,则ξi⩾0,原始最优化问题约束条件的第二项成立。
由上式,
当1−yi(w⋅xi+b)>0时,有yi(w⋅xi+b)=1−ξi;
当1−yi(w⋅xi+b)⩽0时,ξi=0,有yi(w⋅xi+b)⩾1−ξi
故原始最优化问题约束条件的第一项成立。
于是w,b,ξi满足原始最优化问题的约束条件。
所以合页损失+正则化最优化问题可写成
minw,bi=1∑Nξi+λ∣∣w∣∣2 若取λ=2C1,则
minw,bC1(21∣∣w∣∣2+Ci=1∑Nξi) 与原始最优化问题等价。
反之,也可将原始最优化问题表示成合页损失+正则化的最优化问题。
合页损失函数的图形如上图所示,横轴是函数间隔y(w⋅x+b),纵轴是损失。由于函数像一个合页,故名合页损失函数。
图中还画出0-1损失函数,可以认为它是二类问题的真正的损失函数,而合页损失函数是0-1损失函数的上界。由于0-1损失函数不是连续可导的,直接优化由其构成的目标函数比较困难,可以认为线性支持向量机是优化由0-1损失函数的上界(合页损失函数)构成的目标函数。这时的上界损失函数又称为代理损失函数。
上图中虚线显示的是感知机的损失函数
[−yi(w⋅xi+b)]+ 。这时,当样本点(xi,yi)被正确分类时,损失是0,否则损失是−yi(w⋅xi+b)。相比之下,合页损失函数不仅要分类正确,而且确信度要足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。这就是SVM和感知机分本质区别!
参考资料
本章的结构和大部分内容均参考此书对应章节。