两遍读懂支持向量机 SVM (软硬 SVM)

0. 理解 SVM 系列

Step-1. 两遍读懂支持向量机 SVM (软硬 SVM)
Step-2. 两遍读懂支持向量机 SVM (Kernel SVM)
Step-3. 两遍读懂支持向量机 SVM (一些细节)


1. SVM 的第一印象

支持向量机 (Support Vector Machine,SVM),也被称为最大间隔分类器,是上世纪 90 年代发明的性能优异的二元分类器。在深度学习热潮之前,SVM 曾经霸占学术界和工业界多年,它的性能较先前的分类方法 (决策树、逻辑回归、贝叶斯) 更加优异,甚至超过了浅层的神经网络。

支持向量机的思路很简单,即找到一个合适的 超平面 (Hyperplane) 使得决策边界的间隔最大化。针对不同的样本分布情况,支持向量机算法可以分为三类:

  • 硬间隔 SVM,主要解决线性可分的样本分布,该类 SVM 直接生成线性模型。
  • 软间隔 SVM,主要解决大体上线性可分但存在部分噪音的样本分布,该类 SVM 通过松弛变量 ξ \xi ξ 和惩罚因子 C C C 来控制 SVM 对噪音数据的容忍度,该类 SVM 也会返回一个线性模型。
  • Kernel SVM,只要解决线性不可分的样本分布,该类 SVM 通过核函数 (Kernel function) 来将原样本空间映射到高维的空间,然后进行线性切分。

在这里插入图片描述

2. 硬间隔 SVM

如之前所展示,硬间隔 SVM (Hard margin SVM) 主要针对线性可分的问题,它试图构造出一个“完美的” 超平面使得其决策边界间的间隔最大化。

2.1 分类规则

以一个二分类问题为例,我们需要将下图中的 2 类样本分离开来。假设决策边界为 w T x + b = 0 w^Tx+b=0 wTx+b=0。其中 w = ( w 1 ; w 2 ) w=(w_1; w_2) w=(w1;w2) 表示参数, b ∈ R b\in R bR 表示截距, x = ( x 1 ; x 2 ) x=(x_1;x_2) x=(x1;x2) 表示输入向量。

在这里插入图片描述

距离决策边界最近的正类和负类样本为 x ( p ) x^{(p)} x(p) x ( n ) x^{(n)} x(n),它们到决策边界的距离为 w T x + b ∣ ∣ w ∣ ∣ \frac{w^Tx+b}{||w||} wwTx+b (此处的 ∣ ∣ w ∣ ∣ ||w|| w 是范数的表达形式,具体计算为 w 1 2 + w 2 2 \sqrt{w_1^2+w_2^2} w12+w22 ),我们称之为边界 (margin)。在逻辑回归中,我们通过决策边界来划分样本,即,

