SVM详解


参考地址: https://zhuanlan.zhihu.com/p/77750026

1.支持向量

1.1 线性可分

在二维空间上,两类点被一条直线完全分开叫做线性可分。
在这里插入图片描述

严格的数学定义是:
D 0 D_0 D0 D 1 D_1 D1 n n n维欧氏空间中的两个点集。如果存在 n n n维向量 w w w和实数 b b b,使得所有属于 D 0 D_0 D0的点 x i x_i xi都有 w x i + b > 0 wx_i+b>0 wxi+b>0,而对于所有属于 D 1 D_1 D1的点 x j x_j xj则有 w x j + b < 0 wx_j+b<0 wxj+b<0,则我们称 D 0 D_0 D0 D 1 D_1 D1线性可分。

1.2 最大间隔超平面

从二维扩展到多维空间中时,将 D 0 D_0 D0 D 1 D_1 D1完全正确地划分开的 w x + b = 0 wx+b=0 wx+b=0就成了一个超平面。为了使这个超平面更具鲁棒性,我们会去找最佳超平面,以最大间隔把两类样本分开的超平面,也称之为最大间隔超平面。

  • 两类样本分别分割在该超平面的两侧;
  • 两侧距离超平面最近的样本点到超平面的距离被最大化了。

1.3 支持向量

样本中距离超平面最近的一些点,这些点叫做支持向量。
在这里插入图片描述

1.4 SVM最优化问题

SVM想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。任意超平面可以用下面这个线性方程来描述:

w T x + b = 0 w^{T} x+b=0 wTx+b=0

二维空间点 ( x , y ) (x,y) (x,y)到直线 A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0的距离公式是:

∣ A x + B y + C ∣ A 2 + B 2 \frac{|A x+B y+C|}{\sqrt{A^{2}+B^{2}}} A2+B2 Ax+By+C

扩展到 n n n维空间后,点 x = ( x 1 , x 2 . . . x n ) x=(x_1,x_2...x_n) x=(x1,x2...xn)到直线 w T x + b = 0 w^Tx+b=0 wTx+b=0的距离为:

∣ w T x + b ∣ ∥ w ∥ \frac{\left|w^{T} x+b\right|}{\|w\|} w wTx+b

其中 ∥ w ∥ = w 1 2 + … w n 2 \|w\|=\sqrt{w_{1}^{2}+\ldots w_{n}^{2}} w=w12+wn2 。如图所示,根据支持向量的定义我们知道,支持向量到超平面的距离为 d d d,其他点到超平面的距离大于 d d d
在这里插入图片描述

于是我们有这样的一个公式:

