Foundations of Machine Learning 2nd——第五章SVMs(一)

本章内容

这一章主要介绍最常用,也是理论性最强的机器学习模型之一——SVMs(Supper Vector Machines)
首先会在可分数据集(separable datasets)来介绍SVMs。
之后会在不可分的数据集(non-separable datasets)上来介绍SVMs。
最后会根据margin这一概念来介绍SVM的理论基础。

线性分类

我们先来明确一下线性分类的概念:
首先输入空间用 X \mathcal{X} X表示,他是 R N ( N ≥ 1 ) \Bbb{R}^N(N\geq1) RN(N1)的子集。输入空间用 Y = { − 1 , + 1 } \mathcal{Y}=\{-1,+1\} Y={1,+1}(二分类,关于多分类的介绍会在后面的章节独立讲述)。我们的目标函数就是 f : X → Y f:\mathcal{X}\rightarrow\mathcal{Y} f:XY。给定一个从 X 映 射 到 Y \mathcal{X}映射到\mathcal{Y} XY的映射集 H \mathcal{H} H,二分类的任务可以形式化的表示成:训练器接收到一个大小为 m m m,从 X \mathcal{X} X依据某未知的分布 D \mathcal{D} D独立采样出的训练集 S S S S = ( ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) ) ∈ ( X × Y ) m S=((x_1,y_1),(x_2,y_2),...,(x_m,y_m))\in(\mathcal{X}\times\mathcal{Y})^m S=((x1,y1),(x2,y2),...,(xm,ym))(X×Y)m,且对于任意的 x i , i ∈ [ m ] x_i,i\in[m] xi,i[m] y i = f ( x i ) y_i=f(x_i) yi=f(xi)(注意这里的 f f f是我们刚才说的目标函数)。任务目标是找到一个映射 h ∈ H h\in\mathcal{H} hH,将它作为二分类器,所以要求要找到generalization error最小的 h h h:
R D ( h ) = P x ∈ D [ h ( x ) ≠ f ( x ) ] R_\mathcal{D}(h)=\Bbb{P}_{x\in\mathcal{D}}[h(x)\neq f(x)] RD(h)=PxD[h(x)=f(x)]

根据第三章学的内容,我们希望映射集 H \mathcal{H} H的VC维,或者说拉德马赫复杂度越小越好,这样能够有更好的guarantee(generalization error的上界更小)。常见的拉德马赫复杂度很小的映射集就是线性分类器,或者超平面:
H = { x → s i g n ( w ⋅ x + b ) : w ∈ R N , b ∈ R } \mathcal{H}=\{\textrm{\textbf{x}}\rightarrow sign(\textrm{\textbf{w}} \cdot \textrm{\textbf{x}}+b):\textrm{\textbf{w}}\in \Bbb{R}^N,b\in\Bbb{R}\} H={xsign(wx+b):wRN,bR}

N N N表示数据的维数, s i g n ( w ⋅ x + b ) = 0 sign(\textrm{\textbf{w}} \cdot \textrm{\textbf{x}}+b)=0 sign(wx+b)=0以这个超平面为分类器,在平面一边的预测为正样本,另一边的预测为负样本。注意 w \textbf{\textrm{w}} w是非零向量。

可分情况

这节我们假设输入的训练数据是线性可分的,也就是说存在一个超平面能够把所有的正样本分在一边,所有的负样本在另一边。就像下图的左图一样。在这里插入图片描述公式化的描述如下:
存在 ( w , b ) ∈ ( R N − 0 ) × R (\textrm{\textbf{w}},b)\in(\Bbb{R}^N-{\textbf{0}})\times\Bbb{R} (w,b)(RN0)×R使得:
∀ i ∈ [ m ] , y i ( w ⋅ x + b ) ≥ 0 \forall i\in[m],y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)\geq0 i[m],yi(wx+b)0

即:所有的预测标签和真实标签都是同号的。

让我们再来看看图5.1的右图,和左图相比,右图的分类器看起来似乎更好,因为他看起来分类的更准确,而能够完美分类的超平面有很多,我们应该怎么选呢?来看看下面的关于margin的定义吧~

定义5.1 Geometric margin(几何边距)

