Bootstrap

【一起啃书】《机器学习》第六章 支持向量机

第六章 支持向量机

6.1 间隔和支持向量

  给定训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D = \{ ({x_1},{y_1}),({x_2},{y_2}),...,({x_m},{y_m})\} ,{y_i} \in \{ - 1, + 1\} D={(x1,y1),(x2,y2),...,(xm,ym)},yi{1,+1},分类学习最基本的想法就是基于训练集 D D D在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下所示:

  直观上看,应该去找位于两类训练样本“正中间”的划分超平面,该超平面对训练样本局部扰动的“容忍”性最好,也就是该划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。划分超平面的线性方程如下所示:
ω T x + b = 0 {{{\omega }}^T}x + b = 0 ωTx+b=0
  其中 ω = ( ω 1 ; ω 2 ; . . . ; ω d ) \omega = (\omega_1;\omega_2;...;\omega_d) ω=(ω1;ω2;...;ωd)为法向量,决定了超平面的方向; b b b为位移项,决定了超平面与原点之间的距离,下面定义样本空间中任意点 x x x到超平面 ( ω , b ) (\omega,b) (ω,b)的距离,如下所示:
r = ∣ ω T x + b ∣ ∥ ω ∥ r = \frac{{\left| {{\omega ^T}x + b} \right|}}{{\left\| \omega \right\|}} r=ω ωTx+b
  假设超平面 ( ω , b ) (\omega,b) (ω,b)能将训练样本正确分类,有如下定义:
{ ω T x i + b ⩾ + 1 , y i = + 1 ω T x i + b ⩽ − 1 , y i = − 1 \left\{ \begin{aligned} {{\omega ^T}{x_i} + b \geqslant + 1,{y_i} = + 1} \\ {{\omega ^T}{x_i} + b \leqslant - 1,{y_i} = - 1} \\ \end{aligned} \right. {ωTxi+b+1,yi=+1ωTxi+b1,yi=1
  如下图所示,距离超平面最近的这几个训练样本点使上式的等号成立,这些点被称为“支持向量”,两个异类支持向量到超平面的距离之和为 γ = 2 ∥ ω ∥ \gamma = \frac{2}{{\left\| \omega \right\|}} γ=ω2,也被称为“间隔”。

  欲找到具有“最大间隔”的划分超平面,需要找到满足约束条件的参数 ω \omega ω b b b,使得 γ \gamma γ最大,即
max ⁡ ω , b    2 ∥ ω ∥ s . t .     y i ( ω T x i + b ) ⩾ 1 , i = 1 , 2 , . . . , m \begin{aligned} &\mathop {\max }\limits_{\omega ,b}\ \ \frac{2}{{\left\| \omega \right\|}}\\ &s.t.\ \ \ {y_i}({\omega ^T}{x_i} + b) \geqslant 1,i = 1,2,...,m \end{aligned} ω,bmax  ω2s.t.   yi(ωTxi+b)1,i=1,2,...,m
  最大化 ∥ ω ∥ − 1 {\left\| \omega \right\|^{ - 1}} ω1,等价于最小化 ∥ ω ∥ 2 {\left\| \omega \right\|^2} ω2,于是得到如下表达,这也是支持向量机的基本型。
min ⁡ ω , b    1 2 ∥ ω ∥ 2 s . t .     y i ( ω T x i + b ) ⩾ 1 , i = 1 , 2 , . . . , m \begin{aligned} & \mathop {\min }\limits_{\omega ,b}\ \ \frac{1}{2}{\left\| \omega \right\|^2} \\ & s.t.\ \ \ {y_i}({\omega ^T}{x_i} + b) \geqslant 1,i = 1,2,...,m \end{aligned} ω,bmin  21ω2s.t.   yi(ωTxi+b)1,i=1,2,...,m
  虽然间隔看着貌似只与 ω \omega ω有关,但实际上 b b b通过约束隐式地影响着 ω \omega ω的取值,因为这些支持向量是使得等号成立的样本点,所以如果 b b b发生变化,那么 ω \omega ω也会发生变化。

6.2 对偶问题

  SVM基本型的对偶问题是将原始问题的最小化目标函数转换为最大化拉格朗日函数,利用拉格朗日对偶性,求解出拉格朗日乘子,从而得到超平面的参数。首先对原来的约束条件添加拉格朗日乘子 α i ⩾ 0 {\alpha _i} \geqslant 0 αi0,得到如下的拉格朗日函数:
L ( ω , b , α ) = 1 2 ∥ ω ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( ω T x i + b ) ) L(\omega ,b,\alpha ) = \frac{1}{2}{\left\| \omega \right\|^2} + \sum\limits_{i = 1}^m {{\alpha _i}(1 - {y_i}({\omega ^T}{x_i} + b))} L(ω,b,α)=21ω2+i=1mαi(1yi(ωTxi+b))
  下面分别对 ω \omega ω b b b求偏导,得到如下结果:
ω = ∑ i = 1 m α i y i x i     ,      0 = ∑ i = 1 m α i y i \omega = \sum\limits_{i = 1}^m {{\alpha _i}{y_i}{x_i}\ \ \ ,}\ \ \ \ 0 = \sum\limits_{i = 1}^m {{\alpha _i}{y_i}} ω=i=1mαiyixi   ,    0=i=1mαiyi
  将上面求偏导的结果再带入到原来的拉格朗日函数中,就可以得到SVM基本型的对偶问题,如下所示:
max ⁡ α     ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t .      ∑ i = 1 m α i y i = 0 \begin{aligned} & \mathop {\max }\limits_\alpha \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y_i}{y_j}x_i^T{x_j}} } \\ & s.t.\ \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}{y_i} = 0} \end{aligned} αmax   i=1mαi21i=1mj=1mαiαjyiyjxiTxjs.t.    i=1mαiyi=0
  上述问题是一个二次规划问题,但该问题的规模正比于训练样本数,会在实际任务中造成很大的开销,为了避开这个障碍,在这里引入了SMO算法来解决这个问题,SMO算法需要注意以下几点:

  • SMO算法的基本思想是每次选择两个拉格朗日乘子( α i \alpha_i αi α j \alpha_j αj)作为优化变量,固定其他的乘子,将原问题简化进行求解。
  • SMO算法的关键是如何选择合适的 α i \alpha_i αi α j \alpha_j αj,以及如何更新它们的值,一般来说,选择违反KKT条件最严重的 α i \alpha_i αi 作为第一个变量,然后在约束条件下选择第二个变量 α j \alpha_j αj,使得目标函数有足够大的变化。
  • SMO算法的终止条件是所有的拉格朗日乘子都满足KKT条件,或者达到最大迭代次数。
  • SMO算法的优点是可以高效地求解SVM对偶问题,避免了矩阵运算和存储,只需要利用核函数计算样本之间的内积,而缺点是需要调整一些启发式的参数,如容错率和最大迭代次数,以及核函数的选择。