{ w T x + b ∥ w ∥ ≥ d y = 1 w T x + b ∥ w ∥ ≤ − d y = − 1 \left\{\begin{array}{l} \frac{w^{T} x+b}{\|w\|} \geq d \quad y=1 \\ \frac{w^{T} x+b}{\|w\|} \leq-d \quad y=-1 \end{array}\right. {wwTx+bdy=1wwTx+bdy=1

稍作转化可以得到:

{ w T x + b ∥ w ∥ d ≥ 1 y = 1 w T x + b ∥ w ∥ d ≤ − 1 y = − 1 \left\{\begin{array}{ll} \frac{w^{T} x+b}{\|w\| d} \geq 1 \quad y & =1 \\ \frac{w^{T} x+b}{\|w\| d} \leq-1 & y=-1 \end{array}\right. {wdwTx+b1ywdwTx+b1=1y=1

∣ ∣ w ∣ ∣ d ||w||d ∣∣w∣∣d是正数,我们暂且令它为1(之所以令它等于1,是为了方便推导和优化,且这样做对目标函数的优化没有影响),故:

{ w T x + b ≥ 1 y = 1 w T x + b ≤ − 1 y = − 1 \left\{\begin{array}{ll} w^{T} x+b \geq 1 & y=1 \\ w^{T} x+b \leq-1 & y=-1 \end{array}\right. {wTx+b1wTx+b1y=1y=1

将两个方程合并,我们可以简写为:

y ( w T x + b ) ≥ 1 y\left(w^{T} x+b\right) \geq 1 y(wTx+b)1

至此我们就可以得到最大间隔超平面的上下两个超平面:

在这里插入图片描述

每个支持向量到超平面的距离可以写为:

d = ∣ w T x + b ∣ ∥ w ∥ d=\frac{\left|w^{T} x+b\right|}{\|w\|} d=w wTx+b

由上述 y ( w T x + b ) > 1 > 0 y\left(w^{T} x+b\right)>1>0 y(wTx+b)>1>0可以得到 y ( w T x + b ) = ∣ w T x + b ∣ y\left(w^{T} x+b\right)=\left|w^{T} x+b\right| y(wTx+b)= wTx+b ,所以我们得到:

d = y ( w T x + b ) ∥ w ∥ d=\frac{y\left(w^{T} x+b\right)}{\|w\|} d=wy(wTx+b)

最大化这个距离:

max ⁡ 2 ∗ y ( w T x + b ) ∥ w ∥ \max 2 * \frac{y\left(w^{T} x+b\right)}{\|w\|} max2wy(wTx+b)

这里乘上2倍也是为了后面推导,对目标函数没有影响。刚刚我们得到支持向量 y ( w T x + b ) = 1 y\left(w^{T} x+b\right)=1 y(wTx+b)=1,所以我们得到:

max ⁡ 2 ∥ w ∥ \max \frac{2}{\|w\|} maxw2

再做一个转换:

min ⁡ 1 2 ∥ w ∥ \min \frac{1}{2}\|w\| min21w

为了方便计算(去除 ∥ w ∥ \|w\| w的根号),我们有:

min ⁡ 1 2 ∥ w ∥ 2 \min \frac{1}{2}\|w\|^{2} min21w2

所以得到的最优化问题是:

min ⁡ 1 2 ∥ w ∥ 2  s.t.  y i ( w T x i + b ) ≥ 1 \min \frac{1}{2}\|w\|^{2} \text { s.t. } \quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1 min21w2 s.t. yi(wTxi+b)1

2. 对偶问题

2.1 拉格朗日乘数法

2.2.1 等式约束优化问题

本科高等数学学的拉格朗日乘数法是等式约束优化问题:

min ⁡ f ( x 1 , x 2 , … , x n )  s.t.  h k ( x 1 , x 2 , … , x n ) = 0 k = 1 , 2 , … , l \begin{array}{cc} \min f\left(x_{1}, x_{2}, \ldots, x_{n}\right) \\ \text { s.t. } & h_{k}\left(x_{1}, x_{2}, \ldots, x_{n}\right)=0 \quad k=1,2, \ldots, l \end{array} minf(x1,x2,,xn) s.t. hk(x1,x2,,xn)=0k=1,2,,l

我们令 L ( x , λ ) = f ( x ) + ∑ k = 1 l λ k h k ( x ) L(x, \lambda)=f(x)+\sum_{k=1}^{l} \lambda_{k} h_{k}(x) L(x,λ)=f(x)+k=1lλkhk(x),函数 L ( x , λ ) L(x, \lambda) L(x,λ)称为Lagrange函数,参数 λ \lambda λ称为Lagrange乘子。利用必要条件找到可能的极值点:

{ ∂ L ∂ x i = 0 i = 1 , 2 , … , n ∂ L ∂ λ k = 0 k = 1 , 2 , … , l \left\{\begin{array}{ll} \frac{\partial L}{\partial x_{i}}=0 & i=1,2, \ldots, n \\ \frac{\partial L}{\partial \lambda_{k}}=0 & k=1,2, \ldots, l \end{array}\right. {xiL=0λkL=0i=1,2,,nk=1,2,,l

具体是否为极值点需根据问题本身的具体情况检验。这个方程组称为等式约束的极值必要条件。等式约束下的Lagrange乘数法引入了 l l l个Lagrange乘子,我们将 x i x_i xi λ i \lambda_i λi一视同仁,把 λ k \lambda_k λk 也看作优化变量,共有 ( n + l ) (n+l) (n+l)个优化变量。

2.1.2 不等式约束优化问题

而我们现在面对的是不等式优化问题,针对这种情况其主要思想是将不等式约束条件转变为等式约束条件,引入松弛变量,将松弛变量也是为优化变量。

在这里插入图片描述

以我们的例子为例:

minf ⁡ ( w ) = min ⁡ 1 2 ∥ w ∥ 2  s.t.  g i ( w ) = 1 − y i ( w T x i + b ) ≤ 0 \begin{array}{ll} & \operatorname{minf}(w)=\min \frac{1}{2}\|w\|^{2} \\ \text { s.t. } & g_{i}(w)=1-y_{i}\left(w^{T} x_{i}+b\right) \leq 0 \end{array}  s.t. minf(w)=min21w2gi(w)=1yi(wTxi+b)0

我们引入松弛变量 a i 2 a_i^2 ai2得到 h i ( w , a i ) = g i ( w ) + a i 2 = 0 h_i(w,a_i)=g_i(w)+a_i^2=0 hi(w,ai)=gi(w)+ai2=0。这里加平方主要为了不再引入新的约束条件,如果只引入 a i a_i ai那我们必须要保证 a i ≥ 0 a_{i} \geq 0 ai0才能保证 h i ( w , a i ) h_i(w,a_i) hi(w,ai),这不符合我们的意愿。由此我们将不等式约束转化为了等式约束,并得到 Lagrange 函数:

L ( w , λ , a ) = f ( w ) + ∑ i = 1 n λ i h i ( w ) = f ( w ) + ∑ j = 1 n λ i [ g i ( w ) + a i 2 ] λ i ≥ 0 \begin{aligned} L(w, \lambda, a) &=f(w)+\sum_{i=1}^{n} \lambda_{i} h_{i}(w) \\ &=f(w)+\sum_{j=1}^{n} \lambda_{i}\left[g_{i}(w)+a_{i}^{2}\right] \quad \lambda_{i} \geq 0 \end{aligned} L(w,λ,a)=f(w)+i=1nλihi(w)=f(w)+j=1nλi[gi(w)+ai2]λi0

由等式约束优化问题极值的必要条件对其求解,联立方程:

{ ∂ L ∂ w i = ∂ f ∂ w i + ∑ i = 1 n λ i ∂ g i ∂ w i = 0 ∂ L ∂ a i = 2 λ i a i = 0 , ∂ L ∂ λ i = g i ( w ) + a i 2 = 0 λ i ≥ 0 \left\{\begin{array}{l}\frac{\partial L}{\partial w_{i}}=\frac{\partial f}{\partial w_{i}}+\sum_{i=1}^{n} \lambda_{i} \frac{\partial g_{i}}{\partial w_{i}}=0 \\ \frac{\partial L}{\partial a_{i}}=2 \lambda_{i} a_{i}=0, \\ \frac{\partial L}{\partial \lambda_{i}}=g_{i}(w)+a_{i}^{2}=0 \\ \lambda_{i} \geq 0\end{array}\right. wiL=wif+i=1nλiwigi=0aiL=2λiai=0,λiL=gi(w)+ai2=0λi0

针对 λ i a i \lambda_ia_i λiai我们有两种情况:
情形一: λ i = 0 , a i ≠ 0 \lambda_i=0,a_{i} \neq 0 λi=0,ai=0
由于 λ i = 0 \lambda_i=0 λi=0,因此约束条件 g i ( w ) g_i(w) gi(w)不起作用,且 g i ( w ) < 0 g_i(w)<0 gi(w)<0
情形一: λ i ≠ 0 , a i = 0 \lambda_i \neq 0,a_{i} = 0 λi=0,ai=0
此时 g i ( w ) = 0 g_i(w)=0 gi(w)=0 λ i > 0 \lambda_i>0 λi>0,可以理解为约束条件 g i ( w ) g_i(w) gi(w)起作用了,且 g i ( w ) = 0 g_i(w)=0 gi(w)=0
综合可得: λ i g i ( w ) = 0 \lambda_ig_i(w)=0 λigi(w)=0,且在约束条件起作用时 λ i > 0 , g i ( w ) = 0 \lambda_i>0,g_i(w)=0 λi>0,gi(w)=0;约束不起作用时 λ i = 0 , g i ( w ) < 0 \lambda_i=0,g_i(w)<0 λi=0,gi(w)<0
由此方程组转换为:

{ ∂ L ∂ w i = ∂ f ∂ w i + ∑ j = 1 n λ j ∂ g j ∂ w i = 0 λ i g i ( w ) = 0 g i ( w ) ≤ 0 λ i ≥ 0 \left\{\begin{aligned} \frac{\partial L}{\partial w_{i}} &=\frac{\partial f}{\partial w_{i}}+\sum_{j=1}^{n} \lambda_{j} \frac{\partial g_{j}}{\partial w_{i}}=0 \\ \lambda_{i} g_{i}(w) &=0 \\ g_{i}(w) & \leq 0 \\ \lambda_{i} & \geq 0 \end{aligned}\right. wiLλigi(w)gi(w)λi=wif+j=1nλjwigj=0=000

直观来讲就是,支持向量 g i ( w ) = 0 g_i(w)=0 gi(w)=0,所以 λ i > 0 \lambda_i>0 λi>0即可。而其他向量 g i ( w ) < 0 , λ i = 0 g_i(w)<0,\lambda_i=0 gi(w)<0,λi=0
我们原本问题时要求: min ⁡ 1 2 ∥ w ∥ 2 \min \frac{1}{2}\|w\|^{2} min21w2,即求 min ⁡ L ( w , λ , a ) \min L(w, \lambda, a) minL(w,λ,a)

min ⁡ 1 2 ∣ w ∣ 2 ,即求 min ⁡ L ( w , λ , a ) < c e n t e r > L ( w , λ , a ) = f ( w ) + ∑ i = 1 n λ i [ g i ( w ) + a i 2 ]   = f ( w ) + ∑ j = 1 n λ i g i ( w ) + ∑ i = 1 n λ i a i 2 \min \frac{1}{2}|w|^{2},即求\min L(w, \lambda, a) <center>\begin{aligned} L(w, \lambda, a) &=f(w)+\sum_{i=1}^{n} \lambda_{i}\left[g_{i}(w)+a_{i}^{2}\right] \ &=f(w)+\sum_{j=1}^{n} \lambda_{i} g_{i}(w)+\sum_{i=1}^{n} \lambda_{i} a_{i}^{2} \end{aligned} min21w2,即求minL(w,λ,a)<center>L(w,λ,a)=f(w)+i=1nλi[gi(w)+ai2] =f(w)+j=1nλigi(w)+i=1nλiai2

由于 ∑ i = 1 n λ i a i 2 ≥ 0 \sum_{i=1}^{n} \lambda_{i} a_{i}^{2} \geq 0 i=1nλiai20,故我们将问题转换为: min ⁡ L ( w , λ ) \min L(w, \lambda) minL(w,λ)

L ( w , λ ) = f ( w ) + ∑ i = 1 n λ i g i ( w ) L(w, \lambda)=f(w)+\sum_{i=1}^{n} \lambda_{i} g_{i}(w) L(w,λ)=f(w)+i=1nλigi(w)

假设找到了最佳参数是的目标函数取得了最小值 p。即 1 2 ∥ w ∥ 2 = p \frac{1}{2}\|w\|^{2}=p 21w2=p。而根据 λ i ≥ 0 \lambda_{i} \geq 0 λi0,可知 ∑ i = 1 n λ i g i ( w ) ≤ 0 \sum_{i=1}^{n} \lambda_{i} g_{i}(w) \leq 0 i=1nλigi(w)0,因此 L ( w , λ ) ≤ p L(w, \lambda) \leq p L(w,λ)p,为了找到最优的参数 λ \lambda λ,使得 L ( w , λ ) L(w, \lambda) L(w,λ)接近 p,故问题转换为出 max ⁡ λ L ( w , λ ) \max _{\lambda} L(w, \lambda) maxλL(w,λ)
故我们的最优化问题转换为:

min ⁡ w max ⁡ λ L ( w , λ ) s . t . λ i ≥ 0 \min _{w} \max {\lambda} L(w, \lambda)\\ s.t. \quad \lambda{i} \geq 0 wminmaxλL(w,λ)s.t.λi0

出了上面的理解方式,我们还可以有另一种理解方式: 由于 λ i ≥ 0 \lambda_i\geq0 λi0
在这里插入图片描述

所以 min ⁡ ( ∞ , 1 2 ∥ w ∥ 2 ) = 1 2 ∥ w ∥ 2 \min \left(\infty, \frac{1}{2}\|w\|^{2}\right)=\frac{1}{2}\|w\|^{2} min(,21w2)=21w2,所以转化后的式子和原来的式子也是一样的。

2.2 强对偶性

对偶问题其实就是将:

min ⁡ w max ⁡ λ L ( w , λ ) s . t . λ i ≥ 0 \min _{w} \max {\lambda} L(w, \lambda) \\s.t. \quad \lambda{i} \geq 0 wminmaxλL(w,λ)s.t.λi0

变成了:

max ⁡ λ min ⁡ w L ( w , λ ) s . t . λ i ≥ 0 \max _{\lambda} \min {w} L(w, \lambda) \\s.t. \quad \lambda{i} \geq 0 λmaxminwL(w,λ)s.t.λi0

假设有个函数 f f f我们有:

m i n   m a x   f ≥ m a x   m i n   f min\ max\ f \geq max\ min\ f min max fmax min f

也就是说,最大的里面挑出来的最小的也要比最小的里面挑出来的最大的要大。这关系实际上就是弱对偶关系,而强对偶关系是当等号成立时,即:

m i n   m a x   f = m a x   m i n   f min\ max\ f=max\ min\ f min max f=max min f

如果 f f f是凸优化问题,强对偶性成立。而我们之前求的 KKT 条件是强对偶性的充要条件。

3. SVM优化

我们已知 SVM 优化的主问题是:

min ⁡ w 1 2 ∣ w ∣ 2 s . t . g i ( w , b ) = 1 − y i ( w T x i + b ) ≤ 0 , i = 1 , 2 , … , n \min {w} \frac{1}{2}|w|^{2} \\s.t. \quad g{i}(w, b)=1-y_{i}\left(w^{T} x_{i}+b\right) \leq 0, \quad i=1,2, \ldots, n minw21w2s.t.gi(w,b)=1yi(wTxi+b)0,i=1,2,,n

那么求解线性可分的 SVM 的步骤为:
步骤 1:
构造拉格朗日函数:

min ⁡ w , b max ⁡ λ L ( w , b , λ ) = 1 2 ∣ w ∣ 2 + ∑ i = 1 n λ i [ 1 − y i ( w T x i + b ) ]   s . t . λ i ≥ 0 \begin{aligned} \min {w, b} \max {\lambda} L(w, b, \lambda)=& \frac{1}{2}|w|^{2}+\sum{i=1}^{n} \lambda{i}\left[1-y_{i}\left(w^{T} x_{i}+b\right)\right] \ & \\{ s.t. } \quad \lambda_{i} \geq 0 \end{aligned} minw,bmaxλL(w,b,λ)=s.t.λi021w2+i=1nλi[1yi(wTxi+b)] 

步骤 2:

利用强对偶性转化:

max ⁡ λ min ⁡ w , b L ( w , b , λ ) \max _{\lambda} \min _{w, b} L(w, b, \lambda) λmaxw,bminL(w,b,λ)

现对参数 w w w b b b求偏导数:

∂ L ∂ w = w − ∑ i = 1 n λ i x i y i = 0 ∂ L ∂ b = ∑ i = 1 n λ i y i = 0 \frac{\partial L}{\partial w}=w-\sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}=0 \\\frac{\partial L}{\partial b}=\sum_{i=1}^{n} \lambda_{i} y_{i}=0 wL=wi=1nλixiyi=0bL=i=1nλiyi=0

得到:

∑ i = 1 n λ i x i y i = w ∑ i = 1 n λ i y i = 0 \sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}=w \sum_{i=1}^{n} \lambda_{i} y_{i}=0 i=1nλixiyi=wi=1nλiyi=0

我们将这个结果带回到函数中可得:

L ( w , b , λ ) = 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( x i ⋅ x j ) + ∑ i = 1 n λ i − ∑ i = 1 n λ i y i ( ∑ j = 1 n λ j y j ( x i ⋅ x j ) + b ) = 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( x i ⋅ x j ) + ∑ i = 1 n λ i − ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( x i ⋅ x j ) − ∑ i = 1 n λ i y i b = ∑ j = 1 n λ i − 1 2 ∑ i − 1 n ∑ j − 1 n λ i λ j y i y j ( x i ⋅ x j ) \begin{aligned} L(w, b, \lambda) &=\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{n} \lambda_{i}-\sum_{i=1}^{n} \lambda_{i} y_{i}\left(\sum_{j=1}^{n} \lambda_{j} y_{j}\left(x_{i} \cdot x_{j}\right)+b\right) \\ &=\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{n} \lambda_{i}-\sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{n} \lambda_{i} y_{i} b \\ &=\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i-1}^{n} \sum_{j-1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right) \end{aligned} L(w,b,λ)=21i=1nj=1nλiλjyiyj(xixj)+i=1nλii=1nλiyi(j=1nλjyj(xixj)+b)=21i=1nj=1nλiλjyiyj(xixj)+i=1nλii=1nj=1nλiλjyiyj(xixj)i=1nλiyib=j=1nλi21i1nj1nλiλjyiyj(xixj)

也就是说:

min ⁡ ∗ w , b L ( w , b , λ ) = ∑ ∗ j = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( x i ⋅ x j ) \min *{w, b} L(w, b, \lambda)=\sum*{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right) minw,bL(w,b,λ)=j=1nλi21i=1nj=1nλiλjyiyj(xixj)

步骤 3:

由步骤 2 得:

max ⁡ ∗ λ [ ∑ ∗ j = 1 n λ i − 1 2 ∑ j = 1 n ∑ j = 1 n λ i λ j y i y j ( x i ⋅ x j ) ]   s.t.  ∑ i = 1 n λ i y i = 0 λ i ≥ 0 \begin{aligned} \max *{\lambda}\left[\sum*{j=1}^{n} \lambda_{i}\right.& \left.-\frac{1}{2} \sum_{j=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)\right] \ \text { s.t. } & \sum_{i=1}^{n} \lambda_{i} y_{i}=0 \quad \lambda_{i} \geq 0 \end{aligned} maxλ[j=1nλi21j=1nj=1nλiλjyiyj(xixj)]  s.t. i=1nλiyi=0λi0

我们可以看出来这是一个二次规划问题,问题规模正比于训练样本数,我们常用 SMO(Sequential Minimal Optimization) 算法求解。
SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值。我们来看一下 SMO 算法在 SVM 中的应用。
我们刚说了 SMO 算法每次只优化一个参数,但我们的优化目标有约束条件: ∑ i = 1 n λ i y i = 0 \sum_{i=1}^{n} \lambda_{i} y_{i}=0 i=1nλiyi=0
没法一次只变动一个参数。所以我们选择了一次选择两个参数。具体步骤为:

  1. 选择两个需要更新的参数 λ i \lambda_i λi λ j \lambda_j λj,固定其他参数。于是我们有以下约束:

    这样约束就变成了:

    λ i y i + λ j y j = c λ i ≥ 0 , λ j ≥ 0 \lambda_{i} y_{i}+\lambda_{j} y_{j}=c \quad \lambda_{i} \geq 0, \lambda_{j} \geq 0 λiyi+λjyj=cλi0,λj0
    其中 c = − ∑ k ≠ i , j λ k y k c=-\sum_{k \neq i, j} \lambda_{k} y_{k} c=k=i,jλkyk,由此可以得出 λ j = c − λ i y i y j \lambda_{j}=\frac{c-\lambda_{i} y_{i}}{y_{j}} λj=yjcλiyi,也就是说我们可以用 λ i \lambda_i λi的表达式代替 λ j \lambda_j λj 。这样就相当于把目标问题转化成了仅有一个约束条件的最优化问题,仅有的约束是 λ i ≥ 0 \lambda_i\geq0 λi0

  2. 对于仅有一个约束条件的最优化问题,我们完全可以在 λ i \lambda_i λi 上对优化目标求偏导,令导数为零,从而求出变量值 λ i n e w \lambda_{inew} λinew,然后根据 λ i n e w \lambda_{inew} λinew求出 λ j n e w \lambda_{jnew} λjnew

  3. 多次迭代直至收敛。
    通过 SMO 求得最优解 λ ∗ \lambda^* λ

步骤 4 :

我们求偏导数时得到:

w = ∑ i = 1 m λ i y i x i w=\sum_{i=1}^{m} \lambda_{i} y_{i} x_{i} w=i=1mλiyixi

由上式可求得 w w w
我们知道所有 λ i > 0 \lambda_i>0 λi>0对应的点都是支持向量,我们可以随便找个支持向量,然后带入:
y i ( w x s + b ) = 1 y_i(wx_s+b)=1 yi(wxs+b)=1,求出b即可,两边同乘 y s y_s ys,得 y s 2 ( w x s + b ) = y s y_{s}^{2}\left(w x_{s}+b\right)=y_{s} ys2(wxs+b)=ys。因为 y s 2 = 1 y_s^2=1 ys2=1 ,所以: b = y s − w x s b=y_s-wx_s b=yswxs
为了更具鲁棒性,我们可以求得支持向量的均值:

b = 1 ∣ S ∣ ∑ s ∈ S ( y s − w x s ) b=\frac{1}{|S|} \sum_{s \in S}\left(y_{s}-w x_{s}\right) b=S1sS(yswxs)

步骤 5:

w w w b b b都求出来了,我们就能构造出最大分割超平面: w T x + b = 0 w^Tx+b=0 wTx+b=0
分类决策函数: f ( x ) = sign ⁡ ( w T x + b ) f(x)=\operatorname{sign}\left(w^{T} x+b\right) f(x)=sign(wTx+b)
其中 sign ⁡ ( ⋅ ) \operatorname{sign}(\cdot) sign()为阶跃函数:

sign ⁡ ( x ) = { − 1 x < 0 0 x = 0 1 x > 0 \operatorname{sign}(x)=\left\{\begin{array}{rl}-1 & x<0 \\ 0 & x=0 \\ 1 & x>0\end{array}\right. sign(x)= 101x<0x=0x>0

4. 软间隔

4.1 解决问题

在实际应用中,完全线性可分的样本是很少的,如果遇到了不能够完全线性可分的样本,我们应该怎么办?比如下面这个:

在这里插入图片描述

于是我们就有了软间隔,相比于硬间隔的苛刻条件,我们允许个别样本点出现在间隔带里面,比如:

在这里插入图片描述

我们允许部分样本点不满足约束条件:

1 − y i ( w T x i + b ) ≤ 0 1-y_{i}\left(w^{T} x_{i}+b\right) \leq 0 1yi(wTxi+b)0

为了度量这个间隔软到何种程度,我们为每个样本引入一个松弛变量 ξ i \xi_{i} ξi ,令 ξ i ≥ 0 \xi_{i} \geq 0 ξi0,且 1 − y i ( w T x i + b ) − ξ i ≤ 0 1-y_{i}\left(w^{T} x_{i}+b\right)-\xi_{i} \leq 0 1yi(wTxi+b)ξi0。对应如下图所示:

在这里插入图片描述

4.2 优化目标及求解

增加软间隔后我们的优化目标变成了:

min ⁡ w 1 2 ∣ w ∣ 2 + C ∑ i = 1 m ξ i s . t . g i ( w , b ) = 1 − y i ( w T x i + b ) − ξ i ≤ 0 , ξ i ≥ 0 , i = 1 , 2 , … , n \min {w} \frac{1}{2}|w|^{2}+C \sum{i=1}^{m} \xi_{i}\\ s.t. \quad g_{i}(w, b)=1-y_{i}\left(w^{T} x_{i}+b\right)-\xi_{i} \leq 0, \quad \xi_{i} \geq 0, \quad i=1,2, \ldots, n minw21w2+Ci=1mξis.t.gi(w,b)=1yi(wTxi+b)ξi0,ξi0,i=1,2,,n

其中 C C C是一个大于0的常数,可以理解为错误样本的惩罚程度,若 C C C为无穷大,$ \xi_{i} 必然无穷小,如此一来线性 S V M 就又变成了线性可分 S V M ;当 必然无穷小,如此一来线性SVM就又变成了线性可分SVM;当 必然无穷小,如此一来线性SVM就又变成了线性可分SVM;当C$为有限值的时候,才会允许部分样本不遵循约束条件。
接下来我们将针对新的优化目标求解最优化问题:
步骤 1:
构造拉格朗日函数:

min ⁡ ∗ w , b , ξ max ⁡ λ , μ L ( w , b , ξ , λ , μ ) = 1 2 ∣ w ∣ 2 ⊣ ⋅ C ∑ ∗ i = 1 m ξ i ⊣ ⋅ ∑ i = 1 n λ i [ 1 − ξ i − y i ( w T x i + b ) ] − ∑ i = 1 n μ i ξ i   s.t.  λ i ≥ 0 μ i ≥ 0 \begin{aligned} \min *{w, b, \xi} \max {\lambda, \mu} L(w, b, \xi, \lambda, \mu)=\frac{1}{2}|w|^{2} \dashv \cdot C & \sum*{i=1}^{m} \xi{i} \dashv \cdot \sum_{i=1}^{n} \lambda_{i}\left[1-\xi_{i}-y_{i}\left(w^{T} x_{i}+b\right)\right]-\sum_{i=1}^{n} \mu_{i} \xi_{i} \ \text { s.t. } \quad \lambda_{i} \geq 0 \quad \mu_{i} \geq 0 \end{aligned} minw,b,ξmaxλ,μL(w,b,ξ,λ,μ)=21w2Ci=1mξii=1nλi[1ξiyi(wTxi+b)]i=1nμiξi  s.t. λi0μi0

其中 λ i \lambda_i λi μ i \mu_i μi是拉格朗日乘子 w 、 b w、b wb ξ i \xi_i ξi是主问题参数。
根据强对偶性,将对偶问题转换为:

max ⁡ λ , μ min ⁡ w , b , ξ L ( w , b , ξ , λ , μ ) \max _{\lambda, \mu} \min _{w, b, \xi} L(w, b, \xi, \lambda, \mu) λ,μmaxw,b,ξminL(w,b,ξ,λ,μ)

步骤 2:
分别对主问题参数 w 、 b w、b wb ξ i \xi_i ξi求偏导数,并令偏导数为 0,得出如下关系:

w = ∑ i = 1 m λ i y i x i 0 = ∑ i = 1 m λ i y i C = λ i + μ i w=\sum_{i=1}^{m} \lambda_{i} y_{i} x_{i} \\0=\sum_{i=1}^{m} \lambda_{i} y_{i} \\C=\lambda_{i}+\mu_{i} w=i=1mλiyixi0=i=1mλiyiC=λi+μi

将这些关系带入拉格朗日函数中,得到:

min ⁡ ∗ w , b , ξ L ( w , b , ξ , λ , μ ) = ∑ ∗ j = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( x i ⋅ x j ) \min *{w, b, \xi} L(w, b, \xi, \lambda, \mu)=\sum*{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right) minw,b,ξL(w,b,ξ,λ,μ)=j=1nλi21i=1nj=1nλiλjyiyj(xixj)

最小化结果只有 λ \lambda λ而没有 μ \mu μ,所以现在只需要最大化 λ \lambda λ就好:

max ⁡ λ [ ∑ j = 1 n λ i − 1 2 ∑ j = 1 n ∑ j = 1 n λ i λ j y i y j ( x i ⋅ x j ) ] s . t . ∑ i = 1 n λ i y i = 0 , λ i ≥ 0 , C − λ i − μ i = 0 \max {\lambda}\left[\sum{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{j=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)\right]\\ s.t. \quad \sum_{i=1}^{n} \lambda_{i} y_{i}=0, \quad \lambda_{i} \geq 0, \quad C-\lambda_{i}-\mu_{i}=0 maxλ[j=1nλi21j=1nj=1nλiλjyiyj(xixj)]s.t.i=1nλiyi=0,λi0,Cλiμi=0

我们可以看到这个和硬间隔的一样,只是多了个约束条件。
然后我们利用 SMO 算法求解得到拉格朗日乘子 λ ∗ \lambda^* λ

步骤 3 :

w = ∑ i = 1 m λ i y i x i b = 1 ∣ S ∣ ∑ s ∈ S ( y s − w x s ) w=\sum_{i=1}^{m} \lambda_{i} y_{i} x_{i} b=\frac{1}{|S|} \sum_{s \in S}\left(y_{s}-w x_{s}\right) w=i=1mλiyixib=S1sS(yswxs)

然后我们通过上面两个式子求出 w w w b b b,最终求得超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0
这边要注意一个问题,在间隔内的那部分样本点是不是支持向量?
我们可以由求参数 w w w的那个式子可看出,只要 λ i > 0 \lambda_i>0 λi>0的点都能够影响我们的超平面,因此都是支持向量。

5. 核函数

5.1 线性不可分

我们刚刚讨论的硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。
但我们可能会碰到的一种情况是样本点不是线性可分的,比如:

在这里插入图片描述

这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如:
在这里插入图片描述

对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到支持向量机,就是非线性SVM。
我们用 x x x表示原来的样本点,用 ϕ ( x ) \phi(x) ϕ(x)表示$x $映射到特征新的特征空间后到新向量。那么分割超平面可以表示为: f ( x ) = w ϕ ( x ) + b f(x)=w \phi(x)+b f(x)=(x)+b
对于非线性 SVM 的对偶问题就变成了:

min ⁡ λ [ 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) − ∑ j = 1 n λ i ] s . t . ∑ i = 1 n λ i y i = 0 , λ i ≥ 0 , C − λ i − μ i = 0 \min {\lambda}\left[\frac{1}{2} \sum{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right)-\sum_{j=1}^{n} \lambda_{i}\right]\\ s.t. \quad \sum_{i=1}^{n} \lambda_{i} y_{i}=0, \quad \lambda_{i} \geq 0, \quad C-\lambda_{i}-\mu_{i}=0 minλ[21i=1nj=1nλiλjyiyj(ϕ(xi)ϕ(xj))j=1nλi]s.t.i=1nλiyi=0,λi0,Cλiμi=0

可以看到与线性SVM唯一的不同就是:之前的 ( x i ⋅ x j ) (x_i\cdot x_j) (xixj)变成了 ( ϕ ( x i ) ⋅ ϕ ( x j ) ) \left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right) (ϕ(xi)ϕ(xj))

5.2 核函数的作用

我们不禁有个疑问:只是做个内积运算,为什么要有核函数的呢?
这是因为低维空间映射到高维空间后维度可能会很大,如果将全部样本的点乘全部计算好,这样的计算量太大了。
但如果我们有这样的一核函数 k ( x , y ) = ( ϕ ( x i ) ⋅ ϕ ( x j ) ) k(x,y)=\left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right) k(x,y)=(ϕ(xi)ϕ(xj)) x i x_i xi x j x_j xj在特征空间的内积等于它们在原始样本空间中通过函数 k ( x , y ) k(x,y) k(x,y)计算的结果,我们就不需要计算高维甚至无穷维空间的内积了。
举个例子:假设我们有一个多项式核函数:

k ( x , y ) = ( x ⋅ y + 1 ) 2 k(x, y)=(x \cdot y+1)^{2} k(x,y)=(xy+1)2

带进样本点的后:

k ( x , y ) = ( ∑ i = 1 n ( x i ⋅ y i ) + 1 ) 2 k(x, y)=\left(\sum_{i=1}^{n}\left(x_{i} \cdot y_{i}\right)+1\right)^{2} k(x,y)=(i=1n(xiyi)+1)2

而它的展开项是:

∑ i = 1 n x i 2 y i 2 + ∑ i = 2 n ∑ j = 1 i − 1 ( 2 x i x j ) ( 2 y i y j ) + ∑ i = 1 n ( 2 x i ) ( 2 y i ) + 1 \sum_{i=1}^{n} x_{i}^{2} y_{i}^{2}+\sum_{i=2}^{n} \sum_{j=1}^{i-1}\left(\sqrt{2} x_{i} x_{j}\right)\left(\sqrt{2} y_{i} y_{j}\right)+\sum_{i=1} n\left(\sqrt{2} x_{i}\right)\left(\sqrt{2} y_{i}\right)+1 i=1nxi2yi2+i=2nj=1i1(2 xixj)(2 yiyj)+i=1n(2 xi)(2 yi)+1

如果没有核函数,我们则需要把向量映射成:

x ′ = ( x 1 2 , … , x n 2 , … 2 x 1 , … , 2 x n , 1 ) x^{\prime}=\left(x_{1}^{2}, \ldots, x_{n}^{2}, \ldots \sqrt{2} x_{1}, \ldots, \sqrt{2} x_{n}, 1\right) x=(x12,,xn2,2 x1,,2 xn,1)

然后在进行内积计算,才能与多项式核函数达到相同的效果。
可见核函数的引入一方面减少了我们计算量,另一方面也减少了我们存储数据的内存使用量。

5.3 常见核函数

我们常用核函数有:
线性核函数

k ( x i , x j ) = x i T x j k\left(x_{i}, x_{j}\right)=x_{i}^{T} x_{j} k(xi,xj)=xiTxj

多项式核函数

k ( x i , x j ) = ( x i T x j ) d k\left(x_{i}, x_{j}\right)=\left(x_{i}^{T} x_{j}\right)^{d} k(xi,xj)=(xiTxj)d

高斯核函数

k ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 δ 2 ) k\left(x_{i}, x_{j}\right)=\exp \left(-\frac{\left\|x_{i}-x_{j}\right\|}{2 \delta^{2}}\right) k(xi,xj)=exp(2δ2xixj)

这三个常用的核函数中只有高斯核函数是需要调参的。

6. 优缺点

6.1 优点

有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
能找出对任务至关重要的关键样本(即:支持向量);
采用核技巧之后,可以处理非线性分类/回归任务;
最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

6.2 缺点

  • 训练时间长。当采用SMO算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O ( N 2 ) O(N^2) O(N2),其中 N N N为训练样本的数量;
  • 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O ( N 2 ) O(N^2) O(N2)
  • 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AoDeLuo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值