支持向量机

支持向量机(Support Vecor Machine,以下简称SVM)诞生于上个世纪90年代,由于它良好的分类性能,在分类领域称霸多年,在深度时代之前是分类算法中当之无愧的王者。

SVM是一个二分类算法,支持线性分类和非线性分类。经过改进,支持多元分类。经过扩展,也能应用于回归问题。

线性SVM

线性SVM分类算法针对的是线性可分数据集。

线性可分数据集:可以被线性超平面完全正确分类的数据集。

线性可分SVM

线性不可分数据集:不可以被线性超平面完全正确分类的数据集。

线性可分SVM

问题1:二分类线性可分的训练数据集如何分类?

回答:寻找一个线性分离超平面将样本点分开。

线性可分SVM
问题2:当训练数据集线性可分时,有无穷个分离超平面可将两类样本正确分开,应该以什么原则确定最 优超平面呢?

线性可分SVM
回答:希望分离超平面离两类样本尽可能远,等价于离两类的最近点尽可能远,这称为最大间隔(margin)原则

线性可分SVM

问题3:为什么要离两个类的最近点尽量远?

回答:对未知新样本的分类预测有很好的泛化能力。

线性可分SVM

以上的文字表述过于笼统,下面用数学来严谨表达。

线性SVM的优化问题

数据集

