上篇博文《机器学习之Rademacher复杂度和VC维》讲述了衡量假设集复杂程度即假设集拟合随机噪声的丰富性的方法,从这一篇博文开始讲述机器学习领域的一个重要算法——支持向量机(SVM)。
支持向量机是一种二分类模型,基本思路是求出特征空间中最大间隔的划分两个样本的超平面。这使得其区别于感知机。也就是支持向量机的核心学习策略就是间隔最大化,其形式上也可以转化为求凸二次规划问题,支持向量机的本质就是求解凸二次规划的优化算法问题。
博文重点:
- 介绍线性可分数据集的分类算法。
- 介绍线性不可分的数据集的分类算法。
- 提出基于间隔(margin)概念的支持向量机的理论基础。
1、线性分类(Linear classification)
考虑一个 N N N维输入空间 X ∈ R N , N ≥ 1 \mathcal{X}\in{\mathbb{R}^N},N \ge{1} X∈RN,N≥1。输出空间 Y = { − 1 , + 1 } \mathcal{Y}=\{-1,+1\} Y={
−1,+1},并且 f : X → Y f:\mathcal{X}\to\mathcal{Y} f:X→Y是目标函数。假设集 H H H是二分类 X \mathcal{X} X到 Y \mathcal{Y} Y的映射。训练样本 S = ( ( x 1 , y 1 ) , . . . , ( x m , y m ) ) ∈ ( X × Y ) m S=((x_1,y_1),...,(x_m,y_m))\in(\mathcal{X}\times\mathcal{Y})^m S=((x1,y1),...,(xm,ym))∈(X×Y)m并且 y i = f ( x i ) y_i=f(x_i) yi=f(xi)对任意的 i ∈ [ m ] i\in[m] i∈[m]来自于某个未知分布 D D D。假设集 h ∈ H h\in{H} h∈H的泛化误差为:
R D ( h ) = P x ∼ D [ h ( x ) ≠ f ( x ) ] . R_D(h)=\mathop\mathbb{P}\limits_{x\sim{D}}[h(x)\ne{f(x)}]. RD(h)=x∼DP[h(x)=f(x)].
根据之前的研究,假设集具有更小的 V C VC VC维或Rademacher复杂度将提供更好学习保证,这也符合奥卡姆剃刀原则。那么线性分类器(超平面)自然具有较小的复杂度,定义如下:
H = { x → sgn ( w ⋅ x + b ) : w ∈ R N , b ∈ R } . \mathcal{H}=\{\mathbf{x}\to{\text{sgn}(\mathbf{w}\cdot\mathbf{x}+b)}:\mathbf{w}\in{\mathbb{R}^N},b\in{\mathbb{R}}\}. H={
x→sgn(w⋅x+b):w∈RN,b∈R}.
超平面在 R N \mathbb{R}^N RN的一般方程为: w ⋅ x + b = 0 \mathbf{w}\cdot\mathbf{x}+b=0 w⋅x+b=0,并且 w ∈ R N \mathbf{w}\in{\mathbb{R}^N} w∈RN是超平面的非零向量, b ∈ R b\in\mathbb{R} b∈R是一个标量。因此,分离超平面可将特征空间划分为两部分,所有落在超平面一边的点标记为正,落在另一面的标记为负,也就是法向量所指向的一侧为正类,另一侧为负类。
2、可分的情况(Separable case)
这一部分先假定样本集 S S S均是线性可分的,所以我们假定存在一个超平面能够完美地将样本划分为正负两类,如下图所示:
也就是等价于存在着 ( w , b ) ∈ ( R N − { 0 } ) × R (\mathbf{w},b)\in{(\mathbb{R}^N-\{0\})\times{\mathbb{R}}} (w,b)∈(RN−{ 0})×R满足:
∀ i ∈ [ m ] , y i ( w ⋅ x i + b ) ≥ 0. \forall{i}\in{[m]},y_i(\mathbf{w}\cdot{\mathbf{x}_i}+b)\ge0. ∀i∈[m],yi(w⋅xi+b)≥0.
但是从上幅图我们可以看到,存在着无数个超平面可以将两类样本区分开来。感知机利用误分类最小的策略求得分类超平面,其解也是无穷多个,而线性可分支持向量机利用间隔最大化求最优分离超平面的解是唯一的。
求解SVM的解的方法是以几何间隔概念为基础的。
定义1:几何间隔:线性分类器的几何间隔就是一个点 x \mathbf{x} x到超平面 w ⋅ x + b = 0 \mathbf{w}\cdot{\mathbf{x}}+b=0 w⋅x+b=0的欧氏距离:
ρ h ( x ) = ∣ w ⋅ x + b ∣ ∣ ∣ w ∣ ∣ 2 . \rho_h(x)=\frac{|\mathbf{w}\cdot{\mathbf{x}}+b|}{||\mathbf{w}||_2}. ρh(x)=∣∣w∣∣2∣w⋅x+b∣.
对于线性分类器 h h h的几何间隔 ρ h \rho_h ρh就是所有样本点 S = ( x 1 , . . . , x m ) S=(\mathbf{x_1},...,\mathbf{x_m}) S=(x1,...,xm)中到超平面的最小距离:
ρ h = min i ∈ [ m ] ρ h ( x i ) \rho_h=\min_{i\in[m]}\rho_h(x_i) ρh=i∈[m]minρh(xi),也就是离超平面最近的点。
SVM的解就是寻找最大间隔分离超平面,由于 ρ \rho ρ是能够保证最大间隔地划分两类样本,所以此时的 ρ \rho ρ可以说是最有保障的分离超平面,如下图所示。
2.1 原始优化问题(Primal optimization problem)
通过定义几何间隔,一个分离超平面的最大间隔 ρ \rho ρ如下所示:
ρ = max w , b : y i ( w i ⋅ x + b ) ≥ 0 min i ∈ [ m ] ∣ w ⋅ x i + b ∣ ∣ ∣ w ∣ ∣ = max w , b min i ∈ [ m ] y i ( w ⋅ x i + b ) ∣ ∣ w ∣ ∣ . \begin{aligned} \rho & = \max_{\mathbf{w},b:y_i(\mathbf{w_i}\cdot\mathbf{x}+b)\ge0}\min_{i\in{[m]}}\frac{|\mathbf{w}\cdot{\mathbf{x_i}+b}|}{||\mathbf{w}||} \\ &=\max_{\mathbf{w},b} \min_{i\in{[m]}}\frac{y_i(\mathbf{w}\cdot{\mathbf{x_i}}+b)}{||\mathbf{w}||}. \end{aligned} ρ=w,b:yi(wi⋅x+b)≥0maxi∈[m]min∣∣w∣∣∣w⋅xi+b∣=w,bmaxi∈[m]min∣∣w∣∣yi(w⋅xi+b).
上述公式的含义就是最大化几何间隔,也就是以一个充分大的确信度对数据集进行分类,不仅将正负类分开,对于某些难以区分的示例点也具有足够大的能力将其分开。那么则有 y i ( w ⋅ x i + b ) ≥ 0 y_i(\mathbf{w}\cdot{\mathbf{x_i}}+b)\ge{0} yi(w⋅xi+b)≥0恒成立,我们可以假定 min i ∈ [ m ] y i ( w ⋅ x i + b ) = 1 \min_{i\in{[m]}}y_i(\mathbf{w}\cdot{\mathbf{x_i}}+b)=1 mini∈[m]yi(w⋅xi+b)=1:
ρ = max w , b : min i ∈ [ m ] y i ( w ⋅ x i + b ) = 1 1 ∣ ∣ w ∣ ∣ = max w , b : ∀ i ∈ [ m ] , y i ( w i ⋅ x + b ) ≥ 1 1 ∣ ∣ w ∣ ∣ . \rho=\max_{\mathbf{w},b:\min_{i\in{[m]}}y_i(\mathbf{w}\cdot{\mathbf{x_i}}+b)=1}\frac{1}{||\mathbf{w}||}=\max_{\mathbf{w},b:\forall{i}\in{[m]},y_i(\mathbf{w_i}\cdot{\mathbf{x}}+b)\ge1}\frac{1}{||\mathbf{w}||}. ρ=w,b:mini∈[m]yi(w⋅xi+b)=1max∣∣w∣∣1=w,b:∀i∈[m],yi(wi⋅x+b)≥1max∣∣w∣∣1.
下图,间隔超平面与分离超平面平行,并且通过最近的正负样本,间隔超平面的方程是 w ⋅ x + b = ± 1 \mathbf{w}\cdot{\mathbf{x}}+b=\pm1 w⋅x+b=±1。
由于最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||\mathbf{w}||} ∣∣w∣∣1等价于最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||\mathbf{w}||^2 21∣∣w∣∣2,则求解SVM线性可分超平面的解的方法转变为如下的凸优化问题:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 subject to : y i ( w ⋅ x + b ) ≥ 1 , ∀ i ∈ [ m ] \min_{\mathbf{w},b}\frac{1}{2}||\mathbf{w}||^2 \\ \text{subject to}: y_i(\mathbf{w}\cdot{\mathbf{x}}+b)\ge1,\forall{i}\in{[m]} w,bmin21∣∣w∣∣2subject to:yi(w⋅x+b)≥1,∀i∈[m]
目标函数 F : w → 1 2 ∣ ∣ w ∣ ∣ 2 F:\mathbf{w}\rightarrow{\frac{1}{2}}||\mathbf{w}||^2 F:w→21∣∣w∣∣2是光滑并可微的。它的梯度 ∇ F ( w ) = w \nabla{F(\mathbf{w})}=\mathbf{w} ∇F(w)=w,海森(Hessian)矩阵 ∇ 2 F ( w ) = I \nabla^2F(\mathbf{w})=\mathbf{I} ∇2F(w)=I,并且矩阵的特征值严格为正,因此目标函数是严格凸函数。限制函数 g i : ( w , b ) → 1 − y i ( w ⋅ x + b ) g_i:(\mathbf{w},b)\rightarrow1-y_i(\mathbf{w}\cdot{\mathbf{x}}+b) gi:(w,b)→1−yi(w⋅x+b)是仿射函数。上述凸优化问题成为凸二次规划问题(convex QP problems),上述问题便会有唯一解。
2.2 支持向量(Support vectors)
为了求解线性可分支持向量机的最优化问题,可将原始问题(primal problems)应用拉格朗日对偶性转化为对偶问题(dual problems)。对偶问题往往更加方便求解并且方便引入核函数,推广到非线性分类问题(下篇文章讲述)。
引入拉格朗日变量 α i ≥ 0 , i ∈ [ m ] \alpha_i\ge0,i\in{[m]} αi≥0,i∈[m],将 α \alpha α表示为向量的形式为: α = ( α 1 , . . . , α m ) T \mathbf{\alpha}=(\alpha_1,...,\alpha_m)^T α=(α1,...,αm)T,因此,对于所有的 w ∈ R N , b ∈ R , α ∈ R + N \mathbf{w}\in{\mathbb{R}^N},b\in{\mathbb{R}},\alpha\in{\mathbb{R}_+^N} w∈RN,b∈R,α∈R+N,
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 m α i [ y i ( w ⋅ x i + b ) − 1 ] . \mathcal{L}(\mathbf{w},b,\mathbf{\alpha})=\frac{1}{2}||\mathbf{w}||^2-\sum_{i=1}^m\alpha_i[y_i(\mathbf{w}\cdot{\mathbf{x}_i}+b)-1]. L(w,b,α)=21∣∣w∣∣2−i=1∑mαi[yi(w⋅xi+b)−1].
根据拉格朗日的对偶性,原始问题的对偶问题是极大极小问题:
max α min w , b L ( w , b , α ) \max_{\alpha}\min_{\mathbf{w},b}\mathcal{L}(\mathbf{w},b,\alpha) αmaxw,bminL(w,b,α)
所以,为了得到对偶问题的解,需要先求出 L ( w , b , α ) \mathcal{L}(\mathbf{w},b,\alpha) L(w,b,α)对 w , b \mathbf{w},b w,b的极小,再求出对 α \alpha α的极大。
(1)求 min w , b L ( w , b , α ) \min_{\mathbf{w},b}\mathcal{L}(\mathbf{w},b,\alpha) minw,bL(w,b,α):得到KKT条件就是将原始问题中的 w , b \mathbf{w},b w,b的梯度设置为 0 0 0,并再加上一条补充条件,如下所示:
∇ w L = w − ∑ i = 1 m α i y i x i ⇒ w = ∑ i = 1 m α i y i x i ∇ b L = − ∑ i = 1 m α i y i = 0 ⇒ ∑ i = 1 m α i y i = 0 ∀ i , α i [ y i ( w ⋅ x i + b ) − 1 ] = 0 ⇒ α i = 0 or y i ( w ⋅ x i + b ) = 1 \begin{array}{lcl} \nabla_{\mathbf{w}}\mathcal{L}=\mathbf{w}-\sum_{i=1}^m\alpha_iy_i\mathbf{x}_i&\Rightarrow&\mathbf{w}=\sum_{i=1}^m\alpha_iy_i\mathbf{x}_i\\\\ \nabla_{b}\mathcal{L}=-\sum_{i=1}^m\alpha_iy_i=0&\Rightarrow&\sum_{i=1}^m\alpha_iy_i=0\\\\ \forall{i},\alpha_i[y_i(\mathbf{w}\cdot{\mathbf{x_i}}+b)-1]=0&\Rightarrow&\alpha_i=0 \;\text{or}\;y_i(\mathbf{w}\cdot{\mathbf{x}_i}+b)=1 \end{array} ∇wL=w−∑i=1mαiyixi∇bL=−∑i=1mαiyi=0∀i,αi[yi(w⋅xi+b)−1]=0⇒⇒⇒w=∑i=1mαiyixi∑i=1mαiyi=0αi=0oryi(w⋅xi+b)=1
上述公式可以看出,SVM中 w \mathbf{w} w的解就是当且仅当 α ≠ 0 \alpha\ne0 α=0时训练集 x 1 , . . . , x m \mathbf{x}_1,...,\mathbf{x}_m x1,...,xm的线性组合。这些向量就叫做支持向量。上面的第三个式子,如果 α i ≠ 0 \alpha_i\ne0 αi=0,则说明 y i ( w ⋅