{ w T x + b > 0 → 样 本 为 正 类 w T x + b ≤ 0 → 样 本 为 负 类 \begin{cases} w^Tx+b > 0 \rightarrow 样本为正类 \\ w^Tx+b \leq 0 \rightarrow 样本为负类 \end{cases} {wTx+b>0wTx+b0

SVM 依赖 w T x + b = ± 1 w^Tx+b=\pm1 wTx+b=±1 这两条线 (即图中的两条虚线) 来划分样本,这两条线也叫 SVM 的决策边界。中间的那条实现 L2 叫 SVM 的超平面 (即图中的 L2 w T x + b = 0 w^Tx+b=0 wTx+b=0)。SVM 划分样本类别的标准比逻辑回归更加严格,其划分规则如下。

{ w T x + b > 1 → 样 本 为 正 类 w T x + b ≤ − 1 → 样 本 为 负 类 \begin{cases} w^Tx+b > 1 \rightarrow 样本为正类 \\ w^Tx+b \leq -1 \rightarrow 样本为负类 \end{cases} {wTx+b>1wTx+b1

2.2 优化目标

SVM 要做的就是确保所有正类样本都在 w T x + b = 1 w^Tx+b=1 wTx+b=1 的上方,所有负类样本都在 w T x + b = − 1 w^Tx+b=-1 wTx+b=1 的下方的情况下,最大化直线 w T x + b + 1 = 0 w^Tx+b+1=0 wTx+b+1=0 和直线 w T x + b − 1 = 0 w^Tx+b-1=0 wTx+b1=0 之间的间距。根据几何知识,我们得到这两条直线的距离 d = 2 ∣ ∣ w ∣ ∣ d=\frac{2}{||w||} d=w2。我们需要求解 d d d 的最大值,等价于求 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2 的最小值。因此,要优化的目标可写作如下形式,

arg ⁡ min ⁡ < w , b >   1 2 ∣ ∣ w ∣ ∣ 2 s . t .   y ( i ) ( w T x ( i ) + b ) ≥ 1 ,   ∀   i ∈ [ 1 , m ] \mathop{\arg\min}_{<w,b>} \ \frac{1}{2}||w||^2 \\ s.t.\ y^{(i)}(w^Tx^{(i)}+b)\geq1, \ \forall \ i\in[1,m] argmin<w,b> 21w2s.t. y(i)(wTx(i)+b)1,  i[1,m]

我们假设样本点一共有 m m m 个,其中, x ( i ) x^{(i)} x(i) 表示第 i i i 个样本点 (列向量), y ( i ) y^{(i)} y(i) 表示第 i i i 个样本点的标签 (-1 或 1)。我们要做的就是在满足条件的情况下,求出使 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2 达到最小的 w , b w,b w,b 的值。

上述问题可以总结为:在满足 m m m 个约束 ( y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1... m y^{(i)}(w^Tx^{(i)}+b)\geq1, i=1...m y(i)(wTx(i)+b)1,i=1...m) 下,求函数 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2 的最小值。【注:这里将训练样本 x ( i ) , y ( i ) x^{(i)}, y^{(i)} x(i),y(i) 当做常量计算】。根据拉格朗日乘子法,我们可以上述优化问题转换为如下优化问题。即构造的拉格朗日函数 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ)。于是乎我们要做的是:求解拉格朗日函数 ( L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ)) 的最小值,且并且满足 λ i > 0 \lambda_i > 0 λi>0

L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m λ i × [ 1 − y ( i ) ( w T x ( i ) + b ) ] s . t .   λ i > 0 ,   ∀   i ∈ [ 1 , m ] L(w,b,\lambda) = \frac{1}{2}||w||^2 + \sum_{i=1}^{m}\lambda_i \times [1-y^{(i)}(w^Tx^{(i)}+b)] \\ s.t. \ \lambda_i>0, \ \forall \ i\in[1,m] L(w,b,λ)=21w2+i=1mλi×[1y(i)(wTx(i)+b)]s.t. λi>0,  i[1,m]

拉格朗日乘子法 提供了一种在约束条件下求解函数极值的办法1 (有约束的优化问题 → \rightarrow 无约束的优化问题)。假定要求解极值的函数为 f ( x ) f(x) f(x),其中 x x x 需要满足 k k k 个约束,即 c i ( x ) ≤ 0 , i = 1... k c_i(x)\leq0, i=1...k ci(x)0,i=1...k。我们可以构造朗格朗日函数 L ( x , λ ) = f ( x ) + ∑ i k λ i c i ( x ) L(x,\lambda)=f(x)+\sum_{i}^{k}\lambda_ic_i(x) L(x,λ)=f(x)+ikλici(x),原来的优化问题则转换为求解 L ( x , λ ) L(x,\lambda) L(x,λ) λ i > 0 \lambda_i>0 λi>0 时的极值问题。

2.4 对偶问题的求解 ( λ ∗ \lambda^* λ)

我们将包含拉格朗日函数的原问题 (Prime Problem) 转换为对偶问题 (Dual Problem)。对偶问题分为 2 步求解。1)对 w , b w,b w,b 求解 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ) 的最小值 ( θ ( λ ) = L m i n ( w , b , λ ) \theta(\lambda) = L_{min}(w,b,\lambda) θ(λ)=Lmin(w,b,λ)),2)对 λ \lambda λ 求解 θ ( λ ) \theta(\lambda) θ(λ) 的最大值 ( θ m a x ( λ ) \theta_{max}(\lambda) θmax(λ))。

补充一句,我们为什么要讲原问题转换为对偶问题来求解?答案是原问题包含 w , b , λ w,b,\lambda w,b,λ 三个参数,我们很难直接求出来其最小值的解。因此我们先求出其对偶问题的解,然后再变换得出原问题的解。