假定训练数据集为
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(\mathbf{x}_1,y_1), (\mathbf{x}_2,y_2), \cdots, (\mathbf{x}_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中, x i = [ x i 0 , x i 1 , ⋯   , x i m ] T , i = 1 , 2 , ⋯   , N \mathbf{x}_i=[x_{i0},x_{i1},\cdots,x_{im}]^T, \quad i=1,2,\cdots,N xi=[xi0,xi1,,xim]T,i=1,2,,N,是m维特征向量; y i ∈ { 1 , − 1 } , i = 1 , 2 , ⋯   , N y_i \in \{1,-1\}, \quad i=1,2,\cdots,N yi{1,1},i=1,2,,N,是对应特征向量的标签, y i = 1 y_i=1 yi=1 x i \mathbf{x}_i xi为正例, y i = − 1 y_i=-1 yi=1 x i \mathbf{x}_i xi为负例。

线性超平面

线性超平面的数学表达式为
w T x + b = 0 \mathbf{w}^T \mathbf{x}+b=0 wTx+b=0
其中, w = [ w 1 , w 2 , ⋯   , w m ] T \mathbf{w}=[w_1,w_2,\cdots,w_m]^T w=[w1,w2,,wm]T是超参数, x \mathbf{x} x是样本特征向量, b b b为截距。

分类决策函数

F ( x ) = w T x + b F(\mathbf{x})=\mathbf{w}^T \mathbf{x}+b F(x)=wTx+b F ( x ) F(\mathbf{x}) F(x)可以作为二分类的判别器。

假定落入 F ( x ) > 0 F(\mathbf{x}) \gt 0 F(x)>0区域为正例,落入 F ( x ) < 0 F(\mathbf{x}) \lt 0 F(x)<0区域为负例,可以通过 F ( x ) F(\mathbf{x}) F(x)符号来分类。

上面的想法表示为一个分类决策函数
f ( x ) = sgn ( F ( x ) ) = sgn ( w T x + b ) f(\mathbf{x})=\text{sgn}(F(\mathbf{x}))=\text{sgn}(\mathbf{w}^T \mathbf{x}+b) f(x)=sgn(F(x))=sgn(wTx+b)

间隔

线性可分SVM
x − x_- x w T x + b = − 1 \mathbf{w}^T \mathbf{x} + b = -1 wTx+b=1上的一个样本点, w T x + b = − 1 \mathbf{w}^T \mathbf{x} + b = -1 wTx+b=1以点 x − x_- x为垂足作一条垂直线,与 w T x + b = 1 \mathbf{w}^T \mathbf{x} + b = 1 wTx+b=1相交于 x + x_+ x+,设定 x + x_+ x+ x − x_- x之间的距离为 λ \lambda λ x + x_+ x+ x − x_- x的关系可以表示为
x + = x − + λ w ∣ ∣ w ∣ ∣ 2 x_+=x_-+\lambda \frac{\mathbf{w}}{||\mathbf{w}||_2} x+=x+λw2w
其中, ∣ ∣ w ∣ ∣ 2 = w 0 2 + w 1 2 + ⋯ + w n 2 ||\mathbf{w}||_2=\sqrt{w_0^2+w_1^2+\cdots+w_n^2} w2=w02+w12++wn2 ,为 w \mathbf{w} w的L2范数。

λ \lambda λ就是要求的间隔,具体的求解方式如下:

{ w T x + + b = 1 w T x − + b = − 1 ⇒ w T ( x + − x − ) = 2 ⇒ w T λ w ∣ ∣ w ∣ ∣ 2 = 2 ⇒ λ = 2 ∣ ∣ w ∣ ∣ 2 \begin{aligned} &\left\{ \begin{aligned} \mathbf{w}^T \mathbf{x}_+ + b & = 1 \\ \mathbf{w}^T \mathbf{x}_- + b & = -1 \end{aligned} \right. \\ \Rightarrow& \mathbf{w}^T (\mathbf{x}_+ - \mathbf{x}_-)=2 \\ \Rightarrow& \frac{\mathbf{w}^T \lambda \mathbf{w}}{||\mathbf{w}||_2} = 2 \\ \Rightarrow& \lambda = \frac{2}{||\mathbf{w}||_2} \end{aligned} {wTx++bwTx+b=1=1wT(x+x)=2w2wTλw=2λ=w22

这里 w T x + + b = 1 \mathbf{w}^T \mathbf{x}_+ + b = 1 wTx++b=1 w T x − + b = − 1 \mathbf{w}^T \mathbf{x}_- + b = -1 wTx+b=1一个取+1一个取-1只是为了方便,其实可以取其他非零常数,不会对后续优化问题造成任何影响。

优化问题的目标函数和约束条件

根据最大间隔原则,我们希望在保证样本分类正确的前提下间隔尽可能大。

  • 使间隔尽可能大

    用数学公式表示就是
    max ⁡ 2 ∣ ∣ w ∣ ∣ 2 \max \frac{2}{||\mathbf{w}||_2} maxw22
    等效于
    min ⁡ 1 2 ∣ ∣ w ∣ ∣ 2 2 \min \frac{1}{2}||\mathbf{w}||_2^2 min21w22
    ∣ ∣ w ∣ ∣ 2 ||\mathbf{w}||_2 w2加平方不影响最优值的结果,而且 ∣ ∣ w ∣ ∣ 2 2 ||\mathbf{w}||_2^2 w22是凸函数,后续可以借助凸优化理论的数学工具求解最优参数。 1 2 \frac{1}{2} 21只是为了后续求导时能消去2才保留的。

  • 如何确定样本分类正确?

    • ( x , y ) (\mathbf{x},y) (x,y)是正例(即 y = 1 y=1 y=1)

      根据之前间隔数学表达式的推导过程,正例必须满足 w T x + b ≥ 1 \mathbf{w}^T \mathbf{x} + b \ge 1 wTx+b1,即在 w T x + b = 1 \mathbf{w}^T \mathbf{x} + b = 1 wTx+b=1正法线方向的一侧。

    • ( x , y ) (\mathbf{x},y) (x,y)是负例(即 y = − 1 y=-1 y=1)

      同理有 w T x + b ≤ − 1 \mathbf{w}^T \mathbf{x} + b \le -1 wTx+b1

    上面两种情况可以合起来表示为
    y ( w T x + b ) ≥ 1 y(\mathbf{w}^T \mathbf{x} + b) \ge 1 y(wTx+b)1

综上,分类问题就转化为一个约束最优化问题:
min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , ⋯   , N \min_{\mathbf{w},b} \frac{1}{2}||\mathbf{w}||_2^2 \\ s.t. \quad y_i(\mathbf{w}^T\mathbf{x}_i+b) \ge 1, \quad i=1, 2,\cdots,N w,bmin21w22s.t.yi(wTxi+b)1,i=1,2,,N
这是一个二次规划问题(目标函数为二次函数,约束为线性约束)。

线性SVM优化问题的求解

采用拉格朗日乘子法,目标函数等效为
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 − ∑ i = 1 N α i [ y i ( w T x i + b ) − 1 ] L(\mathbf{w}, b, \boldsymbol{\alpha}) = \frac{1}{2}||\mathbf{w}||_2^2 - \sum_{i=1}^N \alpha_i [y_i(\mathbf{w}^T\mathbf{x}_i+b) - 1] L(w,b,α)=21w22i=1Nαi[yi(wTxi+b)1]

其中 α i ≥ 0 , i = 1 , 2 , ⋯   , N \alpha_i \ge 0, \quad i=1, 2,\cdots,N αi0,i=1,2,,N

为何可以通过拉格朗日乘子法将约束优化问题等效到无约束优化问题?

优化问题变为
min ⁡ w , b max ⁡ α L ( w , b , α ) s . t . α i ≥ 0 , i = 1 , 2 , ⋯   , N \begin{aligned} &\min_{\mathbf{w}, b} \max_{\boldsymbol{\alpha}} L(\mathbf{w}, b, \boldsymbol{\alpha}) \\ s.t. \quad &\alpha_i \ge 0, \quad i=1, 2,\cdots,N \end{aligned} s.t.w,bminαmaxL(w,b,α)αi0,i=1,2,,N
优化函数满足KKT条件,优化问题可以转化为等价的对偶问题

max ⁡ α min ⁡ w , b L ( w , b , α ) s . t . α i ≥ 0 , i = 1 , 2 , ⋯   , N \begin{aligned} &\max_{\boldsymbol{\alpha}} \min_{\mathbf{w},b} L(\mathbf{w}, b, \boldsymbol{\alpha}) \\ s.t. \quad &\alpha_i \ge 0, \quad i=1, 2,\cdots,N \end{aligned} s.t.αmaxw,bminL(w,b,α)αi0,i=1,2,,N

先求 L ( w , b , α ) L(\mathbf{w},b,\alpha) L(w,b,α)取极小值时的参数 ( w , b ) (\mathbf{w},b) (w,b)
{ ∂ L ∂ w = 0 ⇒ w = ∑ i = 1 N α i y i x i ∂ L ∂ b = 0 ⇒ ∑ i = 1 N α i y i = 0 \left\{ \begin{aligned} &\frac{\partial L}{\partial \mathbf{w}} = 0 \Rightarrow \mathbf{w} = \sum_{i=1}^N\alpha_i y_i \mathbf{x}_i \\ &\frac{\partial L}{\partial b} = 0 \Rightarrow \sum_{i=1}^N \alpha_i y_i = 0 \end{aligned} \right. wL=0w=i=1NαiyixibL=0i=1Nαiyi=0
上面求出了 w \mathbf{w} w α \boldsymbol{\alpha} α表示的结果,代入后续目标函数,求极大值得到 α \boldsymbol{\alpha} α就能知道最优的 w ∗ \mathbf{w}^* w。对于 b b b,没有相应的求解式,求解的方法会在后面讲解。

定义
ψ ( α ) = min ⁡ w , b L ( w , b , α ) \psi(\boldsymbol{\alpha}) = \min_{\mathbf{w},b} L(\mathbf{w},b,\boldsymbol{\alpha}) ψ(α)=w,bminL(w,b,α)
L ( w , b , α ) L(\mathbf{w},b,\boldsymbol{\alpha}) L(w,b,α)代入
{ w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 \left\{ \begin{aligned} &\mathbf{w} = \sum_{i=1}^N\alpha_i y_i \mathbf{x}_i \\ &\sum_{i=1}^N \alpha_i y_i = 0 \end{aligned} \right. w=i=1Nαiyixii=1Nαiyi=0

ψ ( α ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 − ∑ i = 1 N α i [ y i ( w T x i + b ) − 1 ] = 1 2 w T w − ∑ i = 1 N α i y i w T x i − ∑ i = 1 N α i y i b + ∑ i = 1 N α i = 1 2 w T ∑ i = 1 N α i y i x i − w T ∑ i = 1 N α i y i x i − b ∑ i = 1 N α i y i + ∑ i = 1 N α i = − 1 2 w T ∑ i = 1 N α i y i x i + ∑ i = 1 N α i = − 1 2 ( ∑ j = 1 N α j y j x j ) T ∑ i = 1 N α i y i x i + ∑ i = 1 N α i = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x j T x i = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j \begin{aligned} \psi(\boldsymbol{\alpha}) &= \frac{1}{2} || \mathbf{w}||_2^2 - \sum_{i=1}^N \alpha_i [y_i(\mathbf{w}^T\mathbf{x}_i+b) - 1] \\ &= \frac{1}{2} \mathbf{w}^T \mathbf{w} - \sum_{i=1}^N \alpha_i y_i\mathbf{w}^T\mathbf{x}_i - \sum_{i=1}^N \alpha_i y_i b + \sum_{i=1}^N \alpha_i \\ &= \frac{1}{2} \mathbf{w}^T \sum_{i=1}^N \alpha_i y_i \mathbf{x}_i - \mathbf{w}^T\sum_{i=1}^N \alpha_i y_i\mathbf{x}_i - b\sum_{i=1}^N \alpha_i y_i + \sum_{i=1}^N \alpha_i \\ &= -\frac{1}{2} \mathbf{w}^T \sum_{i=1}^N \alpha_i y_i \mathbf{x}_i + \sum_{i=1}^N \alpha_i \\ &= -\frac{1}{2} (\sum_{j=1}^N \alpha_j y_j \mathbf{x}_j)^T \sum_{i=1}^N \alpha_i y_i \mathbf{x}_i + \sum_{i=1}^N \alpha_i \\ &= \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j \mathbf{x}_j^T \mathbf{x}_i \\ &= \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j \mathbf{x}_i^T \mathbf{x}_j \end{aligned} ψ(α)=21w22i=1Nαi[yi(wTxi+b)1]=21wTwi=1NαiyiwTxii=1Nαiyib+i=1Nαi=21wTi=1NαiyixiwTi=1Nαiyixibi=1Nαiyi+i=1Nαi=21wTi=1Nαiyixi+i=1Nαi=21(j=1Nαjyjxj)Ti=1Nαiyixi+i=1Nαi=i=1Nαi21i=1Nj=1NαiαjyiyjxjTxi=i=1Nαi21i=1Nj=1NαiαjyiyjxiTxj
那么优化问题变成 ψ ( α ) \psi(\boldsymbol{\alpha}) ψ(α)的极大化问题
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 ≥ 0 , i = 1 , 2 , ⋯   , N \begin{aligned} \max_{\boldsymbol{\alpha}} \sum_{i=1}^N \alpha_i -& \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j \mathbf{x}_i^T \mathbf{x}_j \\ s.t. \quad\quad\quad &\sum_{i=1}^N \alpha_i y_i = 0 \\ \alpha_i \ge& 0, \quad i=1, 2,\cdots,N \end{aligned} αmaxi=1Nαis.t.αi21i=1Nj=1NαiαjyiyjxiTxji=1Nαiyi=00,i=1,2,,N
去掉负号可以得到等价的极小化问题
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ≥ 0 , i = 1 , 2 , ⋯   , N \begin{aligned} \min_{\boldsymbol{\alpha}} \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N &\alpha_i \alpha_j y_i y_j \mathbf{x}_i^T \mathbf{x}_j - \sum_{i=1}^N \alpha_i \\ s.t. \quad\quad\quad &\sum_{i=1}^N \alpha_i y_i = 0 \\ \alpha_i \ge& 0, \quad i=1, 2,\cdots,N \end{aligned} αmin21i=1Nj=1Ns.t.αiαiαjyiyjxiTxji=1Nαii=1Nαiyi=00,i=1,2,,N
优化问题的最优参数 α ∗ \boldsymbol{\alpha}^* α一般用SMO算法求解,这个算法内容较复杂,这里不做讲解。

线性超平面的求解式

现在已经通过SMO算法得到最优参数 α ∗ \boldsymbol{\alpha}^* α,那么对应的最优 w ∗ \mathbf{w}^* w
w ∗ = ∑ i = 1 N α i ∗ y i x i \mathbf{w}^* = \sum_{i=1}^N\alpha_i^* y_i \mathbf{x}_i w=i=1Nαiyixi
对于参数 b b b,优化过程中没有相应的求解式,但对间隔边界上的样本点,都符合
y ( w T x + b ) = 1 y (\mathbf{w}^T \mathbf{x} + b) = 1 y(wTx+b)=1

线性可分SVM
所以只要找到任一支持向量 ( x k , y k ) (\mathbf{x}_k, y_k) (xk,yk),并代入 w ∗ \mathbf{w}^* w,有
b ∗ = y k − 1 − w ∗ T x k = y k − w ∗ T x k b^* = y_k^{-1} - {\mathbf{w}^*}^T \mathbf{x}_k = y_k - {\mathbf{w}^*}^T \mathbf{x}_k b=yk1wTxk=ykwTxk

由于 y k ∈ { 1 , − 1 } y_k \in \{1,-1\} yk{1,1},所以 y k − 1 = y k y_k^{-1} = y_k yk1=yk

确定支持向量的方法

如何确定支持向量?

我们现在手上已知的信息包括:

  • 最优参数 α ∗ \boldsymbol{\alpha}^* α

  • KKT条件(部分):
    α i [ y i ( w T x i + b ) − 1 ] = 0 , i = 1 , 2 , ⋯   , N y i ( w T x i + b ) − 1 ≥ 0 , i = 1 , 2 , ⋯   , N α i ≥ 0 , i = 1 , 2 , ⋯   , N \begin{aligned} \alpha_i [y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1] = 0,& \quad i=1,2,\cdots,N \\ y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 \ge 0,& \quad i=1,2,\cdots,N \\ \alpha_i \ge 0,& \quad i=1,2,\cdots,N \end{aligned} αi[yi(wTxi+b)1]=0,yi(wTxi+b)10,αi0,i=1,2,,Ni=1,2,,Ni=1,2,,N

如果 α i > 0 \alpha_i \gt 0 αi>0,说明 y i ( w T x i + b ) = 1 y_i (\mathbf{w}^T \mathbf{x}_i + b) = 1 yi(wTxi+b)=1 ( x i , y i ) (\mathbf{x}_i,y_i) (xi,yi)在最大间隔界面上,是支持向量

如果 α i = 0 \alpha_i = 0 αi=0,说明 y i ( w T x i + b ) ≥ 1 y_i (\mathbf{w}^T \mathbf{x}_i + b) \ge 1 yi(wTxi+b)1 ( x i , y i ) (\mathbf{x}_i,y_i) (xi,yi)在最大间隔界面上,或者在最大间隔外且被正确分类,它不是支持向量。

所以,可以通过 α i \alpha_i αi是否大于0来判断样本点是否为支持向量机。

疑问:当 α i = 0 \alpha_i = 0 αi=0时, ( x i , y i ) (\mathbf{x}_i,y_i) (xi,yi)也有可能在最大间隔界面上,为什么就认为它不是支持向量?

支持向量是决定分离超平面 w T x + b = 0 \mathbf{w}^T \mathbf{x} + b=0 wTx+b=0的样本点,根据 w = ∑ i = 1 N α i y i x i \mathbf{w} = \sum_{i=1}^N\alpha_i y_i \mathbf{x}_i w=i=1Nαiyixi,如果 α i = 0 \alpha_i = 0 αi=0,那么样本点 ( x i , y i ) (\mathbf{x}_i,y_i) (xi,yi)对决定 w \mathbf{w} w没有任何影响,所以认为它不是支持向量。

线性SVM的算法过程

输入:线性可分的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(\mathbf{x}_1,y_1), (\mathbf{x}_2,y_2), \cdots, (\mathbf{x}_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}

输出:分离超平面和分类决策函数。

算法步骤:

  1. 构造约束优化问题
    min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ≥ 0 , i = 1 , 2 , ⋯   , N \begin{aligned} \min_{\boldsymbol{\alpha}} \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N &\alpha_i \alpha_j y_i y_j \mathbf{x}_i^T \mathbf{x}_j - \sum_{i=1}^N \alpha_i \\ s.t. \quad\quad\quad &\sum_{i=1}^N \alpha_i y_i = 0 \\ \alpha_i \ge& 0, \quad i=1, 2,\cdots,N \end{aligned} αmin21i=1Nj=1Ns.t.αiαiαjyiyjxiTxji=1Nαii=1Nαiyi=00,i=1,2,,N

  2. 用SMO算法求出最优参数 α ∗ \boldsymbol{\alpha}^* α

  3. 计算 w ∗ = ∑ i = 1 N α i ∗ y i x i \mathbf{w}^* = \sum_{i=1}^N\alpha_i^* y_i \mathbf{x}_i w=i=1Nαiyixi

  4. 寻找一个满足 α k ∗ > 0 \alpha_k^* \gt 0 αk>0的样本点 ( x k , y k ) (\mathbf{x}_k,y_k) (xk,yk),计算 b ∗ = y k − w ∗ T x k b^* = y_k - {\mathbf{w}^*}^T \mathbf{x}_k b=ykwTxk

  5. 得到分离超平面 w ∗ T x + b ∗ = 0 {\mathbf{w}^*}^T \mathbf{x} + b^*=0 wTx+b=0和分类决策函数 f ( x ) = sgn ( w ∗ T x + b ∗ ) f(x) = \text{sgn}({\mathbf{w}^*}^T \mathbf{x} + b^*) f(x)=sgn(wTx+b)

相关文章: