【图解例说机器学习】支持向量机 (SVM)

支持向量机(Support Vector Machine, SVM),是一种常见的有监督的学习模型,通常用来进行模式识别、分类以及回归分析。本文主要介绍SVM在二分类问题的应用。注意:由于篇幅有限,本文中所有图像采用Python绘制的绘制,并在【漫漫科研路\Python】画支持向量机相关图给出。


线性可分支持向量机

我们还是以【图解例说机器学习】感知机的二分类例子 (Toy Example) 说起。如图1,假设有一个线性可分的训练集,其中有三个样例 ( x 1 , x 2 , x 3 \mathrm x_1,\mathrm x_2, \mathrm x_3 x1,x2,x3),分别标记为正例(红色方块),反例(蓝色圆圈)。这里的 x ( 1 ) , x ( 2 ) x^{(1)},x^{(2)} x(1),x(2)为训练样例的 2 2 2个特征。

图1

感知机的目的就是找到一个超平面 (在二维空间为一条直线) 能够将这三个样例分开。显然,这样的直线有无数条,比如图中的直线 f ( x ) = x ( 1 ) + x ( 2 ) − 4 = 0 , f ( x ) = 2 x ( 1 ) + x ( 2 ) − 5 = 0 f(\mathrm x)=x^{(1)}+x^{(2)}-4=0, f(\mathrm x)=2x^{(1)}+x^{(2)}-5=0 f(x)=x(1)+x(2)4=0,f(x)=2x(1)+x(2)5=0 就是可能得到其中的两条。

感知机的结果,即分类超平面,与参数的初始值有关,也和在每次迭代时选取的误分类样例有关。在上面例子中,得到的两个分类超平面中,直觉上,直线 x ( 1 ) + x ( 2 ) − 4 = 0 x^{(1)}+x^{(2)}-4=0 x(1)+x(2)4=0的分类效果要好于 2 x ( 1 ) + x ( 2 ) − 5 = 0 2x^{(1)}+x^{(2)}-5=0 2x(1)+x(2)5=0的分类效果好。这是因为,直线 x ( 1 ) + x ( 2 ) − 4 = 0 x^{(1)}+x^{(2)}-4=0 x(1)+x(2)4=0位于正负样例的中间位置,其对训练样例的扰动具有较好的鲁棒性。由于训练集的局限性或者噪声,训练集外的样例可能比较接近分类超平面,此时直线 2 x ( 1 ) + x ( 2 ) − 5 = 0 2x^{(1)}+x^{(2)}-5=0 2x(1)+x(2)5=0就会使得这些样例错误分类,即泛化能力较差。

为了克服感知机的上述问题,SVM的目的就是找到最佳的分类超平面,而不是仅仅对训练集的样例正确分类,也考虑如何对未见样例具备较强的泛化能力。


SVM 分类模型

间隔

在中学时,我们学过一个点 x x x到一条直线 a x + b y + c = 0 ax+by+c=0 ax+by+c=0的距离可以为 ∣ a x + b y + c ∣ / a 2 + b 2 \lvert ax+by+c\rvert/\sqrt{a^2+b^2} ax+by+c/a2+b2 。类似地,空间中一点 x \mathrm x x 到一个超平面 ω 0 + w T x = 0 \omega_0+\mathrm w^{\mathrm T}\mathrm x=0 ω0+wTx=0的距离为:
d = ∣ ω 0 + w T x ∣ ∣ w ∣ (1) d=\frac{\lvert\omega_0+\mathrm w^{\mathrm T}\mathrm x\rvert}{\lvert\mathrm w\rvert}\tag{1} d=wω0+wTx(1)

关于公式(1)的直观表示如下图2所示:

图2

在图2中, w ∣ w ∣ \frac{\mathrm w}{\lvert\mathrm w\rvert} ww 是直线 x ( 1 ) + x ( 2 ) − 3 = 0 x^{(1)}+x^{(2)}-3=0 x(1)+x(2)3=0的单位法向量, x 1 ⊥ , x 2 ⊥ \mathrm x_1^\perp, \mathrm x_2^\perp x1,x2 分别为 x 1 , x 2 \mathrm x_1, \mathrm x_2 x1,x2 在该直线的投影。此时空间中的任意一点 x \mathrm x x可以由其到该直线的投影 x ⊥ \mathrm x^\perp x 和单位法向量表示:
x = x ⊥ + d w ∣ w ∣ (2) \mathrm x=\mathrm x^\perp+d\frac{\mathrm w}{\lvert\mathrm w\rvert}\tag{2} x=x+dww(2)
对于公式(2),我们将其乘以 w \mathrm w w 加上 ω 0 \omega_0 ω0 后有:
w T x + ω 0 = w T x ⊥ + d w ∣ w ∣ + ω 0 (3) \mathrm w^{\mathrm T}\mathrm x+\omega_0=\mathrm w^{\mathrm T}\mathrm x^\perp+d\frac{\mathrm w}{\lvert\mathrm w\rvert}+\omega_0\tag{3} wTx+ω0=wTx+dww+ω0(3)
由于 x T \mathrm x^{\mathrm T} xT 是直线 ω 0 + w T x = 0 \omega_0+\mathrm w^{\mathrm T}\mathrm x=0 ω0+wTx=0 上的点,由公式(3)可得:
d = w T x + ω 0 ∣ w ∣ (4) d=\frac{\mathrm w^{\mathrm T}\mathrm x+\omega_0}{\lvert\mathrm w\rvert}\tag{4} d=wwTx+ω0(4)

结合图2和公式(2)和(3),我们可以表示 x 1 , x 2 \mathrm x_1,\mathrm x_2 x1,x2如下:
x 1 = x 1 ⊥ + 2 2 w ∣ w ∣ (5) \mathrm x_1=\mathrm x_1^\perp+\frac{\sqrt{2}}{2}\frac{\mathrm w}{\lvert\mathrm w\rvert}\tag{5} x1=x1+22 ww(5)

x 2 = x 2 ⊥ − 2 4 w ∣ w ∣ (6) \mathrm x_2=\mathrm x_2^\perp-\frac{\sqrt{2}}{4}\frac{\mathrm w}{\lvert\mathrm w\rvert}\tag{6} x2=x242 ww(6)

公式(5)和(6)表明:当 x \mathrm x x为正例 (例如 x 1 \mathrm x_1 x1) 时, d d d为正数;当 x \mathrm x x为反例 (例如 x 2 \mathrm x_2 x2) 时, d d d为负数。也就是说,公式(4)中的距离 d d d是有方向的。具体来说,对于例子中的样例 x 1 \mathrm x_1 x1,是正例,即 y = + 1 y=+1 y=+1 ,其到直线 ω 0 + w T x = 0 \omega_0+\mathrm w^{\mathrm T}\mathrm x=0 ω0+wTx=0的距离为 d = w T x 1 + ω 0 ∣ w ∣ > 0 d=\frac{\mathrm w^{\mathrm T}\mathrm x_1+\omega_0}{\lvert\mathrm w\rvert}>0 d=wwTx1+ω0>0; 对于例子中的样例 x 2 \mathrm x_2 x2,是反例,即 y = − 1 y=-1 y=1 ,其到直线 ω 0 + w T x = 0 \omega_0+\mathrm w^{\mathrm T}\mathrm x=0 ω0+wTx=0的距离为 d = w T x 2 + ω 0 ∣ w ∣ < 0 d=\frac{\mathrm w^{\mathrm T}\mathrm x_2+\omega_0}{\lvert\mathrm w\rvert}<0 d=wwTx2+ω0<0.为此,对于任意样例 x \mathrm x x (无论正例还是反例),其距离分类超平面的无方向距离(始终大于0)为:
∣ d ∣ = ω 0 + w T x ∣ w ∣ y (7) \lvert d\rvert=\frac{\omega_0+\mathrm w^{\mathrm T}\mathrm x}{\lvert\mathrm w\rvert} y\tag{7} d=wω0+wTxy(7)
注意:公式(7)是公式(6)在考虑样例分类情况下,将有方向的距离 d d d化为无方向距离 ∣ d ∣ \lvert d\rvert d的具体表达式。