一个线性分类器 h : x → w ⋅ x + b h:\textbf{\textrm{x}}\rightarrow\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b h:xwx+b在点 x \textbf{\textrm{x}} x的geometric margin ρ ( x ) \rho(x) ρ(x)就是该点距离超平面 w ⋅ x + b = 0 \textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b=0 wx+b=0的欧氏距离:
ρ ( x ) = ∣ w ⋅ x + b ∣ ∣ ∣ w ∣ ∣ 2 \rho(x)=\frac{|\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b|}{||\textbf{\textrm{w}}||_2} ρ(x)=w2wx+b
一个线性分类器 h h h在一个样本集 S = ( x 1 , x 2 , . . . , x m ) S=(\textbf{\textrm{x}}_1,\textbf{\textrm{x}}_2,...,\textbf{\textrm{x}}_m) S=(x1,x2,...,xm)上的geometric margin ρ h = min ⁡ i ∈ [ m ] ρ ( x i ) \rho_h=\min_{i\in[m]}\rho(x_i) ρh=mini[m]ρ(xi),就是距离超平面最近的点的距离。

SVM要找的就是有最大 ρ h \rho_h ρh的超平面,通常称为最大边距的超平面(maximum-margin hyperplane)。图5.1右图所示的就是SVM在可分数据集上返回的maximum-margin hyperplane。

优化目标

根据我们上面说的geometric margin的定义,一个可分超平面的maximum geometric margin ρ \rho ρ通过下式得到:
ρ = max ⁡ w , b : y i ( w ⋅ x + b ) ≥ 0 min ⁡ i ∈ [ m ] ∣ w ⋅ x + b ∣ ∣ ∣ w ∣ ∣ = max ⁡ w , b min ⁡ i ∈ [ m ] y i ( w ⋅ x + b ) ∣ ∣ w ∣ ∣ \rho=\max_{\textbf{\textrm{w}},b:y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)\geq0}\min_{i\in[m]}\frac{|\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b|}{||\textbf{\textrm{w}}||}=\max_{\textbf{\textrm{w}},b}\min_{i\in[m]}\frac{y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)}{||\textbf{\textrm{w}}||} ρ=w,b:yi(wx+b)0maxi[m]minwwx+b=w,bmaxi[m]minwyi(wx+b)

因为我们最终要找到最大的margin,所以计算geometric margin的时候肯定是选能使 y i ( w ⋅ x + b ) y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b) yi(wx+b)对任意 x i , i ∈ [ m ] x_i,i\in[m] xi,i[m]大于0的。

对于最后一个表达式,我们发现,给 y i ( w ⋅ x + b ) y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b) yi(wx+b)乘上任意一个常数,结果都是不变的,所以我们可以加一个约束: min ⁡ i ∈ [ m ] y i ( w ⋅ x + b ) = 1 \min_{i\in[m]}y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)=1 mini[m]yi(wx+b)=1。这样问题就转化成了:
ρ = max ⁡ w , b : min ⁡ i ∈ [ m ] y i ( w ⋅ x + b ) = 1 1 ∣ ∣ w ∣ ∣ = max ⁡ w , b : ∀ i ∈ [ m ] , y i ( w ⋅ x + b ) ≥ 1 1 ∣ ∣ w ∣ ∣ \rho=\max_{\textbf{\textrm{w}},b:\min_{i\in[m]}y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)=1}\frac{1}{||\textbf{\textrm{w}}||}=\max_{\textbf{\textrm{w}},b:\forall i\in[m],y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)\geq1}\frac{1}{||\textbf{\textrm{w}}||} ρ=w,b:mini[m]yi(wx+b)=1maxw1=w,b:i[m],yi(wx+b)1maxw1

图5.3中间的实现就是maximum-marginal 超平面,两次的虚线是marginal hyperplane,是与maximum-marginal hyperplane平行,且传过正样本侧或者负样本侧距离最近的点的平面。
在这里插入图片描述最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||\textbf{\textrm{w}}||} w1等价于最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||\textbf{\textrm{w}}||^2 21w2,所以优化目标转换成:
ρ = min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 ( 5.7 ) subject to : y i ( w ⋅ x + b ) ≥ 1 , ∀ i ∈ [ m ] \rho=\min_{\textbf{\textrm{w}},b}\frac{1}{2}||\textbf{\textrm{w}}||^2\quad(5.7)\\ \textrm{subject to}:y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)\geq1,\forall i\in[m] ρ=w,bmin21w2(5.7)subject to:yi(wx+b)1,i[m]
1/2是为了求导方便,使用 ∣ ∣ w ∣ ∣ 2 ||w||^2 w2是因为这是凸函数,方便优化。