Step1. 对 w , b w,b w,b 求解 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ) 的最小值 ( θ ( λ ) = L m i n ( w , b , λ ) \theta(\lambda) = L_{min}(w,b,\lambda) θ(λ)=Lmin(w,b,λ))。

我们针对拉格朗日函数求 w , b w,b w,b 的偏导,得到: ∂ L ∂ w = w − ∑ i = 1 m λ i y ( i ) x ( i ) \frac{\partial L}{\partial w}=w-\sum_{i=1}^{m}\lambda_iy^{(i)}x^{(i)} wL=wi=1mλiy(i)x(i) ∂ L ∂ b = − ∑ i = 1 m λ i y ( i ) \frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\lambda_iy^{(i)} bL=i=1mλiy(i)。朗格朗日函数 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ) 的极小值实在会在偏导数为 0 处取得 (凸函数中极小值即最小值)。于是,

w ∗ = ∑ i = 1 m λ i y ( i ) x ( i ) , ∑ i = 1 m λ i y ( i ) = 0 w^* = \sum_{i=1}^{m}\lambda_iy^{(i)}x^{(i)},\sum_{i=1}^{m}\lambda_iy^{(i)}=0 w=i=1mλiy(i)x(i)i=1mλiy(i)=0

我们将上述的 w ∗ w^* w 代入到 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ) 中,得到 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ) 的最小值,

L m i n ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m λ i [ 1 − y ( i ) ( w T x ( i ) + b ) ] = 1 2 w T w + ∑ i = 1 m λ i − ∑ i = 0 m λ i y ( i ) w T x ( i ) − ∑ i = 1 m λ i y ( i ) b = 1 2 [ ∑ i = 1 m λ i y ( i ) x ( i ) ] T × [ ∑ j = 1 m λ i y ( j ) x ( j ) ] + ∑ i = 1 m λ i − ∑ i = 1 m λ i y ( i ) [ ∑ j = 1 m λ j y ( j ) x ( j ) ] T x ( i ) = − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y ( i ) y ( j ) [ x ( i ) ] T x ( j ) + ∑ i = 1 m λ i L_{min}(w,b,\lambda) = \frac{1}{2}||w||^2 + \sum_{i=1}^{m}\lambda_i [1-y^{(i)}(w^Tx^{(i)}+b)] \\ =\frac{1}{2}w^Tw+\sum_{i=1}^{m}\lambda_i - \sum_{i=0}^{m}\lambda_iy^{(i)}w^Tx^{(i)} - \sum_{i=1}^{m}\lambda_iy^{(i)}b \\ =\frac{1}{2}[\sum_{i=1}^{m}\lambda_iy^{(i)}x{(i)}]^T\times [\sum_{j=1}^{m}\lambda_iy^{(j)}x{(j)}]+\sum_{i=1}^{m}\lambda_i - \sum_{i=1}^{m}\lambda_iy^{(i)}[\sum_{j=1}^{m}\lambda_jy^{(j)}x^{(j)}]^Tx^{(i)}\\ =-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}[x^{(i)}]^Tx^{(j)} + \sum_{i=1}^{m}\lambda_i Lmin(w,b,λ)=21w2+i=1mλi[1y(i)(wTx(i)+b)]=21wTw+i=1mλii=0mλiy(i)wTx(i)i=1mλiy(i)b=21[i=1mλiy(i)x(i)]T×[j=1mλiy(j)x(j)]+i=1mλii=1mλiy(i)[j=1mλjy(j)x(j)]Tx(i)=21i=1mj=1mλiλjy(i)y(j)[x(i)]Tx(j)+i=1mλi

此时 θ ( λ ) = L m i n ( w , b , λ ) \theta(\lambda) = L_{min}(w,b,\lambda) θ(λ)=Lmin(w,b,λ) 。接下来,我们需要求解最优 λ ∗ \lambda^* λ 使得 θ ( λ ) \theta(\lambda) θ(λ) 达到最大值。

