SVM

SVM

1. 基本概念

支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。
一般SVM有下面三种:

  • 硬间隔支持向量机(线性可分支持向量机):当训练数据线性可分时,可通过硬间隔最大化学得一个线性可分支持向量机。
  • 软间隔支持向量机:当训练数据近似线性可分时,可通过软间隔最大化学得一个线性支持向量机。
  • 非线性支持向量机:当训练数据线性不可分时,可通过核方法以及软间隔最大化学得一个非线性支持向量机。

2. 硬间隔支持向量机

给定训练样本集 D={(x1,y1),(x2,y2),,(xn,yn)} D = { ( x 1 → , y 1 ) , ( x 2 → , y 2 ) , … , ( x n → , y n ) } yi{+1,1} y i ∈ { + 1 , − 1 } i i 表示第i个样本, n n 表示样本容量。分类学习最基本的想法就是基于训练集D在特征空间中找到一个最佳划分超平面将正负样本分开,而SVM算法解决的就是如何找到最佳超平面的问题。超平面可通过如下的线性方程来描述:

w⃗ Tx⃗ +b=0(1) (1) w → T x → + b = 0
其中 w⃗  w → 表示法向量,决定了超平面的方向; b b 表示偏移量,决定了超平面与原点之间的距离。
对于训练数据集D假设找到了最佳超平面 wx⃗ +b=0 w ∗ → x → + b ∗ = 0 ,定义决策分类函数
f(x⃗ )=sign(wx⃗ +b)(2) (2) f ( x → ) = s i g n ( w ∗ → x → + b ∗ )
该分类决策函数也称为线性可分支持向量机。
在测试时对于线性可分支持向量机可以用一个样本离划分超平面的距离来表示分类预测的可靠程度,如果样本离划分超平面越远则对该样本的分类越可靠,反之就不那么可靠。
那么,什么样的划分超平面是最佳超平面呢?
对于图1有A、B、C三个超平面,很明显应该选择超平面B,也就是说超平面首先应该能满足将两类样本点分开。

ellipse
图1

对于图2的A、B、C三个超平面,应该选择超平面C,因为使用超平面C进行划分对训练样本局部扰动的“容忍”度最好,分类的鲁棒性最强。例如,由于训练集的局限性或噪声的干扰,训练集外的样本可能比图2中的训练样本更接近两个类目前的分隔界,在分类决策的时候就会出现错误,而超平面C受影响最小,也就是说超平面C所产生的分类结果是最鲁棒性的、是最可信的,对未见样本的泛化能力最强。
ellipse
图2

下面以图3中示例进行推导得出最佳超平面。
ellipse
图3

