从拉格朗日乘子法到SVM

前言

本文主要是讲了如何构建SVM的模型,并利用KKT条件构造其对偶型,从而求解问题,并讲述了SVM的硬间隔,软间隔和核函数三个境界。主要参考了周志华的《机器学习》,并在其中补充了自己的想法。由于内容较多,所以很多细节都省略掉了,只留下了整体的框架,该说的东西应该都说了。

SVM基本型

首先,我们先假设一个数据集线性可分的情况,也就是硬间隔的情况,如下图所示。
硬间隔

图1:线性可分情况
可以看到,数据集可以被无数条直线正确划分为两类,然而我们希望找到其中最好的一条线来划分这两个数据集,这条直线最好有较好的泛化能力,也就是说在面对未知的数据集的时候,也能够较为正确地划分数据,有较强的抗干扰性。那么怎么样的直线是最好的呢?我们来看下下面这幅图(此图出自林轩田的机器学习技法)。

最大间隔

图2:划分方式抗干扰能力比较
从图中看出,我们假设每个数据点都带有一定的噪声,也就是说在数据点周围的灰色区域可能都是和这个数据点相同类型的数据点,只不过因为某些噪声干扰产生了一些偏移,就是有方差的意思。那么上图中的第三种情况是最能容忍这种噪声的,也就是我们最希望得到的划分方式。 换另一种方式来说,假设我们有一条直线或超平面$w^Tx+b=0$正确划分了数据集,将直线分别往上方和下方平移,直到碰到数据点,我们假设网上和往下平移的截距是相同的,比如都是$a$(如果不同的话就平移一下$w^Tx+b=0$,即改变$b$的值,总能找到满足条件的一条$w^Tx+b=0$)。

{ w T x + b = a w T x + b = − a \begin{cases}w^Tx+b=a \\ w^Tx+b=-a\end{cases} {wTx+b=awTx+b=a

为了之后方便处理,我们统一一下,将等式两边同时除以一个 a a a,即

{ w : = w / a b : = b / a \begin{cases}w:=w/a \\ b:=b/a\end{cases} {w:=w/ab:=b/a

于是,我们现在就有三条直线或超平面

{ w T x + b = 1 w T x + b = 0 w T x + b = − 1 \begin{cases}w^Tx+b=1 \\ w^Tx+b=0 \\ w^Tx+b=-1\end{cases} wTx+b=1wTx+b=0wTx+b=1

如下图所示。

SVM基本型

图3:支持向量与间隔
其中,在直线上的点就被称为支持向量。我们现在的目的就是找到使得$w^Tx+b=1$和$w^Tx+b=-1$之间距离最大的参数$w$和$b$。 那个这个距离,或者说这个间隔怎么求呢?这就要用到我们的支持向量了,这个间隔是由它们决定的。 假设有支持向量$x_1$和$x_2$分别满足

{ w T x 1 + b = 1 w T x 2 + b = − 1 \begin{cases}w^Tx_1+b=1 \\ w^Tx_2+b=-1\end{cases} {wTx1+b=1wTx2+b=1

两式相减则有

w ⋅ ( x 1 − x 2 ) = 2 w \cdot (x_1-x_2)=2 w(x1x2)=2

注意到 w w w x 1 x_1 x1 x 2 x_2 x2都是向量,那么由向量点乘的性质可以得到

∣ ∣ w ∣ ∣ ⋅ ∣ ∣ x 1 − x 2 ∣ ∣ ⋅ c o s θ = 2 ||w|| \cdot ||x_1-x_2|| \cdot cos\theta =2 ∣∣w∣∣∣∣x1x2∣∣cosθ=2

注意到了吗?这里的 ∣ ∣ x 1 − x 2 ∣ ∣ ⋅ c o s θ ||x_1-x_2|| \cdot cos\theta ∣∣x1x2∣∣cosθ就是间隔,不信可以自己画下图看。于是

d = ∣ ∣ x 1 − x 2 ∣ ∣ ⋅ c o s θ = 2 ∣ ∣ w ∣ ∣ d=||x_1-x_2|| \cdot cos\theta=\dfrac{2}{||w||} d=∣∣x1x2∣∣cosθ=∣∣w∣∣2

我们假设现在是一个二分类问题,两类分别标记为 { + 1 , − 1 } \{+1, -1\} {+1,1},于是现在问题就转化为了

m a x w , b   2 ∣ ∣ w ∣ ∣ s . t . { y i = 1 ,     w T x i + b ≥ 1 y i = − 1 , w T x i + b ≤ − 1 \mathop{max}_{w,b}\ \dfrac{2}{||w||} \\ s.t. \begin{cases}y_i=1, \quad \ \ \ w^Tx_i+b\geq 1 \\ y_i=-1, \quad w^Tx_i+b\leq -1\end{cases} maxw,b ∣∣w∣∣2s.t.{yi=1,   wTxi+b1yi=1,wTxi+b1

将式子合起来并将求最大改成求最小则是

m i n w , b   ∣ ∣ w ∣ ∣ 2 2 s . t .   y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m \mathop{min}_{w,b}\ \dfrac{||w||^2}{2} \\ s.t. \ y_i(w^Tx_i+b) \geq 1, \quad i=1,2,...,m minw,b 2∣∣w2s.t. yi(wTxi+b)1,i=1,2,...,m

这就是SVM的基本型。
这是一个凸二次规划问题,可以直接解决,但效率不高,我们希望找到更高效的方法,所以就去找它的对偶问题。这也是求不等式约束求极值的通用手段。
既然都讲到这里了,干脆先把拉格朗日乘子法和KKT条件都给讲了。

拉格朗日乘子法

拉格朗日乘子法针对的是等式约束,基本形式如下:

m i n x   f ( x ) s . t . h i ( x ) = 0 , i = 1 , 2 , . . . , m \mathop{min}_{x} \ f(x) \\ s.t. h_i(x)=0, \quad i=1,2,...,m minx f(x)s.t.hi(x)=0,i=1,2,...,m

拉格朗日乘子法做的就是将约束条件添加到目标函数当中,使其变成一个无约束优化问题。可以这么做的原因是,只要满足 h i ( x ) = 0 h_i(x)=0 hi(x)=0,那么不管加多少个都是不改变目标值的。

m i n x , λ L ( x , λ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) \mathop{min}_{x,\lambda} L(x, \lambda) = f(x) +\sum_{i=1}^m\lambda_i h_i(x) minx,λL(x,λ)=f(x)+i=1mλihi(x)

我们假设 x x x p p p个特征,那么上式的极值点有如下的必要条件

{ ∂ L ∂ x k = ∂ f ∂ x k + ∑ i = 1 m λ i ∂ h i ( x ) ∂ x k = 0 , k = 1 , 2 , . . . , p ∂ L ∂ λ i = h i ( x ) = 0 , i = 1 , 2 , . . . , m \begin{cases} \dfrac{\partial L}{\partial x_k}=\dfrac{\partial f}{\partial x_k} + \sum_{i=1}^m\lambda_i \dfrac{\partial h_i(x)}{\partial x_k}=0, \quad k=1,2,...,p \\ \dfrac{\partial L}{\partial \lambda_i} =h_i(x)=0, \quad i=1,2,...,m\end{cases} xkL=xkf+i=1mλixkhi(x)=0,k=1,2,...,pλiL=hi(x)=0,i=1,2,...,m

上式有 p p p x k x_k xk m m m λ i \lambda_i λi是待求的参数( k + m k+m k+m个未知数),同时有 p + m p+m p+m个等式方程,所以是可以求解得到 x k x_k xk λ i \lambda_i λi的值。
值得注意的是,以上的只是必要条件,并不是充分条件,所以求得结果后最好再检验一下(虽然实际情况下都忽略了这一步)。

KKT条件

KKT条件是在拉格朗日乘子法的基础上多了不等式的约束,其针对的问题的基本型如下所示。

m i n x f ( x ) s . t . { h i ( x ) = 0 ,   i = 1 , 2 , . . , m g j ( x ) ≤ 0 ,   j = 1 , 2 , . . . , n \mathop{min}_x f(x) \\ s.t.\begin{cases} h_i(x)=0,\ i=1,2,..,m \\ g_j(x) \leq 0, \ j=1,2,...,n \end{cases} minxf(x)s.t.{hi(x)=0, i=1,2,..,mgj(x)0, j=1,2,...,n

其对偶型为

m i n x , λ , μ L ( x , λ , μ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 n μ j g j ( x ) \mathop{min}_{x,\lambda,\mu}L(x,\lambda,\mu)=f(x)+\sum_{i=1}^m\lambda_ih_i(x)+\sum_{j=1}^n\mu_jg_j(x) minx,λ,μL(x,λ,μ)=f(x)+i=1mλihi(x)+j=1nμjgj(x)

此时最优解要满足的条件为

{ ∂ L ∂ x k = ∂ f ∂ x k + ∑ i = 1 m λ i ∂ h i ( x ) ∂ x k + ∑ j = 1 n μ j ∂ g j ( x ) ∂ x k = 0 , k = 1 , 2 , . . . , p ∂ L ∂ λ i = h i ( x ) = 0 , i = 1 , 2 , . . . , m μ j g i ( x ) = 0 , j = 1 , 2 , . . . , n μ j ≥ 0 , j = 1 , 2 , . . . , n \begin{cases}\dfrac{\partial L}{\partial x_k}=\dfrac{\partial f}{\partial x_k} + \sum_{i=1}^m\lambda_i \dfrac{\partial h_i(x)}{\partial x_k}+\sum_{j=1}^n\mu_j\dfrac{\partial g_j(x)}{\partial x_k}=0, \quad k=1,2,...,p \\ \dfrac{\partial L}{\partial \lambda_i} =h_i(x)=0, \quad i=1,2,...,m \\ \mu_jg_i(x)=0, \quad j=1,2,...,n \\ \mu_j \geq 0, j=1,2,...,n\end{cases} xkL=xkf+i=1mλixkhi(x)+j=1nμjxkgj(x)=0,k=1,2,...,pλiL=hi(x)=0,i=1,2,...,mμjgi(x)=0,j=1,2,...,nμj0,j=1,2,...,n

至于为什么是这样,参考一下这个吧,这里偷下懒。

SVM对偶问题

我们再来回顾一下我们得到的SVM基本型。

m i n w , b   ∣ ∣ w ∣ ∣ 2 2 s . t .   1 − y i ( w T x i + b ) ≤ 0 , i = 1 , 2 , . . . , m \mathop{min}_{w,b}\ \dfrac{||w||^2}{2} \\ s.t. \ 1-y_i(w^Tx_i+b) \leq 0, \quad i=1,2,...,m minw,b 2∣∣w2s.t. 1yi(wTxi+b)0,i=1,2,...,m

很显然,这是一个只有不等式的约束的KKT条件问题。
于是,我们可以将问题转化为

m i n w , b , α L ( w , b , α ) = ∣ ∣ w ∣ ∣ 2 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) \mathop{min}_{w,b,\alpha} L(w,b,\alpha)=\dfrac{||w||^2}{2} + \sum_{i=1}^{m}\alpha_i(1-y_i(w^Tx_i+b)) minw,b,αL(w,b,α)=2∣∣w2+i=1mαi(1yi(wTxi+b))

这个时候最优解满足的条件为

{ ∂ L ∂ w = w − ∑ i = 1 m α i y i x i = 0 ∂ L ∂ b = ∑ i = 1 m α i y i = 0 α i ( y i f ( x i ) − 1 ) = 0 ,   i = 1 , 2 , . . . , m α i ≥ 0 , i = 1 , 2 , . . . , m \begin{cases}\dfrac{\partial L}{\partial w} = w-\sum_{i=1}^{m}\alpha_i y_i x_i=0 \\ \dfrac{\partial L}{\partial b}=\sum_{i=1}^m\alpha_iy_i=0 \\ \alpha_i(y_if(x_i)-1)=0, \ i=1,2,...,m \\ \alpha_i \geq 0,\quad i=1,2,...,m\end{cases} wL=wi=1mαiyixi=0bL=i=1mαiyi=0αi(yif(xi)1)=0, i=1,2,...,mαi0,i=1,2,...,m

值得注意的是,这里的 w w w x x x都是向量, f ( x i ) = w T x i + b f(x_i)=w^Tx_i+b f(xi)=wTxi+b
我们将上述方程组的前2个带入到原问题中,消去参数 w w w b b b,则原问题转化为

m i n α   L ( α ) = 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j − ∑ i = 1 m α i \mathop{min}_{\alpha} \ L(\alpha)= \dfrac{1}{2}\sum_{i=1}^m\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j-\sum_{i=1}^m\alpha_i minα L(α)=21i=1mj=1mαiαjyiyjxiTxji=1mαi

这个时候,仍然需要满足

{ ∑ i = 1 m α i y i = 0 α i ≥ 0 , i = 1 , 2 , . . . , m α i ( y i f ( x i ) − 1 ) = 0 ,   i = 1 , 2 , . . . , m \begin{cases}\sum_{i=1}^m\alpha_iy_i=0 \\ \alpha_i \geq 0,\quad i=1,2,...,m \\ \alpha_i(y_if(x_i)-1)=0, \ i=1,2,...,m \end{cases} i=1mαiyi=0αi0,i=1,2,...,mαi(yif(xi)1)=0, i=1,2,...,m

这个时候,我们就可以用一个叫做SMO的算法来求解 α \alpha α,这里不详细介绍这种算法了,不然篇幅太长了。求得 α \alpha α之后,可以通过 w − ∑ i = 1 m α i y i x i = 0 w-\sum_{i=1}^{m}\alpha_i y_i x_i=0 wi=1mαiyixi=0这个式子来求得 w w w,而剩下的一个参数 b b b则要通过支持向量代入求解。

软间隔

有时候,噪声太大,会因为某几个点而产生线性不可分的情况。这个时候,就要引入软间隔这个概念了。说白了,就是我们允许某些点是可以被错误分类的,但这种错分的情况要尽可能地少。

软间隔

图4:软间隔示意图
所以,我们引入了松弛变量和惩罚函数。

m i n w , b   ∣ ∣ w ∣ ∣ 2 2 + C ∑ i = 1 m ϵ i s . t .   y i ( w T x i + b ) ≥ 1 − ϵ i , ϵ i ≥ 0 , i = 1 , 2 , . . . , m \mathop{min}_{w,b}\ \dfrac{||w||^2}{2} + C\sum_{i=1}^m \epsilon_i \\ s.t. \ y_i(w^Tx_i+b) \geq 1-\epsilon_i, \quad \epsilon_i\geq 0, \quad i=1,2,...,m minw,b 2∣∣w2+Ci=1mϵis.t. yi(wTxi+b)1ϵi,ϵi0,i=1,2,...,m

容易看出,当 C C C为无穷大的时候,就成了硬间隔的状态;当 C C C越小的时候,允许被错分的点就越多。
同样是利用KKT条件,我们可以得到其对偶问题

m a x α   ∑ 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 0 ≤ α i ≤ C , i = 1 , 2 , . . . , m \mathop{max}_{\alpha} \ \sum_{i=1}^m\alpha_i-\dfrac{1}{2}\sum_{i=1}^m\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j \\ s.t.\begin{cases}\sum_{i=1}^m \alpha_iy_i=0 \\ 0\leq \alpha_i \leq C, \quad i=1,2,...,m\end{cases} maxα i=1mαi21i=1mj=1mαiαjyiyjxiTxjs.t.{i=1mαiyi=00αiC,i=1,2,...,m

同样地,这也是可以利用SMO算法求解的,这里不详细介绍。

核函数

以上问题是针对线性可分,或者是针对由于噪声而产生的个别点线性不可分,总体线性可分的情况。那么对于下图左这样本来就线性不可分的数据集该怎么处理呢?

非线性映射

图5:非线性映射
没错,就像上图所示的这样,我们把低维的样本空间映射到一个更高为的空间,使得样本点在高维空间上线性可分。我们用$\phi(x)$表示映射后的特征向量,于是,在特征空间中超平面所对应的模型为

f ( x ) = w T ϕ ( x ) + b f(x)=w^T\phi(x)+b f(x)=wTϕ(x)+b

类似上述的问题,我们有

m i n w , b   ∣ ∣ w ∣ ∣ 2 2 + C ∑ i = 1 m ϵ i s . t .   y i ( w T ϕ ( x i ) + b ) ≥ 1 − ϵ i , ϵ i ≥ 0 , i = 1 , 2 , . . . , m \mathop{min}_{w,b}\ \dfrac{||w||^2}{2} + C\sum_{i=1}^m \epsilon_i \\ s.t. \ y_i(w^T\phi(x_i)+b) \geq 1-\epsilon_i, \quad \epsilon_i\geq 0, \quad i=1,2,...,m minw,b 2∣∣w2+Ci=1mϵis.t. yi(wTϕ(xi)+b)1ϵi,ϵi0,i=1,2,...,m

其对偶问题为

m a x α   ∑ 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 0 ≤ α i ≤ C , i = 1 , 2 , . . . , m \mathop{max}_{\alpha} \ \sum_{i=1}^m\alpha_i-\dfrac{1}{2}\sum_{i=1}^m\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j) \\ s.t.\begin{cases}\sum_{i=1}^m \alpha_iy_i=0 \\ 0\leq \alpha_i \leq C, \quad i=1,2,...,m\end{cases} maxα i=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)s.t.{i=1mαiyi=00αiC,i=1,2,...,m

但是,这样的处理会导致维度灾难,也就是说本来几百维的一个东西会变成几千维,这样的计算量是无法接受的。于是,核函数就出现了,核函数是在低维空间上计算高维空间点积的一种方法,大大减少了数据量,也就是说,我们完全不用考虑 ϕ ( x ) \phi(x) ϕ(x)是什么东西就能够计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)我们将核函数记作

κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa(x_i,x_j)=\phi(x_i)^T\phi(x_j) κ(xi,xj)=ϕ(xi)Tϕ(xj)

常用的核函数有如下几种,这里不详细介绍核函数。

表1:常用核函数

常用核函数
于是,我们的问题就转化为了

m a x α   ∑ 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 0 ≤ α i ≤ C , i = 1 , 2 , . . . , m \mathop{max}_{\alpha} \ \sum_{i=1}^m\alpha_i-\dfrac{1}{2}\sum_{i=1}^m\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\kappa(x_i,x_j) \\ s.t.\begin{cases}\sum_{i=1}^m \alpha_iy_i=0 \\ 0\leq \alpha_i \leq C, \quad i=1,2,...,m\end{cases} maxα i=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj)s.t.{i=1mαiyi=00αiC,i=1,2,...,m

利用上式我们可以求出 α \alpha α,然而,这并没有什么卵用。由于我们不知道 ϕ ( x ) \phi(x) ϕ(x)是什么,所以仍旧求不出 f ( x ) = w T ϕ ( x ) + b f(x)=w^T\phi(x)+b f(x)=wTϕ(x)+b
真的是这样吗?别急。
在求对偶型的过程当中,我们会求 ∂ L ∂ w \dfrac{\partial L}{\partial w} wL对吧。由该式我们可以知道

w = ∑ i = 1 m α i y i ϕ ( x i ) w=\sum_{i=1}^m\alpha_iy_i\phi(x_i) w=i=1mαiyiϕ(xi)

我们将其代入 f ( x ) f(x) f(x)可得

f ( x ) = w T ϕ ( x ) + b = ∑ i = 1 m α i y i ϕ ( x i ) T ϕ ( x ) + b = ∑ i = 1 m α i y i κ ( x , x i ) + b f(x)=w^T\phi(x)+b \\ \quad \quad =\sum_{i=1}^m\alpha_iy_i\phi(x_i)^T\phi(x)+b \\ \quad \quad = \sum_{i=1}^m\alpha_iy_i\kappa(x,x_i)+b f(x)=wTϕ(x)+b=i=1mαiyiϕ(xi)Tϕ(x)+b=i=1mαiyiκ(x,xi)+b

这样不就求出来了吗!核函数是不是很神奇!

结束语

本文讨论了SVM是怎么来的,以及硬间隔,软间隔,核函数这三个SVM的核心问题。许多细节都省略了,只留下了整体框架。
如有不足,还请指正~

参考文献

[1] 周志华. 机器学习 : = Machine learning[M]. 清华大学出版社, 2016.
[2] http://www.onmyphd.com/?p=lagrange.multipliers
[3] http://www.onmyphd.com/?p=kkt.karush.kuhn.tucker

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七元权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值