线性可分支持向量机

一般的,当训练样本线性可分的时候,如下图所示:

img

可以找到无数个划分超平面。而线性可分支持向量机利用间隔最大化来求最优划分超平面,此时解是唯一的。

通过间隔最大化或者对应的凸二次规划问题学习到的分离超平面为:
w x + b = 0 w^*\cdot x+b^*=0
对应的决策函数为:
f ( x ) = s i g n ( w x + b ) f(x)=sign(w^*\cdot x+b^*)
我们称上面的的式子为线性可分的支持向量机。

函数间隔与几何间隔

给定分离超平面 w x + b = 0 w\cdot x + b = 0 w x + b |w\cdot x + b | 能相对的表示x到超平面的距离。通过分析标签值y与 w x + b w\cdot x + b 符号的是否一致能够表示分类是否正确,于是可以用 y ( w x + b ) y(w\cdot x + b) 的符号来表示是否分类正确及确信度,这就是函数间隔。为此,对于样本 ( x i , y i ) (x_i, y_i) 我们定义函数间隔 γ ^ i \hat \gamma_i 为:
γ ^ i = y i ( w x i + b ) \hat \gamma_i = y_i(w \cdot x_i + b)
对于有N个样本的数据集T,定义数据集T的函数间隔为:所有样本点的函数间隔的最小值,即:
γ ^ i = min i = 1 , 2 , . . . , N γ ^ i = min i = 1 , 2 , . . . , N y i ( w x i + b ) (1) \hat \gamma_i = \min\limits_{i=1,2,...,N}\hat \gamma_i = \min\limits_{i=1,2,...,N} y_i(w\cdot x_i + b) \tag 1

如果成比例的改变w和b为2w和2b,那么函数间隔变为了原来2倍,为了消除这样的影响,我们限定L2范数 w = 1 \|w\|=1 ,此时函数间隔就成为了几何间隔。

下图给出了超平面 ( w , b ) (w,b) 及其法向量w:

在这里插入图片描述

点A表示某一实例 ( x i , y i ) (x_i,y_i) ,A到超平面的距离由AB给出,记作 γ i \gamma_i
γ i = w x i + b w \gamma_i = \frac{w\cdot x_i + b}{||w||}
无论样本是正例还是负例,当样本被正确分类时,到超平面的距离为:
γ i = y i ( w x i + b ) w \gamma_i = \frac{y_i(w\cdot x_i + b)}{||w||}
我们定义上面的式子为某个样本到超平面的集合间隔。

对于有N个样本的数据集T,定义数据集T的几何间隔为:所有样本点的几何间隔的最小值,即:
γ = min i = 1 , . . . , N γ i = min i = 1 , . . . , N γ i y i ( w x i + b ) w (2) \gamma = \min\limits_{i=1,...,N} \gamma_i = \min\limits_{i=1,...,N}\gamma_i \frac{y_i(w \cdot x_i + b)}{||w||} \tag 2
由函数间隔和几何间隔的定义(1),(2)可知:
γ i = γ ^ i w \gamma_i = \frac{\hat\gamma_i}{||w||}

γ = γ ^ w (3) \gamma = \frac{\hat\gamma}{||w||} \tag 3

如果限定 w = 1 \|w\|=1 ,那么函数间隔就等于几何间隔。

SVM模型

对于线性可分的数据可以找到无数个将数据划分的超平面,但是距离超平面较远的点对超平面的确定没有很大的影响。因此,我们把注意力放在距离超平面较近的点上,如下图中红色框选择的点。如果我们让距离超平面最近的点(图中)到超平面的距离最大化,那么就可以认为这样的划分超平面即使对于较难分类正确的点,也能得到较好的划分结果。

在这里插入图片描述

线性可分的SVM目标是找到间隔最大化的划分超平面,所谓间隔最大化是指:对给定的数据集的点,划分超平面不仅可以可以区分正例负例,而且还能使得最难分类的点有足够大的确信度使得他们分开,这样的平面对未知的样本实例有更好的分类能力。