∇ 2 F ( w ) = I \nabla^2F(\textbf{\textrm{w}})=\textbf{\textrm{I}} 2F(w)=I I \textbf{\textrm{I}} I的特征值都大于0,所以其为正定矩阵,所以 ∣ ∣ w ∣ ∣ 2 ||w||^2 w2是严格的凸函数。

我们把约束条件写成 1 − y i ( w ⋅ x + b ) ≤ 0 1-y_i(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b)\leq0 1yi(wx+b)0的形式,从而利用拉格朗日求极值法来求解该问题。根据凸优化的特性,该优化问题只有一个解,这对机器学习算法来说是一个很大的优点,大部分算法都不具备这个优点(只能找到局部最优解)。

同时,因为目标函数是一个二次函数并且约束是仿射函数,这个优化问题属于“”二次规划"问题,“quadratic programming”(QP),很多计算机软件上集成了很多解决QP问题的包,方便求解(当然直接解SVM的包也集成的很好了。。)。

支持向量 Support Vector

我们常说SVM是“支持向量机”,所谓的“支持向量”到底是什么呢?

看一下我们的优化问题:目标函数和约束函数都是可微的凸函数,因此我们可以使用KKT求解。

引入拉格朗日因子 α i > 0 , i ∈ [ m ] \alpha_i>0,i\in[m] αi>0,i[m],对应所有的 m m m个样本,其向量用 α = ( α 1 , . . . , α m ) \alpha=(\alpha_1,...,\alpha_m) α=(α1,...,αm)表示。对于所有的 w ∈ R N , b ∈ R , α ∈ R + m \textbf{\textrm{w}}\in \Bbb{R}^N,b\in\Bbb{R},\alpha\in\Bbb{R}^m_+ wRN,bR,αR+m,拉格朗日等式如下:
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 m α i [ y i ( w ⋅ x i + b ) − 1 ] ( 5.8 ) \mathcal{L}(\textbf{\textrm{w}},b,\alpha)=\frac{1}{2}||\textbf{\textrm{w}}||^2-\sum_{i=1}^m\alpha_i[y_i(\textbf{\textrm{w}}\cdot \textbf{\textrm{x}}_i+b)-1](5.8) L(w,b,α)=21w2i=1mαi[yi(wxi+b)1](5.8)

KKT条件如下:
∇ w L = w − ∑ i = 1 m α i y i x i = 0 → w = ∑ i = 1 m α i y i x i ( 5.9 ) ∇ b L = − ∑ i = 1 m α i y i = 0 → ∑ i = 1 m α i y i = 0 ( 5.10 ) ∀ i ∈ [ m ] , α i [ y i ( w ⋅ x i + b ) − 1 ] = 0 → α i = 0 ∨ y i ( w ⋅ x i + b ) = 1 ( 5.11 ) \begin{aligned} &\nabla_\textbf{\textrm{w}}\mathcal{L}=\textbf{\textrm{w}}-\sum_{i=1}^m\alpha_iy_i\textbf{\textrm{x}}_i=0 \rightarrow \textbf{\textrm{w}}=\sum_{i=1}^m\alpha_iy_i\textbf{\textrm{x}}_i(5.9)\\ &\nabla_b\mathcal{L}=-\sum_{i=1}^{m}\alpha_iy_i=0 \rightarrow \sum_{i=1}^{m}\alpha_iy_i=0(5.10)\\ &\forall i\in[m] ,\alpha_i[y_i(\textbf{\textrm{w}}\cdot \textbf{\textrm{x}}_i+b)-1]=0\rightarrow\alpha_i=0\lor y_i(\textbf{\textrm{w}}\cdot \textbf{\textrm{x}}_i+b)=1(5.11) \end{aligned} wL=wi=1mαiyixi=0w=i=1mαiyixi(5.9)bL=i=1mαiyi=0i=1mαiyi=0(5.10)i[m],αi[yi(wxi+b)1]=0αi=0yi(wxi+b)=1(5.11)
根据KKT条件可以看出,SVM的解是 x i x_i xi的线性组合,系数是 α i y i \alpha_iy_i αiyi,且当 α i ≠ 0 \alpha_i\neq0 αi=0的时候,也就是 y i ( w ⋅ x i + b ) = 1 y_i(\textbf{\textrm{w}}\cdot \textbf{\textrm{x}}_i+b)=1 yi(wxi+b)=1对应的 x i x_i xi才对求解有贡献。我们称 y i ( w ⋅ x i + b ) = 1 y_i(\textbf{\textrm{w}}\cdot \textbf{\textrm{x}}_i+b)=1 yi(wxi+b)=1对应的 x i \textbf{\textrm{x}}_i xi为支持向量(support vector)也是我们上文说的"marginal hyperplane"。