优化问题

SVM的中心思想就是找出离分类超平面最近的点(又称支持向量),然后最大化这些点与分类超平面的距离。对于一个 M M M维特征空间,超平面的表达式为:
y ^ = ω 0 + ω 1 x ( 1 ) + ⋯ + ω M x ( M ) = ω 0 + w T x (8) \hat y=\omega_0+\omega_1x^{(1)}+\cdots+\omega_Mx^{(M)}=\omega_0+\mathrm w^{\mathrm T}\mathrm x\tag{8} y^=ω0+ω1x(1)++ωMx(M)=ω0+wTx(8)
为此,我们可以得到如下的优化问题:
max ⁡ ω 0 , w min ⁡ i ω 0 + w T x i ∣ w ∣ y i (9) \max\limits_{\omega_0,\mathrm w}\min\limits_{i}\quad\frac{\omega_0+\mathrm w^{\mathrm T}\mathrm x_i}{\lvert\mathrm w\rvert} y_i\tag{9} ω0,wmaximinwω0+wTxiyi(9)
直接求解问题(9)比较复杂。这里我们发现,对于一个分类超平面 (例如,上面例子中的直线 y ^ = ω 0 + w T x = 0 \hat y=\omega_0+\mathrm w^{\mathrm T}\mathrm x=0 y^=ω0+wTx=0 ),同时对 ω 0 , w \omega_0,\mathrm w ω0,w进行缩放并不改变该分类超平面,也就不改变任意点到该分类超平面的距离。为此我们可以将 ω 0 , w \omega_0,\mathrm w ω0,w进行缩放,使得离分类超平面最近的点 (支持向量)满足 ( ω 0 + w T x ) y = 1 (\omega_0+\mathrm w^{\mathrm T}\mathrm x)y=1 (ω0+wTx)y=1。那么此时,训练集中所有其他样例点肯定满足 ( ω 0 + w T x ) y > 1 (\omega_0+\mathrm w^{\mathrm T}\mathrm x)y>1 (ω0+wTx)y>1。这时,优化问题(9)可以转化为SVM优化问题的标准形式:
min ⁡ ω 0 , w 1 2 ∣ w ∣ 2 s . t . ( ω 0 + w T x i ) y i ≥ 1 ∀ i = 1 , 2 , ⋯   , N (10) \begin{aligned} &\min\limits_{\omega_0,\mathrm w}\quad\frac{1}{2}\lvert\mathrm w\rvert^2\\ &s.t.\quad (\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i\ge1\quad\forall i=1,2,\cdots,N \end{aligned}\tag{10} ω0,wmin21w2s.t.(ω0+wTxi)yi1i=1,2,,N(10)
注意:问题(9)转为标准形式(10)的主要步骤:1)令支持向量对应的 ( ω 0 + w T x ) y = 1 (\omega_0+\mathrm w^{\mathrm T}\mathrm x)y=1 (ω0+wTx)y=1,从而去掉最小化,并将问题(9)中的分子加入到约束中;2)最小化 1 ∣ w ∣ \frac{1}{\lvert\mathrm w\rvert} w1等效于最大化 1 2 ∣ w ∣ 2 \frac{1}{2}{\lvert\mathrm w\rvert^2} 21w2

从标准化的优化问题可以看出,该问题是凸二次优化问题,可以使用一些已有的工具箱求解,如CVX, Gurobi, CPLEX等。


基于CVX的问题求解

我们还是以本文开始的小例子 (Toy Example) 为例。此时,我们得到的分类超平面应该是一条直线,形式为 ω 0 + ω 1 x ( 1 ) + ω 2 x ( 2 ) = 0 \omega_0+\omega_1x^{(1)}+\omega_2x^{(2)}=0 ω0+ω1x(1)+ω2x(2)=0。根据SVM的标准凸优化形式(10),我们有
min ⁡ ω 0 , ω 1 , ω 2 1 2 ( ω 1 2 + ω 2 2 ) s . t . ( ω 0 + ω 1 x 1 ( 1 ) + ω 2 x 1 ( 2 ) ) y 1 ≥ 1 ( ω 0 + ω 1 x 2 ( 1 ) + ω 2 x 2 ( 2 ) ) y 2 ≥ 1 ( ω 0 + ω 1 x 3 ( 1 ) + ω 2 x 3 ( 2 ) ) y 3 ≥ 1 (11) \begin{aligned} &\min\limits_{\omega_0,\omega_1,\omega_2}\quad&&\frac{1}{2}(\omega_1^2+\omega_2^2)\\ &s.t.\quad&&(\omega_0+\omega_1x_1^{(1)}+\omega_2x_1^{(2)})y_1\ge1\\ &\quad&&(\omega_0+\omega_1x_2^{(1)}+\omega_2x_2^{(2)})y_2\ge1\\ &\quad&&(\omega_0+\omega_1x_3^{(1)}+\omega_2x_3^{(2)})y_3\ge1\\ \end{aligned}\tag{11} ω0,ω1,ω2mins.t.21(ω12+ω22)(ω0+ω1x1(1)+ω2x1(2))y11(ω0+ω1x2(1)+ω2x2(2))y21(ω0+ω1x3(1)+ω2x3(2))y31(11)
求解该问题,我们可以得到其最优解为 ω 0 = 2 , ω 1 = ω 2 = 1 2 \omega_0=2,\omega_1=\omega_2=\frac{1}{2} ω0=2,ω1=ω2=21。此时的分离超平面为直线 1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 0 \frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2=0 21x(1)+21x(2)2=0。此时的决定该直线的支持向量为使得 1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 1 , − 1 \frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2=1,-1 21x(1)+21x(2)2=1,1的样例点 x 1 ( 3 , 3 ) \mathrm x_1(3,3) x1(3,3) x 3 ( 1 , 1 ) \mathrm x_3(1,1) x3(1,1)。下图3具象地表达了这一结果:

图3

关于CVX算法实现部分,由于这台电脑没有装MATLAB,此部分回学校后再写


至此,最基本的SVM算法已经讲完了。由于上述SVM存在一些难点,下面我们对其进行扩展:

  • SVM标准形式的凸优化问题不易求解,往往我们可以通过其对偶问题求解
  • 当训练集的样例线性不可分,而通过投影到高维空间后线性可分时,我们可以在对偶问题中使用核函数
  • 当训练集及其高维映射都不可分时,我们可以考虑容许部分样例分类错误

对偶问题

为例求解上述标准形式的凸二次优化问题(10),我们除了使用工具箱直接求解外,还可以通过其对偶问题求解。一般来说,相对于求解原始问题,求解其对偶问题一般有以下好处:1)即使原始问题不是凸的,对偶函数仍是关于对偶变量的凸函数;2)具有更好的解释性,适用于分布式算法。对于SVM问题,我们发现求解其对偶问题的过程中可以使用核函数 (下一节提及),可以使用一些启发式算法 (后文提及的SMO) 来加速算法。