一些 SVM 推导课程中,将 ∣ ∣ w ∣ ∣ 2 ||w||^2 w2 写作内积的形式 ∣ ∣ w ∣ ∣ 2 = w ⋅ w ||w||^2=w·w w2=ww,对于 (n,1) 维向量的 w w w 而言, ∣ ∣ w ∣ ∣ = w T w ||w||=w^Tw w=wTw 的写法也是可以接受的。类似的, [ x ( i ) ] T x ( j ) [x^{(i)}]^Tx^{(j)} [x(i)]Tx(j) 也可以写成内积的形式 x ( i ) ⋅ x ( j ) x^{(i)}·x^{(j)} x(i)x(j)

Step2. 对 λ \lambda λ 求解 θ ( λ ) \theta(\lambda) θ(λ) 的最大值 ( θ m a x ( λ ) \theta_{max}(\lambda) θmax(λ))

θ ( λ ) = − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y ( i ) y ( j ) [ x ( i ) ] T x ( j ) + ∑ i = 1 m λ i s . t .   ∑ i = 1 m λ i y ( i ) = 0   且   λ i ≥ 0 ,   ∀ i = 1 , 2 , . . . , m . \theta(\lambda)=-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}[x^{(i)}]^Tx^{(j)} + \sum_{i=1}^{m}\lambda_i \\ s.t. \ \sum_{i=1}^{m}\lambda_iy^{(i)}=0 \ 且 \ \lambda_i \geq 0, \ \forall i=1,2,...,m. θ(λ)=21i=1mj=1mλiλjy(i)y(j)[x(i)]Tx(j)+i=1mλis.t. i=1mλiy(i)=0  λi0, i=1,2,...,m.

求解 θ ( λ ) \theta(\lambda) θ(λ) 最大值的优化问题,一般采用 SMO 算法2。SMO 是一种启发式优化方法,它每次只优化 2 个变量而将其他变量看做是常数。通过该算法,我们可以使 θ ( λ ) \theta(\lambda) θ(λ) 最大的 λ ∗ \lambda^* λ

2.5 超平面的求解 ( w ∗ , b ∗ w^*,b^* w,b)

上一节我们计算出了 λ ∗ \lambda^* λ,接着我们就可以计算出最优的 w ∗ w^* w (即 w ∗ = ∑ i = 1 m λ i ∗ y ( i ) x ( i ) w^*=\sum_{i=1}^{m}\lambda_i^*y^{(i)}x^{(i)} w=i=1mλiy(i)x(i)),继而得到最终的 SVM 超平面 ( w ∗ ) T x + b ∗ = 0 (w^*)^Tx+b^*=0 (w)Tx+b=0。其中 b ∗ b^* b 的值根据支持向量 x ( s ) x^{(s)} x(s) (支持向量即在 SVM 两条边界上的样本点)。

在 SVM 中,约束是 y ( i ) ( 1 − w T x ( i ) − b ) ≤ 0 y^{(i)}(1-w^Tx^{(i)}-b) \leq 0 y(i)(1wTx(i)b)0(i) 当 λ i ≠ 0 \lambda_i \neq 0 λi=0,有 y ( i ) ( 1 − w T x ( i ) − b ) = 0 y^{(i)}(1-w^Tx^{(i)}-b) = 0 y(i)(1wTx(i)b)=0 成立,此时的 x ( i ) x^{(i)} x(i) 在两条虚线上,我们称之为支持向量 x ( s ) x^{(s)} x(s),这些样本点确定了决策平面;(ii) 当 λ i = 0 \lambda_i =0 λi=0,有 y ( i ) ( 1 − w T x ( i ) − b ) ≤ 0 y^{(i)}(1-w^Tx^{(i)}-b) \leq 0 y(i)(1wTx(i)b)0 成立,这些点在决策平面的外侧,对于决策平面的确定没有影响。

在 SVM 中讨论比较多的是 KKT (Karush-Kuhn-Tucker) 条件3,这个条件规定了在拉格朗日函数 L ( x , λ ) L(x,\lambda) L(x,λ) 中要么 λ i = 0 \lambda_i=0 λi=0 要么 c i ( x ) = 0 c_i(x)=0 ci(x)=0,即 λ i c i ( x ) = 0 , ∀ i = 1.. k \lambda_ic_i(x)=0, \forall i=1..k λici(x)=0,i=1..k