要求几何间隔最大的分离超平面,可以转化为求解下面的最优化问题:
max w , b γ s . t . y i ( w x i + b ) w γ i = 1 , 2 , . . . , N \max\limits_{w,b} \gamma \\ s.t. \quad \frac{y_i(w \cdot x_i + b)}{||w||} \ge \gamma\\i=1,2,...,N
由由函数间隔和几何间隔关系的公式(3)可以将问题转化为:
max w , b γ ^ w s . t . y i ( w x i + b ) γ ^ i = 1 , 2 , . . . , N \max\limits_{w,b} \frac{\hat\gamma}{\|w\|} \\ s.t. \quad y_i(w \cdot x_i + b) \ge \hat\gamma\\i=1,2,...,N
根据上面的式子,不难得出,SVM的思想是:让距离划分超平面最近的点(支持向量)到划分超平面的距离最大化。

实际上,当我们成倍的改变 w , b w,b λ w , λ b \lambda w ,\lambda b ,函数间隔也变为 λ γ ^ \lambda \hat \gamma ,并不能改变约束条件中的不等式的关系。因此,为了简化计算,我们可以取 γ ^ = 1 \hat\gamma=1 。并且,最大化 1 w \frac{1}{\|w\|} 和最小化 1 2 w 2 \frac{1}{2} \|w \|^2 等价,于是优化目标转化为:
min w , b 1 2 w 2 ; s . t 1 y i ( w x i + b ) 0 ( i = 1 , 2 , . . . m ) (4) \min\limits_{w,b} \frac{1}{2}||w||^2 ;\quad s.t \quad 1- y_i(w \cdot x_i + b) \leq 0 \quad (i =1,2,...m) \tag 4
显然式子(4)是凸二次规划问题。要注意的是,训练样本中存在某些样本点使得约束条件取得等号:
y i ( w x i + b ) 1 = 0 y_i(w \cdot x_i + b) -1 = 0
这样的点就是上面图片中红色方框对应的点,他们位于和决策超平面距离为1的位置上,我们称这样的点叫做支持向量。在决定分离超平面的时候,只有这些支持向量起到了作用。由于支持向量对分离超平面的决定性作用,所以将这样的分类模型叫做支持向量机。

SVM求解

为了求解支持向量机的最优化模型(4),我们需要使用拉格朗日对偶性来得到对偶问题,间接得到原始问题的最优解。这么做的好处是

  1. 对偶问题的计算量更小,更容易求解。
  2. 自然的引入核函数,进而推广到非线性可分问题。

首先需要构造拉格朗日函数,引入拉格朗日乘子 α i 0 \alpha_i \geq 0 后,得到:
L ( w , b , α ) = 1 2 w 2 + i = 1 m α i [ 1 y i ( w T x i + b ) ] (5) L(w,b,\alpha) = \frac{1}{2}||w||^2 + \sum\limits_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i + b)] \tag 5
其中, α = ( α 1 , α 2 , . . . , α m ) \alpha=(\alpha_1, \alpha_2,..., \alpha_m) 为拉格朗日乘子向量。

原始问题等价于:
min w , b max α L ( w , b , α ) \min \limits_{w,b} \max\limits_{\alpha}L(w,b,\alpha)
根据拉格朗日对偶性,所以原始问题的对偶问题是:
max α min w , b L ( w , b , α ) (6) \max\limits_\alpha\min\limits_{w,b}L(w,b,\alpha) \tag 6
若原始问题与对偶问题有相同的解 w , b , α w^*, b^*, \alpha^* ,则要满足KKT条件:
w L ( w , b , α ) = w i = 1 m α i y i x i = 0 ( K K T . 1 ) b L ( w , b , α ) = i = 1 m α i y i = 0 ( K K T . 2 ) α ( y i ( w T x i + b ) 1 ) = 0 ( K K T . 3 ) y i ( w T x i + b ) 1 0 ( K K T . 4 ) a i 0 , i = 1 , 2 , . . . m ( K K T . 5 ) \nabla_wL(w^*, b^*, \alpha^*) = w^*-\sum\limits_{i=1}^{m}\alpha_iy_ix_i = 0 \quad\quad (KKT.1) \\ \nabla_bL(w^*, b^*, \alpha^*) = -\sum\limits_{i=1}^{m}\alpha_iy_i = 0 \quad\quad (KKT.2) \\ \alpha^*(y_i(w^{*T}x_i+b^*)-1) = 0 \quad\quad (KKT.3) \\ y_i(w^{*T}x_i+b^*)-1 \ge 0 \quad\quad\quad (KKT.4) \\ a_i^* \ge 0,\quad i=1,2,...m \quad\quad\quad (KKT.5)
其中公式(KKT.3)为KKT对偶互补条件,可以知道当 α > 0 \alpha^*>0 则有 ( y i ( w T x i + b ) 1 ) = 0 (y_i(w^{*T}x_i+b^*)-1) = 0 ,此时的样本 x i x_i 对应的点为支持向量。