对约束引入拉格朗日乘子 λ = { λ i ≥ 0 ∣ i = 1 , 2 , ⋯   , N } \lambda=\{\lambda_i\ge 0\mid i=1,2,\cdots,N\} λ={λi0i=1,2,,N},我们得到如下的拉格朗日函数:
L ( λ , ω 0 , w ) = 1 2 ∣ w ∣ 2 + ∑ i = 1 N λ i [ 1 − ( ω 0 + w T x i ) y i ] (12) L(\lambda,\omega_0,\mathrm w)=\frac{1}{2}\lvert\mathrm w\rvert^2+\sum\limits_{i=1}^{N}\lambda_i[1-(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i]\tag{12} L(λ,ω0,w)=21w2+i=1Nλi[1(ω0+wTxi)yi](12)
此时对应的对偶问题为:
max ⁡ λ min ⁡ ω 0 , w L ( λ , ω 0 , w ) (13) \max\limits_{\lambda}\min\limits_{\omega_0,\mathrm w}\quad L(\lambda,\omega_0,\mathrm w)\tag{13} λmaxω0,wminL(λ,ω0,w)(13)
由于原始问题(10)为凸问题,那么对偶问题与原始问题的解的gap为0. 通过求解对偶问题,我们就能得到原始问题的最优解。


求解上述对偶问题 (极大极小问题) 的一般思路为,先固定 λ \lambda λ ,求解 min ⁡ ω 0 , w L ( ω 0 , w ∣ λ ) \min\nolimits_{\omega_0,\mathrm w}\quad L(\omega_0,\mathrm w\mid \lambda) minω0,wL(ω0,wλ)得到 ω 0 , w \omega_0,\mathrm w ω0,w,然后一般通过梯度(或次梯度)更新 λ \lambda λ。幸运地是,在求解 min ⁡ ω 0 , w L ( ω 0 , w ∣ λ ) \min\nolimits_{\omega_0,\mathrm w}\quad L(\omega_0,\mathrm w\mid \lambda) minω0,wL(ω0,wλ) 时,我们可以得到其解析解 ω 0 ⋆ , w ⋆ \omega_0^\star,\mathrm w^\star ω0,w,所以我们不需要迭代,只需要直接求解 max ⁡ λ L ( λ ∣ ω 0 ⋆ , w ⋆ ) \max\nolimits_{\lambda}\quad L(\lambda\mid \omega_0^\star,\mathrm w^\star) maxλL(λω0,w)。具体步骤如下:

  • 求解 min ⁡ ω 0 , w L ( ω 0 , w ∣ λ ) \min\nolimits_{\omega_0,\mathrm w}\quad L(\omega_0,\mathrm w\mid \lambda) minω0,wL(ω0,wλ)
    由于该问题为凸二次规划问题,其最优解为一阶微分为0的点,即:
    ∂ L ( ω 0 , w ∣ λ ) ∂ ω j = ω j − ∑ i = 1 N λ i y i x i ( j ) = 0 → ω j ⋆ = ∑ i = 1 N λ i y i x i ( j ) (14) \frac{\partial L(\omega_0,\mathrm w\mid\lambda)}{\partial\omega_j}=\omega_j-\sum\limits_{i=1}^{N}\lambda_iy_ix_i^{(j)}=0\rightarrow\omega_j^\star=\sum\limits_{i=1}^{N}\lambda_iy_ix_i^{(j)}\tag{14} ωjL(ω0,wλ)=ωji=1Nλiyixi(j)=0ωj=i=1Nλiyixi(j)(14)

    ∂ L ( ω 0 , w ∣ λ ) ∂ ω 0 = − ∑ i = 1 N λ i y i = 0 (15) \frac{\partial L(\omega_0,\mathrm w\mid\lambda)}{\partial\omega_0}=-\sum\limits_{i=1}^{N}\lambda_iy_i=0\tag{15} ω0L(ω0,wλ)=i=1Nλiyi=0(15)

    将公式(14)和(15)带入公式(10),我们有:
    L ( λ ∣ ω 0 ⋆ , w ⋆ ) = 1 2 ∣ w ∣ 2 + ∑ i = 1 N λ i [ 1 − ( ω 0 + w T x i ) y i ] = 1 2 ∑ j = 1 M ω j 2 + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i ( ω 0 + ∑ j = 1 M ω j x i ( j ) ) = 1 2 ∑ j = 1 M ω j 2 − ω 0 ∑ i = 1 N λ i y i − ∑ i = 1 N λ i y i ∑ j = 1 M ω j x i ( j ) + ∑ i = 1 N λ i = 1 2 ∑ j = 1 M ω j 2 − ∑ i = 1 N λ i y i ∑ j = 1 M ω j x i ( j ) + ∑ i = 1 N λ i = 1 2 ∑ j = 1 M ( ∑ i = 1 N λ i y i x i ( j ) ∑ i ′ = 1 N λ i ′ y i ′ x i ′ ( j ) ) − ∑ i = 1 N λ i y i ∑ j = 1 M ( ∑ i ′ = 1 N λ i ′ y i ′ x i ′ ( j ) ) x i ( j ) + ∑ i = 1 N λ i = − 1 2 ∑ j = 1 M ∑ i = 1 N ∑ i ′ = 1 N λ i λ i ′ y i y i ′ x i ( j ) x i ′ ( j ) + ∑ i = 1 N λ i (16) \begin{aligned} L(\lambda\mid\omega_0^\star,\mathrm w^\star)&=\frac{1}{2}\lvert\mathrm w\rvert^2+\sum\limits_{i=1}^{N}\lambda_i[1-(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i]\\ &=\frac{1}{2}\sum\limits_{j=1}^{M}\omega_j^2+\sum\limits_{i=1}^{N}\lambda_i-\sum\limits_{i=1}^{N}\lambda_iy_i(\omega_0+\sum\limits_{j=1}^{M}\omega_jx_i^{(j)})\\ &=\frac{1}{2}\sum\limits_{j=1}^{M}\omega_j^2-\omega_0\sum\limits_{i=1}^{N}\lambda_iy_i-\sum\limits_{i=1}^{N}\lambda_iy_i\sum\limits_{j=1}^{M}\omega_jx_i^{(j)}+\sum\limits_{i=1}^{N}\lambda_i\\ &=\frac{1}{2}\sum\limits_{j=1}^{M}\omega_j^2-\sum\limits_{i=1}^{N}\lambda_iy_i\sum\limits_{j=1}^{M}\omega_jx_i^{(j)}+\sum\limits_{i=1}^{N}\lambda_i\\ &=\frac{1}{2}\sum\limits_{j=1}^{M}(\sum\limits_{i=1}^{N}\lambda_iy_ix_i^{(j)}\sum\limits_{i^\prime=1}^{N}\lambda_{i^\prime}y_{i^\prime}x_{i^\prime}^{(j)})-\sum\limits_{i=1}^{N}\lambda_iy_i\sum\limits_{j=1}^{M}(\sum\limits_{i^\prime=1}^{N}\lambda_{i^\prime}y_{i^\prime}x_{i^\prime}^{(j)})x_i^{(j)}+\sum\limits_{i=1}^{N}\lambda_i\\ &=-\frac{1}{2}\sum\limits_{j=1}^{M}\sum\limits_{i=1}^{N}\sum\limits_{i^\prime=1}^{N}\lambda_i\lambda_{i^\prime}y_iy_{i^\prime}x_i^{(j)}x_{i^\prime}^{(j)}+\sum\limits_{i=1}^{N}\lambda_i \end{aligned}\tag{16} L(λω0,w)=21w2+i=1Nλi[1(ω0+wTxi)yi]=21j=1Mωj2+i=1Nλii=1Nλiyi(ω0+j=1Mωjxi(j))=21j=1Mωj2ω0i=1Nλiyii=1Nλiyij=1Mωjxi(j)+i=1Nλi=21j=1Mωj2i=1Nλiyij=1Mωjxi(j)+i=1Nλi=21j=1M(i=1Nλiyixi(j)i=1Nλiyixi(j))i=1Nλiyij=1M(i=1Nλiyixi(j))xi(j)+i=1Nλi=21j=1Mi=1Ni=1Nλiλiyiyixi(j)xi(j)+i=1Nλi(16)

  • 求解 max ⁡ λ L ( λ ∣ ω 0 ⋆ , w ⋆ ) \max\nolimits_{\lambda}\quad L(\lambda\mid \omega_0^\star,\mathrm w^\star) maxλL(λω0,w)
    在求得参数 w ⋆ \mathrm w^\star w后,我们需要求解如下问题:
    max ⁡ λ L ( λ ∣ ω 0 ⋆ , w ⋆ ) s . t . ∑ i = 1 N λ i y i = 0 , λ i ≥ = 0 , i = 1 , 2 , ⋯   , N (17) \begin{aligned} &\max\limits_{\lambda}\quad L(\lambda\mid\omega_0^\star,\mathrm w^\star)\\ &s.t.\quad \sum\limits_{i=1}^{N}\lambda_iy_i=0,\lambda_i\ge=0,i=1,2,\cdots,N \end{aligned}\tag{17} λmaxL(λω0,w)s.t.i=1Nλiyi=0,λi=0,i=1,2,,N(17)
    由公式(14)和(16)可以等效成如下问题:

min ⁡ λ 1 2 ∑ j = 1 M ∑ i = 1 N ∑ i ′ = 1 N λ i λ i ′ y i y i ′ x i ( j ) x i ′ ( j ) − ∑ i = 1 N λ i s . t . ∑ i = 1 N λ i y i = 0 , λ i ≥ = 0 , i = 1 , 2 , ⋯   , N (18) \begin{aligned} &\min\limits_{\lambda}\quad \frac{1}{2}\sum\limits_{j=1}^{M}\sum\limits_{i=1}^{N}\sum\limits_{i^\prime=1}^{N}\lambda_i\lambda_{i^\prime}y_iy_{i^\prime}x_i^{(j)}x_{i^\prime}^{(j)}-\sum\limits_{i=1}^{N}\lambda_i\\ &s.t.\quad \sum\limits_{i=1}^{N}\lambda_iy_i=0,\lambda_i\ge=0,i=1,2,\cdots,N \end{aligned}\tag{18} λmin21j=1Mi=1Ni=1Nλiλiyiyixi(j)xi(j)i=1Nλis.t.i=1Nλiyi=0,λi=0,i=1,2,,N(18)

将问题(18)向量化可得:
min ⁡ λ 1 2 ∑ i = 1 N ∑ i ′ = 1 N λ i λ i ′ y i y i ′ x i T x i ′ − ∑ i = 1 N λ i s . t . ∑ i = 1 N λ i y i = 0 , λ i ≥ = 0 , i = 1 , 2 , ⋯   , N (19) \begin{aligned} &\min\limits_{\lambda}\quad \frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{i^\prime=1}^{N}\lambda_i\lambda_{i^\prime}y_iy_{i^\prime}\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime}-\sum\limits_{i=1}^{N}\lambda_i\\ &s.t.\quad \sum\limits_{i=1}^{N}\lambda_iy_i=0,\lambda_i\ge=0,i=1,2,\cdots,N \end{aligned}\tag{19} λmin21i=1Ni=1NλiλiyiyixiTxii=1Nλis.t.i=1Nλiyi=0,λi=0,i=1,2,,N(19)


最终,我们需要求解问题(19),当然由于问题(19)也是一个凸二次函数,我们同样可以利用工具箱求解,在此省略。求解问题(19)得到最优的 λ \lambda λ后,我们将(14)带入超平面的表达式(8)中得到:
y ^ = ω 0 + w T x = ω 0 + ∑ j = 1 M ω j x ( j ) = ω 0 + ∑ j = 1 M ∑ i = 1 N λ i y i x i ( j ) x ( j ) = ω 0 + ∑ i = 1 N λ i y i ∑ j = 1 M x i ( j ) x ( j ) (20) \hat y=\omega_0+\mathrm w^{\mathrm T}\mathrm x=\omega_0+\sum\limits_{j=1}^{M}\omega_jx^{(j)}=\omega_0+\sum\limits_{j=1}^{M}\sum\limits_{i=1}^{N}\lambda_iy_ix_i^{(j)}x^{(j)}=\omega_0+\sum\limits_{i=1}^{N}\lambda_iy_i\sum\limits_{j=1}^{M}x_i^{(j)}x^{(j)}\tag{20} y^=ω0+wTx=ω0+j=1Mωjx(j)=ω0+j=1Mi=1Nλiyixi(j)x(j)=ω0+i=1Nλiyij=1Mxi(j)x(j)(20)
当对一个新的测试样例 x \mathrm x x 进行分类时,可以由上式可以判断:当 y ^ ≥ 1 \hat y\ge1 y^1 时,判断为正例;当 y ^ ≤ − 1 \hat y\le -1 y^1 时, 判断为反例。当然,上述问题在于 ω 0 \omega_0 ω0 的值还无法得知。为此,我们可利用KKT条件(这里不具体描述,有需要会后续单独介绍)可得:
原 问 题 的 约 束 条 件 : ( ω 0 + w T x i ) y i ≥ 1 ∀ i = 1 , 2 , ⋯   , N (21) 原问题的约束条件:(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i\ge1\quad\forall i=1,2,\cdots,N\tag{21} (ω0+wTxi)yi1i=1,2,,N(21)

对 偶 问 题 的 约 束 条 件 : λ i ≥ = 0 , ∀ i = 1 , 2 , ⋯   , N (22) 对偶问题的约束条件:\lambda_i\ge=0, \forall i=1,2,\cdots,N\tag{22} λi=0,i=1,2,,N(22)

互 补 松 弛 条 件 : λ i [ y i ( ω 0 + w T x i ) − 1 ] = 0 ∀ i = 1 , 2 , ⋯   , N (23) 互补松弛条件:\lambda_i[y_i(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)-1]= 0\quad\forall i=1,2,\cdots,N\tag{23} λi[yi(ω0+wTxi)1]=0i=1,2,,N(23)

由互补松弛条件(23)可知,要么 λ i = 0 \lambda_i=0 λi=0,要么 y i ( ω 0 + w T x i ) − 1 y_i(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)-1 yi(ω0+wTxi)1。从分类超平面的表达式(20)可知,只有当 λ i > 0 \lambda_i>0 λi>0时,才对分类结果 y ^ \hat y y^ 有影响,此时的样例点 x i \mathrm x_i xi 才对决定了分类超平面的表达式,这样的样例点就是我们所说的支持向量。当 λ i > 0 \lambda_i>0 λi>0时, 由(23)知 y i ( ω 0 + w T x i ) − 1 = 0 y_i(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)-1=0 yi(ω0+wTxi)1=0,也就是对应了图3所示的支持向量所在的超平面。那么这时,由 y i ( ω 0 + w T x i ) − 1 = 0 y_i(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)-1=0 yi(ω0+wTxi)1=0 我们就有
ω 0 = 1 y i − w T x i (24) \omega_0=\frac{1}{y_i}-\mathrm w^{\mathrm T}\mathrm x_i\tag{24} ω0=yi1wTxi(24)


下面我们同样通过上述的小例子来验证对偶算法的可行性:

根据对偶问题的形式(18)或(19),小例子对应的对偶问题可以写成:
min ⁡ λ 1 , λ 2 , λ 3 L ( λ 1 , λ 2 , λ 3 ) = 1 2 ∑ j = 1 2 ∑ i = 1 3 ∑ i ′ = 1 3 λ i λ i ′ y i y i ′ x i ( j ) x i ′ ( j ) − ∑ i = 1 3 λ i = 1 2 ( 18 λ 1 2 + 25 λ 2 2 + 2 λ 3 2 + 42 λ 1 λ 2 − 12 λ 1 λ 3 − 14 λ 2 λ 3 ) − λ 1 − λ 2 − λ 3 s . t . λ 1 + λ 2 − λ 3 = 0 , λ 1 , λ 2 , λ 3 ≥ 0. (25) \begin{aligned} &\min\limits_{\lambda_1,\lambda_2,\lambda_3}&&\quad L(\lambda_1,\lambda_2,\lambda_3)=\frac{1}{2}\sum\limits_{j=1}^{2}\sum\limits_{i=1}^{3}\sum\limits_{i^\prime=1}^{3}\lambda_i\lambda_{i^\prime}y_iy_{i^\prime}x_i^{(j)}x_{i^\prime}^{(j)}-\sum\limits_{i=1}^{3}\lambda_i\\ &&&\quad=\frac{1}{2}(18\lambda_1^2+25\lambda_2^2+2\lambda_3^2+42\lambda_1\lambda_2-12\lambda_1\lambda_3-14\lambda_2\lambda_3)-\lambda_1-\lambda_2-\lambda_3\\ &s.t.&&\quad \lambda_1+\lambda_2-\lambda_3=0,\lambda_1,\lambda_2,\lambda_3\ge0. \end{aligned}\tag{25} λ1,λ2,λ3mins.t.L(λ1,λ2,λ3)=21j=12i=13i=13λiλiyiyixi(j)xi(j)i=13λi=21(18λ12+25λ22+2λ32+42λ1λ212λ1λ314λ2λ3)λ1λ2λ3λ1+λ2λ3=0,λ1,λ2,λ30.(25)
为了求解问题(25),我们替换变量 λ 3 = λ 1 + λ 2 \lambda_3=\lambda_1+\lambda_2 λ3=λ1+λ2可得
L ( λ 1 , λ 2 ) = 4 λ 1 2 + 13 2 λ 2 2 + 10 λ 1 λ 2 − 2 λ 1 − 2 λ 2 (26) L(\lambda_1,\lambda_2)=4\lambda_1^2+\frac{13}{2}\lambda_2^2+10\lambda_1\lambda_2-2\lambda_1-2\lambda_2\tag{26} L(λ1,λ2)=4λ12+213λ22+10λ1λ22λ12λ2(26)
L ( λ 1 , λ 2 ) L(\lambda_1,\lambda_2) L(λ1,λ2) 对于 λ 1 , λ 2 \lambda_1,\lambda_2 λ1,λ2 的偏导为0,可知最优的解为 λ 1 ⋆ = 3 2 , λ 2 ⋆ = − 1 \lambda_1^\star=\frac{3}{2},\lambda_2^\star=-1 λ1=23,λ2=1,不满足 λ 2 ≥ 0 \lambda_2\ge 0 λ20。为此,最优解在边界处取得。若 λ 1 ⋆ = 0 \lambda_1^\star=0 λ1=0,此时 λ 2 ⋆ = 2 13 \lambda_2^\star=\frac{2}{13} λ2=132,最优值为 L ( λ 1 ⋆ , λ 2 ⋆ ) = − 2 13 L(\lambda_1^\star,\lambda_2^\star)=-\frac{2}{13} L(λ1,λ2)=132。若 λ 2 ⋆ = 0 \lambda_2^\star=0 λ2=0,此时 λ 1 ⋆ = 1 4 \lambda_1^\star=\frac{1}{4} λ1=41,最优值为 L ( λ 1 ⋆ , λ 2 ⋆ ) = − 1 4 L(\lambda_1^\star,\lambda_2^\star)=-\frac{1}{4} L(λ1,λ2)=41。所以,最终得到的最优解为 λ 1 ⋆ = 1 4 , λ 2 ⋆ = 0 , λ 3 ⋆ = 1 4 \lambda_1^\star=\frac{1}{4},\lambda_2^\star=0,\lambda_3^\star=\frac{1}{4} λ1=41,λ2=0,λ3=41

在得到最优解 λ ⋆ = { λ 1 ⋆ , λ 2 ⋆ , λ 3 ⋆ } \lambda^\star=\{\lambda_1^\star,\lambda_2^\star,\lambda_3^\star\} λ={λ1,λ2,λ3}后,我们可以根据等式(14)求得 ω 1 = ω 2 = 1 2 \omega_1=\omega_2=\frac{1}{2} ω1=ω2=21。又由于 x 1 , x 3 \mathrm x_1,\mathrm x_3 x1,x3为支持向量,由公式(25)我们有:
( ω 0 + ω 1 x 1 ( 1 ) + ω 2 x 1 ( 2 ) ) y 1 = 1 (27) (\omega_0+\omega_1x_1^{(1)}+\omega_2x_1^{(2)})y_1=1\tag{27} (ω0+ω1x1(1)+ω2x1(2))y1=1(27)

( ω 0 + ω 1 x 2 ( 1 ) + ω 2 x 2 ( 2 ) ) y 2 = 1 (28) (\omega_0+\omega_1x_2^{(1)}+\omega_2x_2^{(2)})y_2=1\tag{28} (ω0+ω1x2(1)+ω2x2(2))y2=1(28)

由(27)或者(28)我们可以得到 ω 0 ⋆ = − 2 \omega_0^\star=-2 ω0=2。那么我们求得的最优分类超平面为直线 1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 1 \frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2=1 21x(1)+21x(2)2=1


我们发现,最后需要求解的对偶问题为(19),也是一个凸二次优化问题。一般来说,二次优化问题的算法复杂度为 O ( K ) \mathcal O(K) O(K),其中 K K K为变量的个数。在原始问题(10)中,变量为 ω 0 , w \omega_0,\mathrm w ω0,w,个数为 M + 1 M+1 M+1;在对偶问题(19)中,变量为 λ \lambda λ,个数为 N N N。注意:这里的 M , N M,N M,N分别为特征维数和样例个数。一般情况下,样例数大于特征维数,即( N > M N>M N>M),此时好像更应该直接求解原始问题来降低复杂度。但是由于对偶问题的特性比较适合核函数的使用,我们更倾向于求解对偶问题。


核函数

在上述模型中,我们假设训练集是线性可分的。但一般情况下,原始的特征空间是线性不可分的,如下面的两个例子:

  • 异或问题:假设我们考虑2个特征 x ( 1 ) , x ( 2 ) x^{(1)},x^{(2)} x(1),x(2),训练集中有两个正例 x 1 ( 0 , 1 ) , x 2 ( 1 , 0 ) \mathrm x_1 (0,1), \mathrm x_2 (1,0) x1(0,1),x2(1,0) 和两个反例 x 3 ( 0 , 0 ) , x 4 ( 1 , 1 ) \mathrm x_3 (0,0), \mathrm x_4 (1,1) x3(0,0),x4(1,1),如图4所示。显然,我们无法在该二维空间中找到一条直线将训练集正确分类。如果我们将这两个特征 x ( 1 ) , x ( 2 ) x^{(1)},x^{(2)} x(1),x(2)映射到三维空间的三个特征 z ( 1 ) , z ( 2 ) , z ( 3 ) z^{(1)},z^{(2)},z^{(3)} z(1),z(2),z(3), 且映射关系为: z ( 1 ) = x ( 1 ) x ( 2 ) , z ( 2 ) = x ( 1 ) , z ( 3 ) = x ( 2 ) z^{(1)}=x^{(1)}x^{(2)}, z^{(2)}=x^{(1)}, z^{(3)}=x^{(2)} z(1)=x(1)x(2),z(2)=x(1),z(3)=x(2)。那么此时训练样例坐标为: x 1 ( 0 , 0 , 1 ) , x 2 ( 0 , 1 , 0 ) , x 3 ( 0 , 0 , 0 ) , x 4 ( 1 , 1 , 1 ) \mathrm x_1 (0,0,1), \mathrm x_2 (0,1,0), \mathrm x_3 (0,0,0), \mathrm x_4 (1,1,1) x1(0,0,1),x2(0,1,0),x3(0,0,0),x4(1,1,1),如图5所示。显然,我们可以找到一个分类超平面将该训练集正确分类。

    图4
    图5
  • 圆环问题:假设我们考虑2个特征 x = { x ( 1 ) , x ( 2 ) } \mathrm x=\{x^{(1)}, x^{(2)}\} x={x(1),x(2)},训练集由两个通过原点的同心圆 ∣ x ∣ 2 = C \lvert \mathrm x\rvert^2=C x2=C 产生正例 ( C = 3 C=3 C=3) 和反例 ( C = 1 C=1 C=1),如图6所示。显然,我们无法在该二维空间中找到一条直线将训练集正确分类,此时的最佳分类超平面应该是一个圆环 ∣ x ∣ 2 = 2 \lvert \mathrm x\rvert^2=2 x2=2 。此时,若我们将这两个特征映射成两个新的特征 z ( 1 ) , z ( 2 ) z^{(1)},z^{(2)} z(1),z(2),且映射关系为 z ( 1 ) = [ x ( 1 ) ] 2 , z ( 2 ) = [ x ( 2 ) ] 2 z^{(1)}=[x^{(1)}]^2,z^{(2)}=[x^{(2)}]^2 z(1)=[x(1)]2,z(2)=[x(2)]2,那么此时对应的最优分类超平面为直线 z ( 1 ) + z ( 2 ) = 2 z^{(1)}+z^{(2)}=2 z(1)+z(2)=2,如图7所示。

    图6
    图7

上面的两个例子说明,当原始的特征空间线性不可分时,我们可以将原始特征空间映射为新的特征空间,使其线性可分。这里,我们将上述的映射关系用数学表达式定义为
z = ϕ ( x ) (29) \mathrm z=\phi(\mathrm x)\tag{29} z=ϕ(x)(29)
那么此时,经过特征映射后,优化问题(19)转化为:
min ⁡ λ 1 2 ∑ i = 1 N ∑ i ′ = 1 N λ i λ i ′ y i y i ′ ϕ ( x i ) T ϕ ( x i ′ ) − ∑ i = 1 N λ i s . t . ∑ i = 1 N λ i y i = 0 , λ i ≥ = 0 , i = 1 , 2 , ⋯   , N (30) \begin{aligned} &\min\limits_{\lambda}\quad \frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{i^\prime=1}^{N}\lambda_i\lambda_{i^\prime}y_iy_{i^\prime}\phi(\mathrm x_i)^{\mathrm T}\phi(\mathrm x_{i^\prime})-\sum\limits_{i=1}^{N}\lambda_i\\ &s.t.\quad \sum\limits_{i=1}^{N}\lambda_iy_i=0,\lambda_i\ge=0,i=1,2,\cdots,N \end{aligned}\tag{30} λmin21i=1Ni=1Nλiλiyiyiϕ(xi)Tϕ(xi)i=1Nλis.t.i=1Nλiyi=0,λi=0,i=1,2,,N(30)
为简便起见,我们定义
k ( x i , x i ′ ) = ϕ ( x i ) T ϕ ( x i ′ ) (31) \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=\phi(\mathrm x_i)^{\mathrm T}\phi(\mathrm x_{i^\prime})\tag{31} k(xi,xi)=ϕ(xi)Tϕ(xi)(31)
公式(31)就是我们提到的核函数

那么这里难点在于如何找到好的映射函数和核函数,也就是公式(31)的表达式?对于上面的例子,由于十分简单,我们可以很容易的定义映射函数。然而,对于实际中比较复杂的训练集,我们一般采用下面几种比较常见的核函数:

名称表达式名称表达式
线性核 k ( x i , x i ′ ) = x i T x i ′ \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime} k(xi,xi)=xiTxi高斯核 k ( x i , x i ′ ) = exp ⁡ ( − ∣ x i − x i ′ ∣ 2 2 σ 2 ) \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=\exp(-\frac{\lvert\mathrm x_i-\mathrm x_{i^\prime}\rvert^2}{2\sigma^2}) k(xi,xi)=exp(2σ2xixi2)
多项式核 k ( x i , x i ′ ) = ( a x i T x i ′ + b ) c \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=(a\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime}+b)^c k(xi,xi)=(axiTxi+b)c指数核 k ( x i , x i ′ ) = exp ⁡ ( − ∣ x i − x i ′ ∣ 2 σ 2 ) \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=\exp(-\frac{\lvert\mathrm x_i-\mathrm x_{i^\prime}\rvert}{2\sigma^2}) k(xi,xi)=exp(2σ2xixi)
Sigmoid核 k ( x i , x i ′ ) = tanh ⁡ ( a x i T x i ′ + b ) \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=\tanh(a\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime}+b) k(xi,xi)=tanh(axiTxi+b)拉普拉斯核 k ( x i , x i ′ ) = exp ⁡ ( − ∣ x i − x i ′ ∣ σ ) \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=\exp(-\frac{\lvert\mathrm x_i-\mathrm x_{i^\prime}\rvert}{\sigma}) k(xi,xi)=exp(σxixi)