为了计算 b ∗ b^* b 值,我们需要使用任一决策向量 x ( s ) x^{(s)} x(s),这些向量满足,

y ( s ) ( ( w ∗ ) T x ( s ) + b ∗ ) = 1 y^{(s)}((w^*)^Tx^{(s)}+b^*)=1 y(s)((w)Tx(s)+b)=1

等式两边同时乘以 y ( s ) y^{(s)} y(s)

[ y ( s ) ] 2 ( ( w ∗ ) T x ( s ) + b ∗ ) = y ( s ) [y^{(s)}]^2((w^*)^Tx^{(s)}+b^*)=y^{(s)} [y(s)]2((w)Tx(s)+b)=y(s)

由于 y ( i ) y^{(i)} y(i) 只能取 +1 或 -1,因此 [ y ( s ) ] 2 = 1 [y^{(s)} ]^2=1 [y(s)]2=1,上式可简化为,

( w ∗ ) T x ( s ) + b ∗ = y ( s ) (w^*)^Tx^{(s)}+b^*=y^{(s)} (w)Tx(s)+b=y(s)

于是我们解出 b ∗ b^* b 的值,

b ∗ = y ( s ) − ( w ∗ ) T x ( s ) = y ( s ) − ∑ i = 1 m λ i ∗ y ( i ) [ x ( i ) ] T x ( s ) b^* = y^{(s)}-(w^*)^Tx^{(s)} = y^{(s)} - \sum_{i=1}^{m}\lambda_i^*y^{(i)}[x^{(i)}]^T x^{(s)} b=y(s)(w)Tx(s)=y(s)i=1mλiy(i)[x(i)]Tx(s)

因此,我们将求得的 λ ∗ \lambda^* λ 和 支持向量 x ( s ) x^{(s)} x(s) 代入上式,就可以求出 b ∗ b^* b 的值了。这样 SVM 的超平面 (即 ( w ∗ ) T x + b ∗ = 0 (w^*)^Tx+b^*=0 (w)Tx+b=0) 就可以求出来了。有了这个超平面,SVM 就可以将新样本进行分类,判断其类别是 +1 还是 -1。

以上就是硬间距 SVM 的推导过程,它通过最大化决策边界与正负类样本的距离来达到稳定的分类效果。与逻辑回归4相比,它的决策边界容错率更强。

2.6. 一个简单的例子

如下图所示,在坐标系上点 x ( 1 ) = ( 0 , 0 ) T , x ( 2 ) = ( 1 , 1 ) T x^{(1)}=(0,0)^T, x^{(2)}=(1,1)^T x(1)=(0,0)T,x(2)=(1,1)T 分别表示负类和正类,即 y ( 1 ) y^{(1)} y(1)=-1, y ( 2 ) y^{(2)} y(2)=+1。请使用 SVM 算法求解出他们的超平面。

在这里插入图片描述

要求解到点 x ( 1 ) , x ( 2 ) x^{(1)}, x^{(2)} x(1),x(2) 距离最大的超平面,我们写出其对偶问题的形式,即 θ ( λ ) \theta(\lambda) θ(λ)

θ ( λ ) = − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y ( i ) y ( j ) [ x ( i ) ] T x ( j ) + ∑ i = 1 m λ i s . t . ∑ i = 1 m λ i y ( i ) = 0 且 λ i ≥ 0 ,   ∀ i = 1... m \theta(\lambda) = -\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}[x^{(i)}]^Tx^{(j)} + \sum_{i=1}^{m}\lambda_i \\ s.t. \sum_{i=1}^m\lambda_iy^{(i)}=0 且 \lambda_i \geq0, \ \forall i=1...m\\ θ(λ)=21i=1mj=1mλiλjy(i)y(j)[x(i)]Tx(j)+i=1mλis.t.i=1mλiy(i)=0λi0, i=1...m

由于只有 2 个样本点,故 m m m=2, λ = ( λ 1 , λ 2 ) T \lambda=(\lambda_1,\lambda_2)^T λ=(λ1,λ2)T,上述 θ ( λ ) \theta(\lambda) θ(λ) 可写成,