空间中超平面可记为 (w⃗ ,b) ( w → , b ) ,根据点到平面的距离公式,空间中任意点 x⃗  x → 到超平面 (w⃗ ,b) ( w → , b ) 的距离可写为:
r=w⃗ x⃗ +b||w⃗ ||(3) (3) r = w → x → + b | | w → | |
假设超平面 (w⃗ ,b) ( w → , b ) 能将训练样本正确分类,那么对于正样本一侧的任意一个样本 (xi,yi)D ( x i → , y i ) ∈ D ,应该需要满足该样本点往超平面的法向量 w⃗  w → 的投影到原点的距离大于一定值 c c 的时候使得该样本点被预测为正样本一类,即存在数值c使得当 w⃗ Txi>c w → T x i → > c yi=+1 y i = + 1 w⃗ Txi>c w → T x i → > c 又可写为 w⃗ Txi+b>0 w → T x i → + b > 0 。在训练的时候我们要求限制条件更严格点以使最终得到的分类器鲁棒性更强,所以我们要求 w⃗ Txi+b>1 w → T x i → + b > 1 。也可以写为大于其它距离,但都可以通过同比例缩放 w⃗  w → b b 来使得使其变为1,因此为计算方便这里直接选择1。同样对于负样本应该有wTxi+b<1 yi=1 y i = − 1 。即:
{w⃗ Txi+b+1,w⃗ Txi+b1,yi=+1yi=1(4) (4) { w → T x i → + b ≥ + 1 , y i = + 1 w → T x i → + b ≤ − 1 , y i = − 1
亦即:
yi(w⃗ Txi+b)+1(5) (5) y i ( w → T x i → + b ) ≥ + 1
如图3所示,距离最佳超平面 w⃗ x⃗ +b=0 w → x → + b = 0 最近的几个训练样本点使上式中的等号成立,它们被称为“支持向量”(support vector)。记超平面 w⃗ x⃗ +b=+1 w → x → + b = + 1 w⃗ x⃗ +b=1 w → x → + b = − 1 之间的距离为 γ γ ,该距离又被称为“间隔”(margin),SVM的核心之一就是想办法将“间隔” γ γ 最大化。下面我们推导一下 γ γ 与哪些因素有关:
记超平面 w⃗ x⃗ +b=+1 w → x → + b = + 1 上的正样本为 x+ x + → ,超平面 w⃗ x⃗ +b=1 w → x → + b = − 1 上的负样本为 x x − → ,则根据向量的加减法规则 x+ x + → 减去 x x − → 得到的向量在最佳超平面的法向量 w⃗  w → 方向的投影即为“间隔” γ γ
γ=(x+x)w⃗ ||w⃗ ||=x+w⃗ ||w⃗ ||xw⃗ ||w⃗ ||(6) (6) γ = ( x + → − x − → ) w → | | w → | | = x + → w → | | w → | | − x − → w → | | w → | |
w⃗ x++b=+1 w → x + → + b = + 1 w⃗ x+b=1 w → x − → + b = − 1 ,即:
{w⃗ x+=1bw⃗ x+=1b(7) (7) { w → x + → = 1 − b w → x + → = − 1 − b

将(7)带入(6)可得:
γ=2||w⃗ ||(8) (8) γ = 2 | | w → | |
也就是说使两类样本距离最大的因素仅仅和最佳超平面的法向量有关!
要找到具有“最大间隔”(maximum margin)的最佳超平面,就是找到能满足式(4)中约束的参数 w⃗  w → b b 使得γ最大,即:
{maxw⃗ ,b2||w⃗ ||s.t.yi(w⃗ Txi+b)+1,i=1,2,,n(9) (9) { max w → , b 2 | | w → | | s . t . y i ( w → T x i → + b ) ≥ + 1 , i = 1 , 2 , … , n
显然(9)等价于
{minw⃗ ,b12||w⃗ ||2s.t.yi(w⃗ Txi+b)+1,i=1,2,,n(10) (10) { min w → , b 1 2 | | w → | | 2 s . t . y i ( w → T x i → + b ) ≥ + 1 , i = 1 , 2 , … , n
这就是SVM的基本型。

2.1 拉格朗日对偶问题

根据SVM的基本型求解出 w⃗  w → b b 即可得到最佳超平面对应的模型:

(11)f(x)=sign(wx+b)
该求解问题本身是一个凸二次规划(convex quadratic propgramming)问题,可以通过开源的优化计算包进行求解,但是这样就无法体现SVM的精髓,我们可以将该凸二次规划问题通过拉格朗日对偶性来解决。
对于式(10)的每条约束添加拉格朗日乘子 αi0 α i ≥ 0 ,则该问题的拉格朗日函数可写为:

L(w⃗ ,b,α⃗ )=12||w⃗ ||2i=1nαi(yi(w⃗ Txi+b)1)(12) (12) L ( w → , b , α → ) = 1 2 | | w → | | 2 − ∑ i = 1 n α i ( y i ( w → T x i + b ) − 1 )
其中 α⃗ =(α1,α2,,αn) α → = ( α 1 , α 2 , … , α n ) 分别是对应着各个样本的拉格朗日乘子。
L(w⃗ ,b,α⃗ ) L ( w → , b , α → ) w⃗  w → b b 求偏导并将偏导数等于零可得:
(13){w=i=1nαiyixii=1nαiyi=0
将(13)带入(12)消去 w⃗  w → b b 就可得到(10)的对偶问题:
(14){maxαi=1nαi12i=1nj=1nαiαjyiyjxiTxjs.t.αi0,i=1,2,,ni=1nαiyi=0
由(14)可知我们并不关心单个样本是如何的,我们只关心样本间两两的乘积,这也为后面核方法提供了很大的便利。
求解出 α⃗  α → 之后,再求解出 w⃗  w → b b 即可得到SVM决策模型:
(15)f(x)=wTx+b=i=1nαiyixiTx+b

2.2 SVM问题的KKT条件

在(10)中有不等式约束,因此上述过程满足Karush-Kuhn-Tucker(KKT)条件:

αi0yi(w⃗ Tx⃗ +b)10,i=1,2,,nαi(yi(w⃗ Tx⃗ +b)1)=0(16) (16) { α i ≥ 0 y i ( w → T x → + b ) − 1 ≥ 0 , i = 1 , 2 , … , n α i ( y i ( w → T x → + b ) − 1 ) = 0
对于任意样本 (xi,yi) ( x i → , y i ) 总有 αi=0 α i = 0 yi(w⃗ Tx⃗ +b)1=0 y i ( w → T x → + b ) − 1 = 0 。如果 αi=0 α i = 0 则由式(15)可知该样本点对求解最佳超平面没有任何影响。当 αi>0 α i > 0 时必有 yi(w⃗ Tx⃗ +b)1=0 y i ( w → T x → + b ) − 1 = 0 ,表明对应的样本点在最大间隔边界上,即对应着支持向量。也由此得出了SVM的一个重要性质: 训练完成之后,大部分的训练样本都不需要保留,最终的模型仅与支持向量有关
那么对于式(14)该如何求解 α⃗  α → 呢?很明显这是一个二次规划问题,可使用通用的二次规划算法来求解,但是SVM的算法复杂度是 O(n2) O ( n 2 ) ,在实际问题中这种开销太大了。为了有效求解该二次规划问题,人们通过利用问题本身的特性,提出了很多高效算法,Sequential Minimal Optimization(SMO)就是一个常用的高效算法。在利用SMO算法进行求解的时候就需要用到上面的KKT条件。利用SMO算法求出 α⃗  α → 之后根据:
{w⃗ =ni=1αiyixiyi(w⃗ Tx⃗ +b)1=0(17) (17) { w → = ∑ i = 1 n α i y i x i → y i ( w → T x → + b ) − 1 = 0
即可求出 w⃗  w → b b 。求解出w b b 之后就可利用
(18)f(x)=sign(wTx+b)
进行预测分类了,注意在测试的时候不需要 1 − 1 ,测试时没有训练的时候要求严格。

3. 软间隔支持向量机

在现实任务中很难找到一个超平面将不同类别的样本完全划分开,即很难找到合适的核函数使得训练样本在特征空间中线性可分。退一步说,即使找到了一个可以使训练集在特征空间中完全分开的核函数,也很难确定这个线性可分的结果是不是由于过拟合导致的。解决该问题的办法是在一定程度上运行SVM在一些样本上出错,为此引入了“软间隔”(soft margin)的概念,如图4所示:

ellipse
图4

具体来说,硬间隔支持向量机要求所有的样本均被最佳超平面正确划分,而软间隔支持向量机允许某些样本点不满足间隔大于等于1的条件 yi(w⃗ xi+b)1 y i ( w → x i → + b ) ≥ 1 ,当然在最大化间隔的时候也要限制不满足间隔大于等于1的样本的个数使之尽可能的少。于是我们引入一个惩罚系数 C>0 C > 0 ,并对每个样本点 (xi,yi) ( x i → , y i ) 引入一个松弛变量(slack variables) ξ0 ξ ≥ 0 ,此时可将式(10)改写为
minw⃗ ,b(12||w⃗ ||2+Cni=1ξi)s.t.yi(w⃗ Txi+b)1ξi,i=1,2,,nξi0(19) (19) { min w → , b ( 1 2 | | w → | | 2 + C ∑ i = 1 n ξ i ) s . t . y i ( w → T x i → + b ) ≥ 1 − ξ i , i = 1 , 2 , … , n ξ i ≥ 0
上式中约束条件改为 yi(w⃗ xi+b)1ξi y i ( w → x i → + b ) ≥ 1 − ξ i ,表示间隔加上松弛变量大于等于1;优化目标改为 minw⃗ ,b(12||w⃗ ||2+Cni=1ξi) min w → , b ( 1 2 | | w → | | 2 + C ∑ i = 1 n ξ i ) 表示对每个松弛变量都要有一个代价损失 Cξi C ξ i C C 越大对误分类的惩罚越大、C越小对误分类的惩罚越小。
式(19)是软间隔支持向量机的原始问题。可以证明 w⃗  w → 的解是唯一的, b b 的解不是唯一的,b的解是在一个区间内。假设求解软间隔支持向量机间隔最大化问题得到的最佳超平面是 wx⃗ +b=0 w ∗ → x → + b ∗ = 0 ,对应的分类决策函数为
f(x⃗ )=sign(wx⃗ +b)(20) (20) f ( x → ) = s i g n ( w ∗ → x → + b ∗ )
f(x⃗ ) f ( x → ) 称为软间隔支持向量机。
类似式(12)利用拉格朗日乘子法可得到上式的拉格朗日函数
L(w⃗ ,b,α⃗ ,ξ⃗ ,μ⃗ )=12||w⃗ ||2+Ci=1nξii=1nαi(yi(w⃗ Txi+b)1+ξi)i=1nμiξi(21) (21) L ( w → , b , α → , ξ → , μ → ) = 1 2 | | w → | | 2 + C ∑ i = 1 n ξ i − ∑ i = 1 n α i ( y i ( w → T x i → + b ) − 1 + ξ i ) − ∑ i = 1 n μ i ξ i
其中 αi0 α i ≥ 0 μi0 μ i ≥ 0 是拉格朗日乘子。
L(w⃗ ,b,α⃗ ,ξ⃗ ,μ⃗ ) L ( w → , b , α → , ξ → , μ → ) 分别对 w⃗  w → b b ξ求偏导并将偏导数为零可得:
w⃗ =ni=1αiyixini=1αiyi=0C=αi+μi(22) (22) { w → = ∑ i = 1 n α i y i x i → ∑ i = 1 n α i y i = 0 C = α i + μ i
将式(22)带入式(21)便可得到式(19)的对偶问题:
maxα⃗ ni=1αi12ni=1nj=1αiαjyiyjxiTxjs.t.ni=1αiyi=0,i=1,2,,n0αiC(23) (23) { max α → ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i → T x j → s . t . ∑ i = 1 n α i y i = 0 , i = 1 , 2 , … , n 0 ≤ α i ≤ C
对比软间隔支持向量机的对偶问题和硬间隔支持向量机的对偶问题可发现二者的唯一差别就在于对偶变量的约束不同,软间隔支持向量机对对偶变量的约束是 0αiC 0 ≤ α i ≤ C ,硬间隔支持向量机对对偶变量的约束是 0αi 0 ≤ α i ,于是可采用和硬间隔支持向量机相同的解法求解式(23)。同理在引入核方法之后同样能得到与式(23)同样的支持向量展开式。
类似式(16)对于软间隔支持向量机,KKT条件要求:
αi0,μi0yi(w⃗ x⃗ +b)1+ξi0αi(yi(w⃗ x⃗ +b)1+ξi)=0ξi0,μiξi=0(24) (24) { α i ≥ 0 , μ i ≥ 0 y i ( w → x → + b ) − 1 + ξ i ≥ 0 α i ( y i ( w → x → + b ) − 1 + ξ i ) = 0 ξ i ≥ 0 , μ i ξ i = 0
同硬间隔支持向量机类似,对任意训练样本 (xi,yi) ( x i → , y i ) ,总有 αi=0 α i = 0 yi(w⃗ x⃗ +b1+ξi) y i ( w → x → + b − 1 + ξ i ) ,若 αi=0 α i = 0 ,则该样本不会对最佳决策面有任何影响;若 αi>0 α i > 0 则必有 yi(w⃗ x⃗ +b)=1ξi y i ( w → x → + b ) = 1 − ξ i ,也就是说该样本是支持向量。由式(22)可知若 αi<C α i < C μi>0 μ i > 0 进而有 ξi=0 ξ i = 0 ,即该样本处在最大间隔边界上;若 αi=C α i = C μi=0 μ i = 0 此时如果 xii1 x i i ≤ 1 则该样本处于最大间隔内部,如果 ξi>1 ξ i > 1 则该样本处于最大间隔外部即被分错了。由此也可看出,软间隔支持向量机的最终模型仅与支持向量有关。

4. 非线性支持向量机

现实任务中原始的样本空间 D D 中很可能并不存在一个能正确划分两类样本的超平面。例如图4中所示的问题就无法找到一个超平面将两类样本进行很好的划分。
对于这样的问题可以通过将样本从原始空间映射到特征空间使得样本在映射后的特征空间里线性可分。例如对图5做特征映射z=x2+y2可得到如图6所示的样本分布,这样就很好进行线性划分了。

ellipse
图5
ellipse
图6

ϕ(x⃗ ) ϕ ( x → ) 表示将样本点 x⃗  x → 映射后的特征向量,类似于线性可分支持向量机中的表示方法,在特征空间中划分超平面所对应的模型可表示为
f(x⃗ )=w⃗ Tx+b(25) (25) f ( x → ) = w → T x + b
其中 w⃗  w → b b 是待求解的模型参数。类似式(10),有
(26){minw,b12||w||2s.t.yi(wTϕ(x)+b)1,i=1,2,,n
其拉格朗日对偶问题是
maxαni=1αi12ni=1nj=1αiαjyiyjϕ(xiT)ϕ(xj)s.t.αi0,i=1,2,,nni=1αiyi=0(27) (27) { max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ϕ ( x i → T ) ϕ ( x j → ) s . t . α i ≥ 0 , i = 1 , 2 , … , n ∑ i = 1 n α i y i = 0
求解(27)需要计算 ϕ(xiT)ϕ(xj) ϕ ( x i → T ) ϕ ( x j → ) ,即样本映射到特征空间之后的内积,由于特征空间可能维度很高,甚至可能是无穷维,因此直接计算 ϕ(xiT)ϕ(xj) ϕ ( x i → T ) ϕ ( x j → ) 通常是很困难的,在上文中我们提到其实我们根本不关心单个样本的表现,只关心特征空间中样本间两两的乘积,因此我们没有必要把原始空间的样本一个个地映射到特征空间中,只需要想法办求解出样本对应到特征空间中样本间两两的乘积即可。为了解决该问题可设想存在核函数:
κ(xi,xj)=ϕ(xiT)ϕ(xj)(28) (28) κ ( x i → , x j → ) = ϕ ( x i → T ) ϕ ( x j → )
也就是说 xi x i → xj x j → 在特征空间的内积等于它们在原始空间中通过函数 κ(,) κ ( ⋅ , ⋅ ) 计算的结果,这给求解带来很大的方便。于是式(27)可写为:
maxαni=1αi12ni=1nj=1αiαjyiyjκ(xi,xj)s.t.αi0,i=1,2,,nni=1αiyi=0(29) (29) { max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j κ ( x i → , x j → ) s . t . α i ≥ 0 , i = 1 , 2 , … , n ∑ i = 1 n α i y i = 0
同样的我们只关心在高维空间中样本之间两两点乘的结果而不关心样本是如何变换到高维空间中去的。求解后即可得到
f(x⃗ )=w⃗ Tϕ(x⃗ )+b=i=1nαiyiϕ(x⃗ )Tϕ(x⃗ )+b=i=1nαiyiκ(xi,xj)+b(30) (30) f ( x → ) = w → T ϕ ( x → ) + b = ∑ i = 1 n α i y i ϕ ( x → ) T ϕ ( x → ) + b = ∑ i = 1 n α i y i κ ( x i → , x j → ) + b
剩余的问题同样是求解 αi α i ,然后求解 w⃗  w → b b 即可得到最佳超平面。

支持向量回归

支持向量机不仅可以用来解决分类问题还可以用来解决回归问题,称为支持向量回归(Support Vector Regression,SVR)。
对于样本(x,y)通常根据模型的输出 f(x⃗ ) f ( x → ) 与真实值(即groundtruth) yi y i 之间的差别来计算损失,当且仅当 f(x⃗ )=yi f ( x → ) = y i 时损失才为零。SVR的基本思路是允许预测值 f(x⃗ ) f ( x → ) yi y i 之间最多有 ε ε 的偏差,当 |f(x⃗ )yi|ε | f ( x → ) − y i | ≤ ε 时认为预测正确不计算损失,仅当 |f(x⃗ )yi|>ε | f ( x → ) − y i | > ε 时才计算损失。SVR问题可描述为:

minw⃗ ,b(12||w⃗ ||2+Ci=1nLε(f(x⃗ )yi))(31) (31) min w → , b ( 1 2 | | w → | | 2 + C ∑ i = 1 n L ε ( f ( x → ) − y i ) )
其中, C0 C ≥ 0 为惩罚项, Lε L ε 为损失函数,定义为:
Lε(z)={0,|z|ε|z|ξ,otherwise(32) (32) L ε ( z ) = { 0 , | z | ≤ ε | z | − ξ , o t h e r w i s e
进一步地引入松弛变量 ξi ξ i ξ^i ξ ^ i ,则新的最优化问题为:
minw⃗ ,b,ξ,ξ^i(12||w⃗ ||2+Cni=1(ξi+ξ^i))s.t.f(xi)yiε+ξi,i=1,2,,nyif(x⃗ )ε+ξ^iξi0,ξ^i0(33) (33) { min w → , b , ξ , ξ ^ i ( 1 2 | | w → | | 2 + C ∑ i = 1 n ( ξ i + ξ ^ i ) ) s . t . f ( x i → ) − y i ≤ ε + ξ i , i = 1 , 2 , … , n y i − f ( x → ) ≤ ε + ξ ^ i ξ i ≥ 0 , ξ ^ i ≥ 0
这就是SVR的原始问题。类似地引入拉格朗日乘子 μi0 μ i ≥ 0 μ^i0 μ ^ i ≥ 0 αi0 α i ≥ 0 α^i0 α ^ i ≥ 0 ,则对应的拉格朗日函数为:
L(w⃗ ,b,α⃗ ,α^⃗ ,ξ⃗ ,ξ^⃗ ,μ⃗ ,μ^⃗ )=12||w⃗ ||2+Ci=1n(ξ+ξ^)i=1nμiξii=1nμ^iξ^i+i=1nαi(f(xi)yiεξ)+i=1nα^i(yif(xi)εξ^i)(34) (34) L ( w → , b , α → , α ^ → , ξ → , ξ ^ → , μ → , μ ^ → ) = 1 2 | | w → | | 2 + C ∑ i = 1 n ( ξ + ξ ^ ) − ∑ i = 1 n μ i ξ i − ∑ i = 1 n μ ^ i ξ ^ i + ∑ i = 1 n α i ( f ( x i → ) − y i − ε − ξ ) + ∑ i = 1 n α ^ i ( y i − f ( x i → ) − ε − ξ ^ i )
L(w⃗ ,b,α⃗ ,α^⃗ ,ξ⃗ ,ξ^⃗ ,μ⃗ ,μ^⃗ ) L ( w → , b , α → , α ^ → , ξ → , ξ ^ → , μ → , μ ^ → ) w⃗ ,b,ξ⃗ ,ξ^⃗  w → , b , ξ → , ξ ^ → 的偏导数为零可得:
w⃗ =ni=1()xini=1(α^iαi)=0C=αi+μiC=α^i+μ^i(35) (35) { w → = ∑ i = 1 n ( ) x i → ∑ i = 1 n ( α ^ i − α i ) = 0 C = α i + μ i C = α ^ i + μ ^ i
将式(35)代入式(34)即可得到SVR的对偶问题:
{maxα,α^ni=1(yi(α^iαi)ε(α^i+αi)12n