6.3 核函数

  在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面,如下左图所示,对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分,如下右图所示。

  令 ϕ ( x ) \phi (x) ϕ(x)表示将 x x x映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为
f ( x ) = ω T ϕ ( x ) + b f(x) = {\omega ^T}\phi (x) + b f(x)=ωTϕ(x)+b
  以下为其基本型
min ⁡ ω , b    1 2 ∥ ω ∥ 2 s . t .     y i ( ω T ϕ ( x i ) + b ) ⩾ 1 , i = 1 , 2 , . . . , m \begin{aligned} & \mathop {\min }\limits_{\omega ,b}\ \ \frac{1}{2}{\left\| \omega \right\|^2} \\ & s.t.\ \ \ {y_i}({\omega ^T}{\phi(x_i)} + b) \geqslant 1,i = 1,2,...,m \end{aligned} ω,bmin  21ω2s.t.   yi(ωTϕ(xi)+b)1,i=1,2,...,m
  以下为对应的对偶问题
max ⁡ α     ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) s . t .      ∑ i = 1 m α i y i = 0 \begin{aligned} & \mathop {\max }\limits_\alpha \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y_i}{y_j}\phi(x_i)^T{\phi(x_j)}} } \\ & s.t.\ \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}{y_i} = 0} \end{aligned} αmax   i=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)s.t.    i=1mαiyi=0
  求解上述式子涉及到 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj),这是样本 x i x_i xi x j x_j xj映射到特征空间之后的内积。由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)通常是困难的。为了避开这个障碍,可以设想这样一个函数:
κ ( x i , x j ) ⩽ ϕ ( x i ) , ϕ ( x j ) ⩾ ϕ ( x i ) T ϕ ( x j ) \kappa ({x_i},{x_j}) \leqslant \phi ({x_i}),\phi ({x_j}) \geqslant \phi {({x_i})^T}\phi ({x_j}) κ(xi,xj)ϕ(xi),ϕ(xj)ϕ(xi)Tϕ(xj)
  即 x i x_i xi x j x_j xj在特征空间的内积等于它们在原始样本空间中通过函数 κ ( ⋅ , ⋅ ) \kappa ( \cdot , \cdot ) κ(,)计算的结果,于是可以得到如下式子:
max ⁡ α     ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) s . t .      ∑ i = 1 m α i y i = 0 \begin{aligned} & \mathop {\max }\limits_\alpha \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y_i}{y_j}\kappa ({x_i},{x_j})} } \\ & s.t.\ \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}{y_i} = 0} \end{aligned} αmax   i=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj)s.t.    i=1mαiyi=0
  求解后即可得到 f ( x ) = ∑ i = 1 m α i y i κ ( x i , x j ) + b f(x) = \sum\limits_{i = 1}^m {{\alpha _i}{y_i}\kappa ({x_i},{x_j}) + b} f(x)=i=1mαiyiκ(xi,xj)+b,这里的 κ ( x i , x j ) \kappa ({x_i},{x_j}) κ(xi,xj)被称为“核函数”,这一展开式也被称为“支持向量展开”。下面为判断核函数的一个定理。

  以下为常见的核函数。

  对于核函数的选择,可以参考以下规则:

  • 如果数据是线性可分的,或者特征的数量很大,接近于样本的数量,可以选择线性核函数,因为线性核函数参数少,速度快,而且可以得到很好的效果。
  • 如果数据是非线性的,或者特征的数量比较小,而样本的数量一般,可以选择高斯核函数(也叫RBF核函数),因为高斯核函数可以将数据映射到一个无限维的特征空间,具有很强的拟合能力。不过高斯核函数的分类结果非常依赖于参数的选择,需要通过交叉验证等方法来寻找合适的参数。
  • 如果数据是非线性的,而且有明显的结构特征,例如图像、文本等,可以选择与数据结构相匹配的核函数,例如多项式核函数、字符串核函数、图核函数等。这些核函数可以利用数据的先验知识,提取更有效的特征,提高分类或回归的准确性。
6.4 软间隔与正则化

  在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分,即便恰好找到了某个核函数使训练集在特征空间中线性可分,也很难断定这个貌似线性可分的结果不是由于过拟合所造成的,缓解这个问题的一个办法是允许支持向量机在一些样本上出错,如下为软间隔示例图,红色圈出了一些不满足约束的样本。

  若要求所有样本都必须划分正确,这称为“硬间隔”,而软间隔则是允许某些样本不满足约束 y i ( ω T x i + b ) ⩾ 1 {y_i}({\omega ^T}{x_i} + b) \geqslant 1 yi(ωTxi+b)1,而在最大化间隔的同时,不满足约束的样本应尽可能少,于是就有了如下优化目标:
min ⁡ ω , b 1 2 ∥ ω ∥ 2 + C ∑ i = 1 m ℓ 0 / 1 ( y i ( ω T x i + b ) − 1 ) \mathop {\min }\limits_{\omega ,b} \frac{1}{2}{\left\| \omega \right\|^2} + C\sum\limits_{i = 1}^m {{\ell _{0/1}}({y_i}({\omega ^T}{x_i} + b) - 1)} ω,bmin21ω2+Ci=1m0/1(yi(ωTxi+b)1)
  其中类似 ℓ 0 / 1 \ell _{0/1} 0/1的函数被称为“替代损失”,常见的替代函数以及它们的图像如下所示:

  下面引入松弛变量 ξ i ⩾ 0 {\xi _i} \geqslant 0 ξi0,即可得到如下的软间隔支持向量机:
min ⁡ ω , b , ξ     1 2 ∥ ω ∥ 2 + C ∑ i = 1 m ξ i s . t .      y i ( ω T x i + b ) ⩾ 1 − ξ i \begin{aligned} & \mathop {\min }\limits_{\omega ,b,\xi }\ \ \ \frac{1}{2}{\left\| \omega \right\|^2} + C\sum\limits_{i = 1}^m {{\xi _i}} \\ & s.t.\ \ \ \ {y_i}({\omega ^T}{x_i} + b) \geqslant 1 - {\xi _i} \end{aligned} ω,b,ξmin   21ω2+Ci=1mξis.t.    yi(ωTxi+b)1ξi
  松弛变量 ξ i \xi _i ξi表示第 i i i个样本违反约束条件的程度, C C C是一个正的常数,表示对松弛变量的惩罚系数。可以看到,当 C C C很大时,相当于对松弛变量的惩罚很大,要求所有样本都满足约束条件,这就退化为硬间隔的情况;当 C C C很小时,相当于对松弛变量的惩罚很小,允许一些样本不满足约束条件,这就增加了模型的泛化能力。因此, C C C的大小决定了svm对分类错误的容忍程度和模型的复杂度。

  而这里需要注意, C C C比较大会增加松弛变量的值,是因为要最小化整个目标函数,而不是只最小化间隔。目标函数由两部分组成,一部分是 1 2 ∥ ω ∥ 2 \frac{1}{2}{\left\| \omega \right\|^2} 21ω2,表示间隔的倒数;另一部分是 C ∑ i = 1 n ξ i C \sum_{i=1}^n \xi_i Ci=1nξi,表示对松弛变量的惩罚。当 C C C比较大时,表示对松弛变量的惩罚比较大,也就是要求所有样本都满足约束条件,即 y i ( ω T x i + b ) ≥ 1 − ξ i y_i({\omega ^T}{x_i} + b) \geq 1 - \xi_i yi(ωTxi+b)1ξi。这样的话,如果有一些样本本来不满足约束条件,那么就要增加它们的松弛变量的值,让它们满足约束条件。这样做的好处是可以减少分类错误,提高模型在训练集上的准确率。但是,这样做的坏处是可能导致过拟合,降低模型在测试集上的泛化能力。

  同时这里的 C C C也是正则化尝试,正则化可以理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标,从贝叶斯估计的角度来看,正则化项可认为是提供了模型的先验概率。

6.5 支持向量回归

  对于样本 ( x , y ) (x,y) (x,y),传统回归模型通常直接基于模型输出 f ( x ) f(x) f(x)与真实输出 y y y之间的差别来计算损失,当且仅当 f ( x ) f(x) f(x) y y y完全相同时,损失才为零。与此不同,支持向量回归假设我们能容忍 f ( x ) f(x) f(x) y y y之间最多有 ε \varepsilon ε的偏差,即仅当 f ( x ) f(x) f(x) y y y之间的差别绝对值大于 ε \varepsilon ε时才计算损失,如下图所示,相当于以 f ( x ) f(x) f(x)为中心,构建了一个宽度为 2 ε 2\varepsilon 2ε的间隔带,若训练样本落入此间隔带,则认为是被预测正确的。

  引入松弛变量,得到如下优化问题,这里引入两个松弛变量是因为间隔带两侧的松弛程度可以不同。
min ⁡ ω , b , ξ , ξ ∗     1 2 ∥ ω ∥ 2 + C ∑ i = 1 m ξ i + ξ ∗ i s . t .       f ( x i ) − y i ⩽ ε + ξ i ,              y i − f ( x i ) ⩽ ε + ξ i ∗ ,              ξ i ⩾ 0 , ξ i ∗ ⩾ 0 \begin{aligned} & \mathop {\min }\limits_{\omega ,b,\xi ,\mathop \xi \limits^* }\ \ \ \frac{1}{2}{\left\| \omega \right\|^2} + C\sum\limits_{i = 1}^m {{\xi _i} + {{\mathop \xi \limits^* }_i}} \\ & s.t.\ \ \ \ \ f({x_i}) - {y_i} \leqslant \varepsilon + {\xi _i}, \\ & \ \ \ \ \ \ \ \ \ \ \ \ {y_i} - f({x_i}) \leqslant \varepsilon + {\mathop \xi \limits^* _i}, \\ & \ \ \ \ \ \ \ \ \ \ \ \ {\xi _i} \geqslant 0,{\mathop \xi \limits^* _i} \geqslant 0 \end{aligned} ω,b,ξ,ξmin   21ω2+Ci=1mξi+ξis.t.     f(xi)yiε+ξi,            yif(xi)ε+iξ,            ξi0,iξ0
  同样的,需要引入拉格朗日乘子进行优化求解,最后得到对偶问题,同时也可以引入核函数。

6.6 核方法

  给定训练样本 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } \{ ({x_1},{y_1}),({x_2},{y_2}),...,({x_m},{y_m})\} {(x1,y1),(x2,y2),...,(xm,ym)},若不考虑偏移项 b b b,则无论SVM还是SVR,学得的模型总能表示成核函数 κ ( x , x i ) \kappa ({\bf{x}},{x_i}) κ(x,xi)的线性组合,同时可以得到如下被称为“表示定理”的更一般的结论。

  表示定理 H \mathbb{H} H为核函数 κ \kappa κ对应的再生核希尔伯特空间, ∥ h ∥ H \left\| h \right\|_\mathbb{H} hH表示 H \mathbb{H} H空间中关于 h h h的范数,对于任意单调递增函数 Ω : [ 0 , ∞ ] ↦ R \Omega :[0,\infty ] \mapsto {\R} Ω:[0,]R和任意非负损失函数 ℓ : R m ↦ [ 0 , ∞ ] \ell :{{\R}^m} \mapsto [0,\infty ] :Rm[0,],优化问题