θ ( λ ) = − 1 2 ∑ i = 1 m λ i y ( i ) [ x ( i ) ] T ∑ j = 1 m λ i y ( j ) x ( j ) + ∑ i = 1 m λ i = − 1 2 [ λ 1 y ( 1 ) [ x ( 1 ) ] T + λ 2 y ( 2 ) [ x ( 2 ) ] T ] [ λ 1 y ( 1 ) x ( 1 ) + λ 2 y ( 2 ) x ( 2 ) ] + λ 1 + λ 2 = − 1 2 [ λ 1 ( − 1 ) ( 0 , 0 ) + λ 2 ( + 1 ) ( 1 , 1 ) ] [ λ 1 ( − 1 ) ( 0 0 ) + λ 2 ( + 1 ) ( 1 1 ) ] + λ 1 + λ 2 = − λ 1 2 + λ 1 + λ 2 \theta(\lambda)=-\frac{1}{2}\sum_{i=1}^{m}\lambda_iy^{(i)}[x^{(i)}]^T\sum_{j=1}^{m}\lambda_iy^{(j)}x^{(j)}+\sum_{i=1}^{m}\lambda_i \\ = -\frac{1}{2}[\lambda_1y^{(1)}[x^{(1)}]^T+\lambda_2y^{(2)}[x^{(2)}]^T][\lambda_1y^{(1)}x^{(1)}+\lambda_2y^{(2)}x^{(2)}] + \lambda_1+\lambda_2 \\ = -\frac{1}{2}[\lambda_1(-1)(0,0)+\lambda_2(+1)(1,1)][\lambda_1(-1) \begin{pmatrix} 0 \\ 0 \end{pmatrix} +\lambda_2(+1) \begin{pmatrix} 1 \\ 1 \end{pmatrix} ] + \lambda_1+\lambda_2 \\ = -\lambda_1^2 + \lambda_1+\lambda_2 θ(λ)=21i=1mλiy(i)[x(i)]Tj=1mλiy(j)x(j)+i=1mλi=21[λ1y(1)[x(1)]T+λ2y(2)[x(2)]T][λ1y(1)x(1)+λ2y(2)x(2)]+λ1+λ2=21[λ1(1)(0,0)+λ2(+1)(1,1)][λ1(1)(00)+λ2(+1)(11)]+λ1+λ2=λ12+λ1+λ2

因为 θ ( λ ) \theta(\lambda) θ(λ) 满足 ∑ i = 1 m λ i y ( i ) = 0 \sum_{i=1}^m\lambda_iy^{(i)}=0 i=1mλiy(i)=0 条件,该条件展开得到 − λ 1 + λ 2 = 0 -\lambda_1+\lambda_2=0 λ1+λ2=0。于是乎,问题变成了

a r g m a x θ ( λ ) = − λ 1 2 + λ 1 + λ 2 s . t .   λ 1 = λ 2 argmax_{\theta}(\lambda) = -\lambda_1^2 + \lambda_1+\lambda_2 \\ s.t. \ \lambda_1=\lambda_2 argmaxθ(λ)=λ12+λ1+λ2s.t. λ1=λ2

λ 2 \lambda_2 λ2 λ 1 \lambda_1 λ1 替换,我们可以得到使得 θ ( λ ) \theta(\lambda) θ(λ) 最大的 λ ∗ = ( 1 , 1 ) T \lambda^*=(1,1)^T λ=(1,1)T。即 λ 1 \lambda_1 λ1=1, λ 2 \lambda_2 λ2=1。解出 λ ∗ \lambda^* λ 后,我们可以根据它求解出 w ∗ w^* w 的值,根据公式 w ∗ = ∑ i = 1 m λ i ∗ y ( i ) x ( i ) w^*=\sum_{i=1}^{m}\lambda_i^*y^{(i)}x^{(i)} w=i=1mλiy(i)x(i),我们计算出 w ∗ = ( 1 , 1 ) T w*=(1,1)^T w=(1,1)T。又由于 x ( 1 ) x^{(1)} x(1) 是支持向量,它满足 y ( 1 ) ( [ w ∗ ] T x ( 1 ) + b ) = 1 y^{(1)}([w^*]^Tx^{(1)}+b)=1 y(1)([w]Tx(1)+b)=1,我们计算出 b ∗ = − 1 b^*=-1 b=1。于是乎,最终的超平面 ( w ∗ ) T x + b ∗ = 0 (w^*)^Tx+b^*=0 (w)Tx+b=0 应该是,