所以我们通过求对偶问题的解间接得到原始问题的最优解,这样可以简小计算量,这就是SVM的对偶算法。

首先需要求 L ( w , b , α ) L(w,b,\alpha) w , b w,b 的极小,再求对 α \alpha 的极大。

假设: ψ ( α ) = min w , b L ( w , b , α ) \psi(\alpha) = \min\limits_{w,b}L(w,b,\alpha)

将拉格朗日函数分别对w,b求偏导并令其等于0,得到:
L ( w , b , α ) w = 0    w = i = 1 m α i y i x i (7) \frac{\partial L(w,b,\alpha)}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i \tag 7

L ( w , b , α ) b = 0    i = 1 m α i y i = 0 (8) \frac{\partial L(w,b,\alpha)}{\partial b} = 0 \;\Rightarrow \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \tag 8

上面的式子已经得到了w和α的关系,只要我们后面求得使得对偶函数极大化的α,记得求得w。将式子(7),(8)代入(5)得到:
ψ ( α ) = 1 2 w 2 i = 1 m α i [ y i ( w T x i + b ) 1 ] = 1 2 w T w i = 1 m α i y i w T x i i = 1 m α i y i b + i = 1 m α i = 1 2 w T i = 1 m α i y i x i i = 1 m α i y i w T x i i = 1 m α i y i b + i = 1 m α i = 1 2 w T i = 1 m α i y i x i w T i = 1 m α i y i x i i = 1 m α i y i b + i = 1 m α i = 1 2 w T i = 1 m α i y i x i i = 1 m α i y i b + i = 1 m α i = 1 2 w T i = 1 m α i y i x i b i = 1 m α i y i + i = 1 m α i = 1 2 ( i = 1 m α i y i x i ) T ( i = 1 m α i y i x i ) b i = 1 m α i y i + i = 1 m α i = 1 2 i = 1 m α i y i x i T i = 1 m α i y i x i b i = 1 m α i y i + i = 1 m α i = 1 2 i = 1 m α i y i x i T i = 1 m α i y i x i + i = 1 m α i = 1 2 i = 1 , j = 1 m α i y i x i T α j y j x j + i = 1 m α i = i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j \begin{aligned} \psi(\alpha) & = \frac{1}{2}||w||^2 - \sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1] \\& = \frac{1}{2}w^Tw-\sum\limits_{i=1}^{m}\alpha_iy_iw^Tx_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i -\sum\limits_{i=1}^{m}\alpha_iy_iw^Tx_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = - \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = - \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - b\sum\limits_{i=1}^{m}\alpha_iy_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}(\sum\limits_{i=1}^{m}\alpha_iy_ix_i)^T(\sum\limits_{i=1}^{m}\alpha_iy_ix_i) - b\sum\limits_{i=1}^{m}\alpha_iy_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}\sum\limits_{i=1}^{m}\alpha_iy_ix_i^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - b\sum\limits_{i=1}^{m}\alpha_iy_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}\sum\limits_{i=1}^{m}\alpha_iy_ix_i^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_iy_ix_i^T\alpha_jy_jx_j + \sum\limits_{i=1}^{m}\alpha_i \\& = \sum\limits_{i=1}^{m}\alpha_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j \end{aligned}
即:
ψ ( α ) = min w , b L ( w , b , α ) = i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j \psi(\alpha) = \min\limits_{w,b}L(w,b,\alpha)=\sum\limits_{i=1}^{m}\alpha_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j
接下来,对 ψ ( α ) = min w , b L ( w , b , α ) \psi(\alpha) = \min\limits_{w,b}L(w,b,\alpha) 求极大:
max α ψ ( α ) = max α i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j (9) \max\limits_{\alpha}\psi(\alpha) = \max\limits_{\alpha}\sum\limits_{i=1}^{m}\alpha_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j \tag 9

