线性可分支持向量机

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

线性可分支持向量机

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

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

函数间隔与几何间隔

给定分离超平面wx+b=0w\cdot x + b = 0wx+b|w\cdot x + b |能相对的表示x到超平面的距离。通过分析标签值y与wx+bw\cdot x + b符号的是否一致能够表示分类是否正确,于是可以用y(wx+b)y(w\cdot x + b)的符号来表示是否分类正确及确信度,这就是函数间隔。为此,对于样本(xi,yi)(x_i, y_i)我们定义函数间隔γ^i\hat \gamma_i为:
γ^i=yi(wxi+b) \hat \gamma_i = y_i(w \cdot x_i + b)
对于有N个样本的数据集T,定义数据集T的函数间隔为:所有样本点的函数间隔的最小值,即:
γ^i=mini=1,2,...,Nγ^i=mini=1,2,...,Nyi(wxi+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表示某一实例(xi,yi)(x_i,y_i),A到超平面的距离由AB给出,记作γi\gamma_i
γi=wxi+bw \gamma_i = \frac{w\cdot x_i + b}{||w||}
无论样本是正例还是负例,当样本被正确分类时,到超平面的距离为:
γi=yi(wxi+b)w \gamma_i = \frac{y_i(w\cdot x_i + b)}{||w||}
我们定义上面的式子为某个样本到超平面的集合间隔。

对于有N个样本的数据集T,定义数据集T的几何间隔为:所有样本点的几何间隔的最小值,即:
γ=mini=1,...,Nγi=mini=1,...,Nγiyi(wxi+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=γ^iw \gamma_i = \frac{\hat\gamma_i}{||w||}

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

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

SVM模型

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

线性可分支持向量机

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

要求几何间隔最大的分离超平面,可以转化为求解下面的最优化问题:
maxw,bγs.t.yi(wxi+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)可以将问题转化为:
maxw,bγ^ws.t.yi(wxi+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,bw,bλw,λb\lambda w ,\lambda b,函数间隔也变为λγ^\lambda \hat \gamma ,并不能改变约束条件中的不等式的关系。因此,为了简化计算,我们可以取γ^=1\hat\gamma=1。并且,最大化1w\frac{1}{\|w\|}和最小化12w2\frac{1}{2} \|w \|^2等价,于是优化目标转化为:
minw,b12w2;s.t1yi(wxi+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)是凸二次规划问题。要注意的是,训练样本中存在某些样本点使得约束条件取得等号:
yi(wxi+b)1=0 y_i(w \cdot x_i + b) -1 = 0
这样的点就是上面图片中红色方框对应的点,他们位于和决策超平面距离为1的位置上,我们称这样的点叫做支持向量。在决定分离超平面的时候,只有这些支持向量起到了作用。由于支持向量对分离超平面的决定性作用,所以将这样的分类模型叫做支持向量机。

SVM求解

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

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

首先需要构造拉格朗日函数,引入拉格朗日乘子αi0\alpha_i \geq 0后,得到:
L(w,b,α)=12w2+i=1mαi[1yi(wTxi+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)为拉格朗日乘子向量。

原始问题等价于:
minw,bmaxαL(w,b,α) \min \limits_{w,b} \max\limits_{\alpha}L(w,b,\alpha)
根据拉格朗日对偶性,所以原始问题的对偶问题是:
maxαminw,bL(w,b,α)(6) \max\limits_\alpha\min\limits_{w,b}L(w,b,\alpha) \tag 6
若原始问题与对偶问题有相同的解w,b,αw^*, b^*, \alpha^*,则要满足KKT条件:
wL(w,b,α)=wi=1mαiyixi=0(KKT.1)bL(w,b,α)=i=1mαiyi=0(KKT.2)α(yi(wTxi+b)1)=0(KKT.3)yi(wTxi+b)10(KKT.4)ai0,i=1,2,...m(KKT.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则有(yi(wTxi+b)1)=0(y_i(w^{*T}x_i+b^*)-1) = 0,此时的样本xix_i对应的点为支持向量。

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

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

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

将拉格朗日函数分别对w,b求偏导并令其等于0,得到:
L(w,b,α)w=0  w=i=1mαiyixi(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=1mαiyi=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)得到:
ψ(α)=12w2i=1mαi[yi(wTxi+b)1]=12wTwi=1mαiyiwTxii=1mαiyib+i=1mαi=12wTi=1mαiyixii=1mαiyiwTxii=1mαiyib+i=1mαi=12wTi=1mαiyixiwTi=1mαiyixii=1mαiyib+i=1mαi=12wTi=1mαiyixii=1mαiyib+i=1mαi=12wTi=1mαiyixibi=1mαiyi+i=1mαi=12(i=1mαiyixi)T(i=1mαiyixi)bi=1mαiyi+i=1mαi=12i=1mαiyixiTi=1mαiyixibi=1mαiyi+i=1mαi=12i=1mαiyixiTi=1mαiyixi+i=1mαi=12i=1,j=1mαiyixiTαjyjxj+i=1mαi=i=1mαi12i=1,j=1mαiαjyiyjxiTxj \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}
即:
ψ(α)=minw,bL(w,b,α)=i=1mαi12i=1,j=1mαiαjyiyjxiTxj \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
接下来,对ψ(α)=minw,bL(w,b,α)\psi(\alpha) = \min\limits_{w,b}L(w,b,\alpha)求极大:
maxαψ(α)=maxαi=1mαi12i=1,j=1mαiαjyiyjxiTxj(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=1mαiyixi=0αi0,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α12i=1,j=1mαiαjyiyjxiTxji=1mα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=1mαiyixi=0αi0,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=1mαiyixiw = \sum\limits_{i=1}^{m}\alpha_iy_ix_i可以得到对应的ww^*的值:
w=i=1mαiyixi w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i
正如上文讨论的,只有支持向量对决策平面有影响,其他样本则没有。选择α\alpha^*的任意一个正分量αj>0\alpha^*_j \gt 0,按下面的式子得到bb^ *
b=yj(w)Txj=yji=1mαiyixiTxj b^* = y_j - (w^*)^Tx_j = y_j -\sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i^Tx_j
根据上面KKT条件中α(yi(wTxi+b)1)=0\alpha^*(y_i(w^{*T}x_i+b^*)-1) = 0这个对偶互补条件,可以知道当α>0\alpha^*>0则有(yi(wTxi+b)1)=0(y_i(w^{*T}x_i+b^*)-1) = 0,此时的样本xix_i对应的点到划分超平面的距离为1,也就是所谓的支持向量。因此,任意αj>0\alpha^*_j \gt 0对应的样本xjx_j为支持向量。

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

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

线性可分SVM的算法流程

输入:线性可分的m个样本(x1,y1),(x2,y2),...,(xm,ym),{(x_1,y_1), (x_2,y_2), ..., (x_m,y_m),}

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

(1) 构造优化问题:
minα12i=1,j=1mαiαjyiyjxiTxji=1mα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=1mαiyixi=0αi0,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=1mαiyixiw^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i

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

局限性

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

参考文章:

《统计学习方法 第二版》

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