x 1 + x 2 − 1 = 0 x_1+x_2-1=0 x1+x21=0

此平面能够分离 x ( 1 ) x^{(1)} x(1) x ( 2 ) x^{(2)} x(2) 且有最大的间隔 Margin = 2 ∣ ∣ w ∣ ∣ = 2 1 + 1 = 2 =\frac{2}{||w||}= \frac{2}{\sqrt{1+1}}=\sqrt{2} =w2=1+1 2=2

3. 软间隔 SVM

在实际分类问题中,我们可能找不到上一节中的决策平面使得两类样本线性分割。因为在正类样本中可能掺杂着负类样本,在负类样本中掺杂着正类样本 (你中有我,我中有你)。这个时候我们允许某些噪音点被误分类,这样决策平面显得不那么“硬”,而显得更“软” (我没有在开车!)。

3.1 分类规则

由于有了噪音点 (掺杂在正类样本中负类样本,或 掺杂在负类样本中的正类样本) 存在,我们不能再使用硬间隔 SVM 的分类规则。为了有效的包容那些不能正确划分的正负样本,原有的硬 SVM 的约束条件可能不成立,对于那些不能正确划分的样本而言,我们有如下等式成立,

y ( i ) ( w T x ( i ) + b ) < 1 ,   ∃   i = 1... m y^{(i)}(w^Tx^{(i)}+b) < 1, \ \exist \ i=1...m y(i)(wTx(i)+b)<1,  i=1...m

3.2 优化目标

软件间隔 SVM 的优化目标仍然是最大化间隔 Margin,由于我们引入了松弛变量 ξ \xi ξ,松弛变量的定义为,

ξ i = l ( y ( i ) ( w T x ( i ) + b ) − 1 ) \xi_i = l(y^{(i)}(w^Tx^{(i)}+b)-1) ξi=l(y(i)(wTx(i)+b)1)

这里的函数 l(z) 是损失函数,当 z 值小于 0 时(即认为该点不满足约束)会有惩罚,当 z 值大于 0 时(则认为该点满足约束)则惩罚变小或没有惩罚。具体的 l(z) 有以下几种替代模函数。
在这里插入图片描述
这里要注意的是松弛变量 ξ i \xi_i ξi 是针对每个训练样本 x ( i ) x^{(i)} x(i) 而言的,因此可以看做是对单个训练样本的分类误差,我们当然希望这样的分类误差越小越好。因此,软间隔 SVM 的优化目标变为 最大化间隔 1 2 ∣ ∣ w ∣ ∣ ) 2 \frac{1}{2}||w||)^2 21w)2) 和 分类误差 ξ i \xi_i ξi)之和。即 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i 21w2+Ci=1mξi,故软间隔 SVM 的优化问题可写为,

a r g m i n   1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i s . t . y ( i ) ( w T x ( i ) + b ) ≥ 1 − ξ i   且   ξ i ≥ 0 ,   ∀ i = 1... m . argmin \ \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i \\ s.t. y^{(i)}(w^Tx^{(i)}+b) \geq 1- \xi_i \ 且 \ \xi_i\geq0, \ \forall i=1...m. argmin 21w2+Ci=1mξis.t.y(i)(wTx(i)+b)1ξi  ξi0, i=1...m.

上式中的 C C C 是一个惩罚变量 (常数),该系数表示一个噪音的误分类对于 SVM 的影响程度。 C C C 越大表示噪音的影响很大,换句话说,SVM 不能容忍很多的噪音;相反, C C C 越小表示噪音的影响很小,即 SVM 能容忍很多的噪音。

同样地,我们根据拉格朗日乘子法构造拉格朗日函数 L ( w , b , λ , μ ) L(w,b,\lambda,\mu) L(w,b,λ,μ),则优化问题转换为,