下面我们以一个具体的多项式核 k ( x i , x i ′ ) = ( x i T x i ′ + 1 ) 2 \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=(\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime}+1)^2 k(xi,xi)=(xiTxi+1)2 来说明核函数的好处。这里我们考虑原始特征空间为二维,即 x = { x ( 1 ) , x ( 2 ) } \mathrm x=\{x^{(1)},x^{(2)}\} x={x(1),x(2)}。那么此时核函数可以表示为:
k ( x i , x i ′ ) = ( x i T x i ′ + 1 ) 2 = ( 1 + x i ( 1 ) x i ′ ( 1 ) + x i ( 2 ) x i ′ ( 2 ) ) 2 = 1 + 2 x i ( 1 ) x i ′ ( 1 ) + 2 x i ( 2 ) x i ′ ( 2 ) + [ x i ( 1 ) x i ′ ( 1 ) ] 2 + 2 x i ( 1 ) x i ′ ( 1 ) x i ( 2 ) x i ′ ( 2 ) + [ x i ( 2 ) x i ′ ( 2 ) ] 2 = [ 1 , 2 x i ( 1 ) , 2 x i ( 2 ) , [ x i ( 1 ) ] 2 , 2 x i ( 1 ) x i ( 2 ) , [ x i ( 2 ) ] 2 ] [ 1 , 2 x i ′ ( 1 ) , 2 x i ′ ( 2 ) , [ x i ′ ( 1 ) ] 2 , 2 x i ′ ( 1 ) x i ′ ( 2 ) , [ x i ′ ( 2 ) ] 2 ] T = ϕ ( x i ) T ϕ ( x i ′ ) (32) \begin{aligned} \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})&=(\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime}+1)^2\\ &=(1+x_i^{(1)}x_{i^\prime}^{(1)}+x_i^{(2)}x_{i^\prime}^{(2)})^2\\ &=1+2\mathrm x_{i}^{(1)}\mathrm x_{i^\prime}^{(1)}+2\mathrm x_{i}^{(2)}\mathrm x_{i^\prime}^{(2)}+[\mathrm x_{i}^{(1)}\mathrm x_{i^\prime}^{(1)}]^2+2\mathrm x_{i}^{(1)}\mathrm x_{i^\prime}^{(1)}\mathrm x_{i}^{(2)}\mathrm x_{i^\prime}^{(2)}+[\mathrm x_{i}^{(2)}\mathrm x_{i^\prime}^{(2)}]^2\\ &=[1,\sqrt{2}\mathrm x_{i}^{(1)},\sqrt{2}\mathrm x_{i}^{(2)},[\mathrm x_{i}^{(1)}]^2,\sqrt{2}\mathrm x_{i}^{(1)}\mathrm x_{i}^{(2)},[\mathrm x_{i}^{(2)}]^2][1,\sqrt{2}\mathrm x_{i^\prime}^{(1)},\sqrt{2}\mathrm x_{i^\prime}^{(2)},[\mathrm x_{i^\prime}^{(1)}]^2,\sqrt{2}\mathrm x_{i^\prime}^{(1)}\mathrm x_{i^\prime}^{(2)},[\mathrm x_{i^\prime}^{(2)}]^2]^{\mathrm T}\\ &=\phi(\mathrm x_i)^{\mathrm T}\phi(\mathrm x_{i^\prime}) \end{aligned}\tag{32} k(xi,xi)=(xiTxi+1)2=(1+xi(1)xi(1)+xi(2)xi(2))2=1+2xi(1)xi(1)+2xi(2)xi(2)+[xi(1)xi(1)]2+2xi(1)xi(1)xi(2)xi(2)+[xi(2)xi(2)]2=[1,2 xi(1),2 xi(2),[xi(1)]2,2 xi(1)xi(2),[xi(2)]2][1,2 xi(1),2 xi(2),[xi(1)]2,2 xi(1)xi(2),[xi(2)]2]T=ϕ(xi)Tϕ(xi)(32)
从公式(31)可以看出我们把原始二维特征空间映射到了六维特征空间。最终计算 ϕ ( x i ) T ϕ ( x i ′ ) \phi(\mathrm x_i)^{\mathrm T}\phi(\mathrm x_{i^\prime}) ϕ(xi)Tϕ(xi)是两个六维空间向量的内积,需要6次加法和6次乘法。然而,我们可以直接通过核函数 k ( x i , x i ′ ) = ( x i T x i ′ + 1 ) 2 \mathcal k(\mathrm x_i,\mathrm x_{i^\prime})=(\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime}+1)^2 k(xi,xi)=(xiTxi+1)2 计算 ϕ ( x i ) T ϕ ( x i ′ ) \phi(\mathrm x_i)^{\mathrm T}\phi(\mathrm x_{i^\prime}) ϕ(xi)Tϕ(xi),此时只需要进行二维空间的内积,总共需要3次加法和3次乘法。也就是说,通过核函数,我们可以直接在原始特征空间计算结果,从而避免在映射后的高维特征空间中计算内积。