s . t . i = 1 m α i y i x i = 0 α i 0 , i = 1 , 2 , . . . , N s.t. \quad \sum\limits_{i=1}^{m}\alpha_iy_ix_i =0\\ \alpha_i \geq 0, i=1,2,...,N

将式子(9)的目标函数转换成求极小,得到等级的对偶最优化问题:
min α 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j i = 1 m α i (10) \min\limits_{\alpha} \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j -\sum\limits_{i=1}^{m} \alpha_i \tag{10}

s . t . i = 1 m α i y i x i = 0 α i 0 , i = 1 , 2 , . . . , m s.t. \quad \sum\limits_{i=1}^{m}\alpha_iy_ix_i =0 \\ \alpha_i \geq 0, i=1,2,...,m

只要我们可以求出上式极小化时对应的α向量就可以求出w和b了。具体怎么极小化上式得到对应的α,一般需要用到SMO算法,这个算法比较复杂,我们后面会专门来讲。在这里,我们假设通过SMO算法,我们得到了对应的α的值 α α^∗ ,那么根据 w = i = 1 m α i y i x i w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i 可以得到对应的 w w^* 的值:
w = i = 1 m α i y i x i w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i
正如上文讨论的,只有支持向量对决策平面有影响,其他样本则没有。选择 α \alpha^* 的任意一个正分量 α j > 0 \alpha^*_j \gt 0 ,按下面的式子得到 b b^ *
b = y j ( w ) T x j = y j i = 1 m α i y i x i T x j b^* = y_j - (w^*)^Tx_j = y_j -\sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i^Tx_j
根据上面KKT条件中 α ( y i ( w T x i + b ) 1 ) = 0 \alpha^*(y_i(w^{*T}x_i+b^*)-1) = 0 这个对偶互补条件,可以知道当 α > 0 \alpha^*>0 则有 ( y i ( w T x i + b ) 1 ) = 0 (y_i(w^{*T}x_i+b^*)-1) = 0 ,此时的样本 x i x_i 对应的点到划分超平面的距离为1,也就是所谓的支持向量。因此,任意 α j > 0 \alpha^*_j \gt 0 对应的样本 x j x_j 为支持向量。

假设我们有S个支持向量,对于任意支持向量 ( x s , y s ) (x_s, y_s) 可以解得 b b^* 。但是由于数据集T严格线性可分,所以划分超平面是唯一的,于是通过任意支持向量 ( x s , y s ) (x_s, y_s) 得到的 b b^* 都是一样的。

最终得到的划分超平面为:
w T x + b = 0 w^{*T}x+b^* = 0
最终的分类决策函数为:
f ( x ) = s i g n ( w T x + b ) f(x) = sign(w^{*T} x + b^{*})

线性可分SVM的算法流程

输入:线性可分的m个样本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) , {(x_1,y_1), (x_2,y_2), ..., (x_m,y_m),}

输出:分离超平面的参数 w w^{*} b b^{*} 和分类决策函数。

(1) 构造优化问题:
min α 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j i = 1 m α i \min\limits_{\alpha} \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j -\sum\limits_{i=1}^{m} \alpha_i

s . t . i = 1 m α i y i x i = 0 α i 0 , i = 1 , 2 , . . . , m s.t. \quad \sum\limits_{i=1}^{m}\alpha_iy_ix_i =0 \\ \alpha_i \geq 0, i=1,2,...,m

(2) 采用SMO算法求出使得上式极小化的 α \alpha^*

(3) 计算 w = i = 1 m α i y i x i w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i

(4) 找到某个满足 α j > 0 \alpha_j > 0 对应的支持向量 ( x j , y j ) (x_j,y_j) ,计算:
b = y j ( w ) T x j = y j i = 1 m α i y i x i T x j b^* = y_j - (w^*)^Tx_j = y_j -\sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i^Tx_j
(5) 得到划分超平面与决策函数:
w T x + b = 0 f ( x ) = s i g n ( w T x + b ) w^{*T}x+b^* = 0 \\ f(x) = sign(w^{*T} x + b^{*})

局限性

本文介绍的是基于硬间隔最大化的SVM算法,对于线性不可分的数据,由于异常点的存在,无法找到划分超平面,本文的算法无法使用。下一篇介绍的软间隔最大化SVM算法可以解决这里问题。

参考文章:

《统计学习方法 第二版》

支持向量机原理(一) 线性支持向量机