对偶优化

为了导出公式(5.7)的对偶优化问题,我们把KKT条件得到的表达式带入(5.7)得到:
L = 1 2 ∣ ∣ ∑ i = 1 m α i y i x i ∣ ∣ 2 − ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 m α i y i b + ∑ i = 1 m α i ( 5.12 ) \mathcal{L}=\frac{1}{2}||\sum_{i=1}^m\alpha_iy_i\textrm{\textbf{x}}_i||^2-\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j(\textrm{\textbf{x}}_i\cdot\textrm{\textbf{x}}_j)-\sum_{i=1}^m\alpha_iy_ib+\sum_{i=1}^m\alpha_i\quad(5.12) L=21i=1mαiyixi2i=1mj=1mαiαjyiyj(xixj)i=1mαiyib+i=1mαi(5.12)
注意 1 2 ∣ ∣ ∑ i = 1 m α i y i x i ∣ ∣ 2 = 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ⋅ x j ) \frac{1}{2}||\sum_{i=1}^m\alpha_iy_i\textrm{\textbf{x}}_i||^2=\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j(\textrm{\textbf{x}}_i\cdot\textrm{\textbf{x}}_j) 21i=1mαiyixi2=21i=1mj=1mαiαjyiyj(xixj)
结合公式(5.10),(5.12)可化简为:
L = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ⋅ x j ) \mathcal{L} = \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j(\textrm{\textbf{x}}_i\cdot\textrm{\textbf{x}}_j) L=i=1mαi21i=1mj=1mαiαjyiyj(xixj)

也就是说,优化问题(5.7)的对偶问题如下:
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ⋅ x j ) ( 5.14 ) subject to α i > 0 ∧ ∑ i = 1 m α i y i = 0 \max_\alpha\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j(\textrm{\textbf{x}}_i\cdot\textrm{\textbf{x}}_j)\quad(5.14)\\ \textrm{subject to} \quad\alpha_i>0\land\sum_{i=1}^m\alpha_iy_i=0 αmaxi=1mαi21i=1mj=1mαiαjyiyj(xixj)(5.14)subject toαi>0i=1mαiyi=0

对偶问题的目标函数 G : α → ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ⋅ x j ) G:\alpha\rightarrow\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j(\textrm{\textbf{x}}_i\cdot\textrm{\textbf{x}}_j) G:αi=1mαi21i=1mj=1mαiαjyiyj(xixj)是一个无限可微函数,他的海瑟矩阵是 ∇ 2 G = − A , A = ( y i x i ⋅ y j x j ) i j \nabla^2G=-\textbf{\textrm{A}},\textbf{\textrm{A}}=(y_i\textrm{\textbf{x}}_i\cdot y_j\textrm{\textbf{x}}_j)_{ij} 2G=A,A=(yixiyjxj)ij,显然 A \textbf{\textrm{A}} A是格拉姆矩阵(Gram matrix),是半正定的,因此 ∇ 2 G \nabla^2G 2G是一个半负定矩阵,从而目标函数 G G G是凹函数,同时约束矩阵是一个仿射的,也就是凸函数(仿射矩阵即是凸函数也是凹函数),所以(5.14)这个优化问题也是一个凸优化的问题(因为目标函数是max,取个负数就是min,凹函数变成凸函数),同时我们能看到 G G G也是关于 α \alpha α的二次函数,所以这也是一个二次规划问题(QP),可以调包解决。