线性不可分SVM

最基本的SVM模型可以对原始特征空间线性可分的训练集进行正确分类,如我们开头提到的小例子。利用核函数,我们可以对于原始特征空间,线性不可分,而在映射的特征空间线性可分的训练集进行正确分类,如图4-7提到的例子。然而我们还会遇到原始特征空间线性不可分,映射后的特征空间也线性不可分,或者说我们找不到一个好的核函数使新的特征空间线性可分的情况。下面这部分内容就是考虑线性不可分的情况。

对于线性不可分的情况,一个比较基本的方式,就是不一定需要所有的训练样例都正确分类,我们可以容忍部分样例被错误分类。如图8所示:

图8

在图8中,我们假定分类超平面和支持向量和图3一样,即分类超平面为绿色直线 y ^ = ω 0 + w T x = 1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 0 \hat y=\omega_0+\mathrm w^{\mathrm T}\mathrm x=\frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2=0 y^=ω0+wTx=21x(1)+21x(2)2=0 ,支持向量为 x 1 , x 3 \mathrm x_1, \mathrm x_3 x1,x3 。样例点 x 6 , x 10 , x 11 , x 12 \mathrm x_6,\mathrm x_{10},\mathrm x_{11},\mathrm x_{12} x6,x10,x11,x12 位于直线 y ^ = + 1 , − 1 \hat y=+1,-1 y^=+1,1 之间,即不满足我们前面提到的正确分类需要满足(10)中的约束, 其中,样例点 x 6 , x 12 \mathrm x_6,\mathrm x_{12} x6,x12 被错误分类。