min ⁡ h ∈ H F ( h ) = Ω ( ∥ h ∥ H ) + ℓ ( h ( x 1 ) , h ( x 2 ) , . . . , h ( x m ) ) \mathop {\min }\limits_{h \in \mathbb{H}} F(h) = \Omega ({\left\| h \right\|_\mathbb{H}}) + \ell (h({x_1}),h({x_2}),...,h({x_m})) hHminF(h)=Ω(hH)+(h(x1),h(x2),...,h(xm))
  的解总可写为
h ∗ ( x ) = ∑ i = 1 m α i κ ( x , x i ) {h^*}(x) = \sum\limits_{i = 1}^m {{\alpha _i}\kappa ({\bf{x}},{x_i})} h(x)=i=1mαiκ(x,xi)
  表示定理对损失函数没有限制,对正则化项 Ω \Omega Ω仅要求单调递增,甚至不要求 Ω \Omega Ω是凸函数,意味着对于一般的损失函数和正则化项,上述优化问题的最优解都可以表示为核函数的线性组合。

  因此人们发展出一系列基于核函数的学习方法,统称为“核函数”。最常见的是通过“核化”(即引入核方法)来将线性学习器拓展为非线性学习器,比如SVM、PCA、LDA、聚类等等都可以引入核方法。

6.7 一些问题

(1)SVM、BP神经网络和C4.5决策树的异同?

  • SVM是一种基于核函数和凸优化的算法,它的目标是在特征空间中寻找一个最大间隔超平面来分割两个类别。SVM的优点是能够处理非线性可分问题,泛化能力强,不容易过拟合。SVM的缺点是计算复杂度高,对参数和核函数的选择敏感,难以解释。

  • BP神经网络是一种多层人工神经网络,它的目标是通过反向传播算法来调整网络权重,使得网络输出和期望输出之间的误差最小。BP神经网络的优点是结构灵活,能够拟合复杂的非线性函数,适用于语音、图像、自然语言等领域。BP神经网络的缺点是训练速度慢,容易陷入局部最优解,需要大量数据进行训练。

  • 决策树是一种基于信息论和递归划分的算法,它的目标是构建一棵树状结构,每个内部节点表示一个特征判断,每个叶子节点表示一个类别或回归值。决策树的优点是易于理解和解释,非参数型,适合处理离散特征。决策树的缺点是容易过拟合,对噪声数据敏感,可能不稳定。

(2)线性判别分析与线性核SVM在什么条件下等价?

  • 数据集是线性可分的,即存在一个超平面可以完美地分割两个类别;
  • 数据集服从高斯分布,即每个类别的数据都符合一个多元正态分布;
  • 数据集的协方差矩阵相同,即每个类别的数据都有相同的方差和相关性。

  如果数据集是线性可分的,那么LDA和线性核SVM都可以找到一个超平面来完美地分割两个类别,但这个超平面不一定是唯一的。其次,如果数据集服从高斯分布,那么LDA可以通过最大化两个类别均值之差来得到一个最优的投影方向,而线性核SVM可以通过最大化两个类别支持向量之间的距离来得到一个最优的分类器。最后,如果数据集的协方差矩阵相同,那么LDA和线性核SVM的目标函数都可以化简为两个类别均值之差的函数,从而得到相同的超平面。

(3)高斯核SVM与RBF神经网络之间的联系?

  高斯核SVM与RBF神经网络都使用了高斯核函数作为非线性映射的工具,将低维空间中的数据映射到高维空间中,从而实现线性可分或近似线性可分,当RBF神经网络的隐层神经元数设置为训练样本数,且每个训练样本对应一个神经元中心时,RBF神经网络与高斯核SVM的预测函数是相同的。

(4)SVM对噪声敏感的原因?

  SVM的目的是求出与支持向量有最大距离的超平面,以每个样本为圆心,该距离为半径作圆,可以近似认为圆内所有的点都与该样本属于相同分类,若圆内出现了噪声,那么该噪声所造成的错误分类也将最大化,因此SVM对噪声是敏感的。为了克服SVM对噪声敏感的问题,可以引入松弛变量和惩罚因子,构造软间隔分类器,允许一些样本不满足硬间隔约束条件,从而避免过拟合和模型过于复杂。

;