L ( w , b , ξ , λ , μ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m λ i [ 1 − ξ i − y ( i ) ( w T x ( i ) + b ) ] − ∑ i = 1 m μ i ξ i s . t . λ i ≥ 0 , μ i ≥ 0. L(w,b,\xi,\lambda,\mu) = \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i + \sum_{i=1}^{m}\lambda_i[1 - \xi_i - y^{(i)}(w^Tx^{(i)}+b)]-\sum_{i=1}^{m}\mu_i\xi_i \\ s.t. \lambda_i \geq 0, \mu_i \geq 0. L(w,b,ξ,λ,μ)=21w2+Ci=1mξi+i=1mλi[1ξiy(i)(wTx(i)+b)]i=1mμiξis.t.λi0,μi0.

同样地,我们转换成对偶问题,即先针对 w , b , ξ i w,b,\xi_i w,b,ξi L ( w , b , ξ , λ , μ ) L(w,b,\xi,\lambda,\mu) L(w,b,ξ,λ,μ) 的最小值,再针对 λ , μ \lambda,\mu λ,μ 求其最大值。我们对 w , b , ξ i w,b,\xi_i w,b,ξi 求偏导,得到,

∂ L ∂ w = w − ∑ i = 1 m λ i y ( i ) x ( i ) ,    ∂ L ∂ b = − ∑ i = 1 m λ i y ( i ) ,    ∂ L ∂ ξ i = C − λ i − μ i \frac{\partial L}{\partial w}=w-\sum_{i=1}^{m}\lambda_iy^{(i)}x^{(i)} , \ \ \frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\lambda_iy^{(i)} ,\ \ \frac{\partial L}{\partial \xi_i} = C-\lambda_i-\mu_i wL=wi=1mλiy(i)x(i),  bL=i=1mλiy(i),  ξiL=Cλiμi

注意,上式 ∂ L ∂ ξ i \frac{\partial L}{\partial \xi_i} ξiL 是对 ξ i \xi_i ξi 求偏导,不要认为是对 ξ \xi ξ 求偏导。接着,我们令上述 3 个偏导数为零并代入方程 L ( w , b , ξ , λ , μ ) L(w,b,\xi,\lambda,\mu) L(w,b,ξ,λ,μ) 中,得到其最小值 θ ( λ , μ ) \theta(\lambda,\mu) θ(λ,μ),接着我们针对 λ , μ \lambda,\mu λ,μ θ ( λ , μ ) \theta(\lambda,\mu) θ(λ,μ) 最大值。优化问题可写成,

θ ( λ , μ ) = − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y ( i ) y ( j ) [ x ( i ) ] T x ( j ) + ∑ i = 1 m λ i s . t .   ∑ i = 1 m λ i y ( i ) = 0   且   C ≥ λ i ≥ 0 ,   ∀ i = 1 , 2 , . . . , m . \theta(\lambda,\mu)=-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}[x^{(i)}]^Tx^{(j)} + \sum_{i=1}^{m}\lambda_i \\ s.t. \ \sum_{i=1}^{m}\lambda_iy^{(i)}=0 \ 且 \ C \geq \lambda_i \geq 0, \ \forall i=1,2,...,m. θ(λ,μ)=21i=1mj=1mλiλjy(i)y(j)[x(i)]Tx(j)+i=1mλis.t. i=1mλiy(i)=0  Cλi0, i=1,2,...,m.

这时候我们“惊喜的”发现:这个要优化的 θ ( λ , μ ) \theta(\lambda,\mu) θ(λ,μ) 与上一节介绍的 硬间隔SVM 的优化方程 θ ( λ ) \theta(\lambda) θ(λ) 几乎一模一样。唯一不同的地方在于变量 λ i \lambda_i λi 的约束从原先的 λ i ≥ 0 \lambda_i \geq 0 λi0 变为 C ≥ λ i ≥ 0 C \geq \lambda_i \geq0 Cλi0

于是,我们沿用之前解 硬间隔 SVM 的方法去求解 软间隔 SVM 的 λ ∗ \lambda^* λ,然后反解出 w ∗ , b ∗ w^*,b^* w,b,即最终的超平面 ( w ∗ ) T x + b = 0 (w^*)^Tx+b=0 (w)Tx+b=0 就可以解出来了。


  1. Wikipedia. 拉格朗日乘数. Link ↩︎

  2. 刘建平Pinard. SMO 算法原理. Link ↩︎

  3. 力学渣. 浅谈最优化问题的KKT条件. Link ↩︎

  4. chikily_yongfeng. 再读线性回归 Linear Regression (逻辑回归). Link ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值