为了解决这一问题,我们可以为每一个样例点 x i \mathrm x_i xi 引入一个松弛变量 ξ i ≥ 0 \xi_i\ge 0 ξi0 :
ξ i = ∣ y i − ( ω 0 + w T x ) ∣ (33) \xi_i=\lvert y_i-(\omega_0+\mathrm w^{\mathrm T}\mathrm x)\rvert\tag{33} ξi=yi(ω0+wTx)(33)
根据公式(33)我们可知:

  • 位于 y ^ = + 1 , − 1 \hat y=+1,-1 y^=+1,1 之外的样例点 x i , i = 2 , 4 , 5 , 7 , 8 , 9 \mathrm x_i,i=2,4,5,7,8,9 xi,i=2,4,5,7,8,9 对应的松弛变量 ξ i = 0 , i = 2 , 4 , 5 , 7 , 8 , 9 \xi_i=0,i=2,4,5,7,8,9 ξi=0,i=2,4,5,7,8,9
  • 位于 y ^ = + 1 , − 1 \hat y=+1,-1 y^=+1,1 之上的样例点 (支持向量) x i , i = 1 , 3 \mathrm x_i,i=1,3 xi,i=1,3 对应的松弛变量 ξ i = 0 , i = 1 , 3 \xi_i=0,i=1,3 ξi=0,i=1,3
  • 位于 y ^ = + 1 , − 1 \hat y=+1,-1 y^=+1,1 之内的样例点 x i , i = 6 , 10 , 11 , 12 \mathrm x_i,i=6,10,11,12 xi,i=6,10,11,12
    • 若其能正确分类,其对应的松弛变量 0 < ξ i < 1 , i = 11 , 12 0<\xi_i<1,i=11,12 0<ξi<1,i=11,12
    • 若其被错误分类,其对应的松弛变量 ξ i > 1 , i = 6 , 10 \xi_i>1,i=6,10 ξi>1,i=6,10