再来~因为约束函数是仿射函数,所以满足强对偶性,因此原本的优化问题和他的对偶问题是等价的,对偶问题的解可以直接应用到原问题上求解:
h ( x ) = sgn ( w ⋅ x + b ) = sgn ( ∑ i = 1 m α i y i ( x i , x ) + b ) ( 5.15 ) h(x)=\textrm{sgn}(\textbf{\textrm{w}}\cdot\textbf{\textrm{x}}+b) = \textrm{sgn}(\sum_{i=1}^m\alpha_iy_i(\textbf{\textrm{x}}_i,\textbf{\textrm{x}})+b)\quad(5.15) h(x)=sgn(wx+b)=sgn(i=1mαiyi(xi,x)+b)(5.15)
根据支持向量都在marginal hyperplane上这一推论,对于任意的支持向量 x i \textbf{\textrm{x}}_i xi,都有 w ⋅ x i + b = y i \textbf{\textrm{w}}\cdot\textbf{\textrm{x}}_i+b=y_i wxi+b=yi:
b = y i − ∑ i = j m α j y j ( x j , x i ) ( 5.16 ) b=y_i-\sum_{i=j}^m\alpha_jy_j(\textbf{\textrm{x}}_j,\textbf{\textrm{x}}_i)\quad(5.16) b=yii=jmαjyj(xj,xi)(5.16)

我们可以观察到SVM的解都是基于向量(x)的内积,而非向量本身。这一特点对于核函数的引入来说十分重要,核函数会在第六章介绍。

定义5.2 留一损失

h S h_S hS表示算法 A \mathcal{A} A在规定的样本集 S S S学习到的映射, A \mathcal{A} A S S S上的留一损失是:
R ^ L O O ( A ) = 1 m ∑ i = 1 m 1 h S − { x i } ( x i ) ≠ y i \hat{R}_{LOO}(\mathcal{A})=\frac{1}{m}\sum_{i=1}^m1_{h_S-\{x_i\}(x_i)\neq y_i} R^LOO(A)=m1i=1m1hS{xi}(xi)=yi

也就是说我们每次都把 { x i } \{x_i\} {xi}拿出来当作测试集,其余的当做训练集,训练 m m m次,平均的损失就是留一损失。

定理5.3

m > 2 m>2 m>2的样本集计算的平均留一损失 是 样本大小为 m − 1 m-1 m1的样本集的平均generalization损失 的无偏估计:
E S ∼ D m [ R ^ L O O ( A ) ] = E S ′ ∼ D m − 1 [ R ( h S ′ ) ] \Bbb{E}_{\mathcal{S}\sim\mathcal{D^m}}[\hat{R}_{LOO}(\mathcal{A})]=\Bbb{E}_{\mathcal{S}^{'}\sim\mathcal{D}^{m-1}}[R(h_{S^{'}})] ESDm[R^LOO(A)]=ESDm1[R(hS)]
D \mathcal{D} D是样本点服从的分布。

证明略

留一损失在样本量比较小的时候比较容易计算,当样本量大的时候要计算 m m m次,计算量比较大。

定理5.4

h S h_S hS是SVM算法在样本集 S S S上学习后返回的映射,令 N S V ( S ) N_{SV}(S) NSV(S)表示定义了 h S h_S hS的支持向量的数量,那么我们有:
E S ∼ D m [ R ( h S ) ] ≤ E S ∼ D m + 1 [ N S V ( S ) m + 1 ] \Bbb{E}_{S\sim\mathcal{D}^m}[R(h_S)]\leq\Bbb{E}_{S\sim\mathcal{D}^{m+1}}[\frac{N_{SV}(S)}{m+1}] ESDm[R(hS)]ESDm+1[m+1NSV(S)]

定理5.4给出了一个关于SVMs的稀疏性论点:算法的平均损失是由支持向量的平均比例限定(bounded)的。也许我们会希望在实践中,只有相当小的训练样本落在marginal hyperplane上,这样只有很小一部分的对偶变量 α i \alpha_i αi会是非零的,返回的结果映射就会比较稀疏。
不过我们必须要注意这个边界限定的是所有的样本大小为 m m m的训练集的平均generalization 损失,并没有提供关于generalization 损失的方差信息,所以对于我们使用的 S S S的generalization损失的上界,这个定理的保证性不强。在后面的章节,我们会介绍基于margin的概率更高的强边界。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值