此时问题(10)中的约束可变为:
( ω 0 + w T x i ) y i ≥ 1 − ξ i (34) (\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i\ge1-\xi_i\tag{34} (ω0+wTxi)yi1ξi(34)
由公式(34)可以看出,当样例 x i \mathrm x_i xi 被错误分类时,即 ( ω 0 + w T x i ) y i ≤ 0 (\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i\le 0 (ω0+wTxi)yi0 ,此时对应的松弛变量为 ξ i > 1 \xi_i>1 ξi>1 。所以,松弛变量 ξ i \xi_i ξi的引入是为了让所有的样例点都满足约束,使得带松弛的优化问题有解。但是,引入松弛变量容许样例点被错误分类,这并不是我们想要的结果。为此,我们需要在原问题(10)的目标(最大化间隔)基础上,考虑最小化错误分类带来的影响。这里我们一般最直观地,直接地使用 ξ i \xi_i ξi作为引入松弛变量 ξ i \xi_i ξi 带来的误差。因此,在原问题(10)的基础上我们有:
min ⁡ ω 0 , w , ξ i 1 2 ∣ w ∣ 2 + C ∑ i = 1 N ξ i s . t . ( ω 0 + w T x i ) y i ≥ 1 − ξ i ∀ i = 1 , 2 , ⋯   , N ξ i > 0 ∀ i = 1 , 2 , ⋯   , N (35) \begin{aligned} &\min\limits_{\omega_0,\mathrm w, \xi_i}\quad\frac{1}{2}\lvert\mathrm w\rvert^2+C\sum\limits_{i=1}^{N}\xi_i\\ &s.t.\quad (\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i\ge1-\xi_i\quad\forall i=1,2,\cdots,N\\ &\quad\quad\quad\xi_i>0\quad\forall i=1,2,\cdots,N \end{aligned}\tag{35} ω0,w,ξimin21w2+Ci=1Nξis.t.(ω0+wTxi)yi1ξii=1,2,,Nξi>0i=1,2,,N(35)
在优化问题(35)中, C > 0 C>0 C>0 是一个权重因子,用于平衡最大化间隔和最小化训练误差(即样例点被错误分类)。当 C → ∞ C\to\infin C 时,相当于我们十分在乎训练误差,不容许训练样例被错误分类,此时所有的 ξ i = 0 \xi_i=0 ξi=0。此时,问题(35)退化为问题(10)。


求解带松弛变量的优化问题

问题(35)也是一个凸二次优化问题,所以可以完全按照前面求解问题(10)的方式求解,在此我们只给出解析表达式。同样利用拉格朗日乘子法得到拉格朗日函数并对变量求偏导,令偏导为0,我们有:
ω j ⋆ = ∑ i = 1 N λ i y i x i ( j ) (36) \omega_j^\star=\sum\limits_{i=1}^{N}\lambda_iy_ix_i^{(j)}\tag{36} ωj=i=1Nλiyixi(j)(36)

∑ i = 1 N λ i y i = 0 (37) \sum\limits_{i=1}^{N}\lambda_iy_i=0\tag{37} i=1Nλiyi=0(37)

C = λ i + μ i (38) C=\lambda_i+\mu_i\tag{38} C=λi+μi(38)

在公式(38)中, λ i , μ i \lambda_i,\mu_i λi,μi 分别为(35)中约束对应的拉格朗日乘子。将公式(36), (37)和 (38)带入问题 (35),我们有如下的对偶问题:
min ⁡ λ 1 2 ∑ i = 1 N ∑ i ′ = 1 N λ i λ i ′ y i y i ′ x i T x i ′ − ∑ i = 1 N λ i s . t . ∑ i = 1 N λ i y i = 0 , 0 ≤ λ i ≤ C , i = 1 , 2 , ⋯   , N (39) \begin{aligned} &\min\limits_{\lambda}\quad \frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{i^\prime=1}^{N}\lambda_i\lambda_{i^\prime}y_iy_{i^\prime}\mathrm x_i^{\mathrm T}\mathrm x_{i^\prime}-\sum\limits_{i=1}^{N}\lambda_i\\ &s.t.\quad \sum\limits_{i=1}^{N}\lambda_iy_i=0,0\le\lambda_i\le C,i=1,2,\cdots,N \end{aligned}\tag{39} λmin21i=1Ni=1NλiλiyiyixiTxii=1Nλis.t.i=1Nλiyi=0,0λiC,i=1,2,,N(39)
对比线性可分原问题(10)的对偶问题(19),这里的对偶问题(39)唯一的差别就是添加了约束 λ i ≤ C \lambda_i\le C λiC。因此,问题(19)的解法与问题(39)的解法基本一致,并且前面所讲的核函数方法也同样适用。

求解问题(39)得到最优的 λ \lambda λ后,我们将(36)带入超平面的表达式(8)中得到:
y ^ = ω 0 + w T x = ω 0 + ∑ j = 1 M ω j x ( j ) = ω 0 + ∑ j = 1 M ∑ i = 1 N λ i y i x i ( j ) x ( j ) = ω 0 + ∑ i = 1 N λ i y i ∑ j = 1 M x i ( j ) x ( j ) (40) \hat y=\omega_0+\mathrm w^{\mathrm T}\mathrm x=\omega_0+\sum\limits_{j=1}^{M}\omega_jx^{(j)}=\omega_0+\sum\limits_{j=1}^{M}\sum\limits_{i=1}^{N}\lambda_iy_ix_i^{(j)}x^{(j)}=\omega_0+\sum\limits_{i=1}^{N}\lambda_iy_i\sum\limits_{j=1}^{M}x_i^{(j)}x^{(j)}\tag{40} y^=ω0+wTx=ω0+j=1Mωjx(j)=ω0+j=1Mi=1Nλiyixi(j)x(j)=ω0+i=1Nλiyij=1Mxi(j)x(j)(40)
当对一个新的测试样例 x \mathrm x x 进行分类时,可以由上式可以判断:当 y ^ ≥ 0 \hat y\ge0 y^0 时,判断为正例;当 y ^ ≤ 0 \hat y\le 0 y^0 时, 判断为反例。当然,上述问题在于 ω 0 \omega_0 ω0 的值还无法得知。为此,我们可利用KKT条件可得:
原 问 题 的 约 束 条 件 : ( ω 0 + w T x i ) y i ≥ 1 − ξ i , ξ i ≥ 0 ∀ i = 1 , 2 , ⋯   , N (41) 原问题的约束条件:(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)y_i\ge1-\xi_i, \xi_i\ge0\quad\forall i=1,2,\cdots,N\tag{41} (ω0+wTxi)yi1ξi,ξi0i=1,2,,N(41)

对 偶 问 题 的 约 束 条 件 : λ i ≥ 0 , μ i ≥ 0 , ∀ i = 1 , 2 , ⋯   , N (42) 对偶问题的约束条件:\lambda_i\ge 0, \mu_i\ge 0, \forall i=1,2,\cdots,N\tag{42} λi0,μi0,i=1,2,,N(42)

互 补 松 弛 条 件 1 : λ i [ y i ( ω 0 + w T x i ) − 1 + ξ i ] = 0 ∀ i = 1 , 2 , ⋯   , N (43) 互补松弛条件1:\lambda_i[y_i(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)-1+\xi_i]= 0\quad\forall i=1,2,\cdots,N\tag{43} 1λi[yi(ω0+wTxi)1+ξi]=0i=1,2,,N(43)

互 补 松 弛 条 件 2 : μ i ξ i = 0 ∀ i = 1 , 2 , ⋯   , N (44) 互补松弛条件2:\mu_i\xi_i= 0\quad\forall i=1,2,\cdots,N\tag{44} 2μiξi=0i=1,2,,N(44)

由互补松弛条件(43)可知,要么 λ i = 0 \lambda_i=0 λi=0,要么 y i ( ω 0 + w T x i ) − 1 + ξ i = 0 y_i(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)-1+\xi_i=0 yi(ω0+wTxi)1+ξi=0 。从分类超平面的表达式(40)可知,只有当 λ i > 0 \lambda_i>0 λi>0时,即 y i ( ω 0 + w T x i ) − 1 + ξ i = 0 y_i(\omega_0+\mathrm w^{\mathrm T}\mathrm x_i)-1+\xi_i=0 yi(ω0+wTxi)1+ξi=0,才对分类结果 y ^ \hat y y^ 有影响,此时的样例点 x i \mathrm x_i xi 才对决定了分类超平面的表达式,这样的样例点就是我们所说的支持向量,在图8中对应的支持向量为 x i , i