针对 “支持向量机” 将分为以下几个部分进行介绍:
- 支持向量机 01 - 线性可分支持向量机和线性支持向量机(本篇)
- 支持向量机 02 - SMO(序列最小化)
- 支持向量机 03 - 非线性支持向量机
- 支持向量机 04 - SVR(支持向量回归)
本内容将介绍 线性可分支持向量机 和 线性支持向量机。
支持向量机(Support vector machines,SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题。支持向量机是一种经典的机器学习算法,在小样本数据集的情况下有非常广的应用。
支持向量机包含:线性可分支持向量机、线性支持向量机和非线性支持向量机。
- 线性可分支持向量机:当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器。
- 线性支持向量机:当训练数据近似线性可分时,通过软间隔最大化,学习一个线性的分类器。
- 非线性支持向量机:当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
一、线性可分支持向量机
1.1 间隔与支持向量
给定训练样本集 D = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯   , ( x ( m ) , y ( m ) ) } , y ( i ) ∈ { − 1 , + 1 } D=\{(\mathbf{x}^{(1)}, y^{(1)}), (\mathbf{x}^{(2)}, y^{(2)}), \cdots, (\mathbf{x}^{(m)}, y^{(m)})\}, y^{(i)} \in \{-1, +1\} D={(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))},y(i)∈{−1,+1},分类学习最基本的想法就是基于训练集在样本空间中找到一个划分超平面,将不同类别的样本分开。如图-1 所示的二维样本空间的分类问题,图中 “●” 表示正实例点(即 y = + 1 y=+1 y=+1),“×” 表示负实例点(即 y = − 1 y=-1 y=−1)。我们可以看到存在很多个划分超平面可将两类数据正确分开,那我们到底应该选择哪一条呢?
直观上看,应该去找位于两类训练样本中“正中间”的划分超平面,即图-1 中最粗的那条黑线,因为该划分超平面对训练样本局部扰动的“容忍性”最好。例如,由于训练集的局限性或噪声的因素,训练集外的样本可能比图-1 中训练样本更接近两个类的分割界,这将是需要划分超平面出现错误,而蓝色的超平面受影响最小。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。
在样本空间中,划分超平面可通过如下线性方程来描述
(1) w T x + b = 0 \mathbf{w}^{T} \mathbf{x} + b = 0 \tag{1} wTx+b=0(1)
其中 w = ( w 1 ; w 2 ; ⋯   ; w n ) \mathbf{w} = (w_1;w_2;\cdots;w_n) w=(w1;w2;⋯;wn) 为法向量,决定了超平面的方向; b b b 为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量 w \mathbf{w} w 和 b b b 确定,下面我们将其记为 ( w , b ) (\mathbf{w}, b) (w,b)。样本空间中任意点 x ( i ) \mathbf{x}^{(i)} x(i) 到超平面 ( w , b ) (\mathbf{w}, b) (w,b) 的距离可写为
(2) r i = ∣ w T x ( i ) + b ∣ ∣ ∣ w ∣ ∣ r_i = \frac{|\mathbf{w}^{T} \mathbf{x}^{(i)} + b|} {||\mathbf{w}||} \tag{2} ri=∣∣w∣∣∣wTx(i)+b∣(2)
定义样本空间中的样本点到超平面 ( w , b ) (\mathbf{w}, b) (w,b) 的最短距离为
(3) r ^ = min i = 1 , 2 , ⋯   , m r i = min i = 1 , 2 , ⋯   , m ∣ w T x ( i ) + b ∣ ∣ ∣ w ∣ ∣ \hat{r} = \min_{i=1,2,\cdots,m} r_i = \min_{i=1,2,\cdots,m} \frac{|\mathbf{w}^{T} \mathbf{x}^{(i)} + b|} {||\mathbf{w}||} \tag{3} r^=i=1,2,⋯,mminri=i=1,2,⋯,mmin∣∣w∣∣∣wTx(i)+b∣(3)
假设超平面
(
w
,
b
)
(\mathbf{w}, b)
(w,b) 能将训练样本正确分类,即对于样本空间中的任意样本点
(
x
(
i
)
,
y
(
i
)
)
(\mathbf{x}^{(i)}, y^{(i)})
(x(i),y(i)),存在如下关系
(4)
{
w
T
x
(
i
)
+
b
∣
∣
w
∣
∣
≥
r
^
,
y
(
i
)
=
+
1
w
T
x
(
i
)
+
b
∣
∣
w
∣
∣
≤
−
r
^
,
y
(
i
)
=
−
1
⇒
{
w
T
x
(
i
)
+
b
≥
∣
∣
w
∣
∣
r
^
,
y
(
i
)
=
+
1
w
T
x
(
i
)
+
b
≤
−
∣
∣
w
∣
∣
r
^
,
y
(
i
)
=
−
1
\left \{ \begin{array}{cc} \frac{\mathbf{w}^{T} \mathbf{x}^{(i)} + b} {||\mathbf{w}||} \geq \hat{r}, \quad y^{(i)} = +1 \\\\ \frac{\mathbf{w}^{T} \mathbf{x}^{(i)} + b} {||\mathbf{w}||} \leq -\hat{r}, \quad y^{(i)} = -1 \end{array} \right. \Rightarrow \left \{ \begin{array}{cc} \mathbf{w}^{T} \mathbf{x}^{(i)} + b \geq ||\mathbf{w}||\hat{r} , \quad y^{(i)} = +1 \\\\ \mathbf{w}^{T} \mathbf{x}^{(i)} + b \leq -||\mathbf{w}||\hat{r}, \quad y^{(i)} = -1 \end{array} \right. \tag{4}
⎩⎪⎨⎪⎧∣∣w∣∣wTx(i)+b≥r^,y(i)=+1∣∣w∣∣wTx(i)+b≤−r^,y(i)=−1⇒⎩⎨⎧wTx(i)+b≥∣∣w∣∣r^,y(i)=+1wTx(i)+b≤−∣∣w∣∣r^,y(i)=−1(4)
将式(4)中的条件判断进行融合得到
(5)
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≥
∣
∣
w
∣
∣
r
^
y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \geq ||\mathbf{w}||\hat{r} \tag{5}
y(i)(wTx(i)+b)≥∣∣w∣∣r^(5)
我们可以令
∣
∣
w
∣
∣
r
^
=
1
||\mathbf{w}|| \hat{r} = 1
∣∣w∣∣r^=1,则存在
(6)
r
^
=
1
∣
∣
w
∣
∣
\hat{r} = \frac{1}{||\mathbf{w}||} \tag{6}
r^=∣∣w∣∣1(6)
(7) y ( i ) ( w T x ( i ) + b ) ≥ 1 y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \geq 1 \tag{7} y(i)(wTx(i)+b)≥1(7)
如图 2 所示,在线性可分情况下,被红色圆圈圈住的训练样本点与分离超平面距离最近,它们被称为 支持向量(support vector)。两个异类支持向量到超平面的距离之和为
(8) γ = 2 r ^ = 2 ∣ ∣ w ∣ ∣ \gamma = 2 \hat{r} =\frac{2}{||\mathbf{w}||} \tag{8} γ=2r^=∣∣w∣∣2(8)
被称为“间隔”(margin)。
1.2 硬间隔最大化
支持向量机学习的基本想法是求解能够正确划分训练集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为 硬间隔最大化。
欲找到具有“最大间隔”(maximum margin)的划分超平面,也就是要找到满足式(7)中约束的参数 w \mathbf{w} w 和 b b b,使 γ \gamma γ 最大,即
(9) max w , b 2 ∣ ∣ w ∣ ∣ s . t . y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , 2 , ⋯   , m \begin{aligned} & \max_{\mathbf{w}, b} \frac{2}{||\mathbf{w}||} \\\\ & s.t. \quad y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \geq 1, \quad i = 1,2,\cdots,m \end{aligned} \tag{9} w,bmax∣∣w∣∣2s.t.y(i)(wTx(i)+b)≥1,i=1,2,⋯,m(9)
其中, s . t . s.t. s.t. 表示 subject to,“受限于”的意思。
最大化 2 ∣ ∣ w ∣ ∣ \frac{2}{||\mathbf{w}||} ∣∣w∣∣2 和最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2} ||\mathbf{w}||^{2} 21∣∣w∣∣2是等价的, 于是式(9)可重写为
(10) min w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . 1 − y ( i ) ( w T x ( i ) + b ) ≤ 0 , i = 1 , 2 , ⋯   , m \begin{aligned} & \min_{\mathbf{w}, b} \frac{1}{2} ||\mathbf{w}||^{2} \\\\ & s.t. \quad 1 - y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \leq 0, \quad i = 1,2,\cdots,m \end{aligned} \tag{10} w,bmin21∣∣w∣∣2s.t.1−y(i)(wTx(i)+b)≤0,i=1,2,⋯,m(10)
这就是 线性可分支持向量机 的基本型。
1.3 对偶问题
下面的内容需要对 “拉格朗日乘子法、KKT 条件和拉格朗日对偶性” 的知识有一定的了解,如果你还不了解,可以参阅 机器学习系列 08:深入理解拉格朗日乘子法、KKT 条件和拉格朗日对偶性 。
为了求解线性可分支持向量机的最优化问题式(10),将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解。这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数,进而推广到非线性分类问题。
对式(10)构建拉格朗日函数
(11) L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) L(\mathbf{w},b,\alpha) = \frac{1}{2}||\mathbf{w}||^{2} + \sum_{i=1}^{m}\alpha_i(1-y^{(i)}(\mathbf{w}^{T}\mathbf{x}^{(i)}+b)) \tag{11} L(w,b,α)=21∣∣w∣∣2+i=1∑mαi(1−y(i)(wTx(i)+b))(11)
其中, α i \alpha_i αi 为拉格朗日乘子,并且 α i ≥ 0 \alpha_i \geq 0 αi≥0。则原始问题可表示为如下极小极大问题
(12) min w , b max α i L ( w , b , α ) \min_{\mathbf{w},b} \max_{\alpha_i} L(\mathbf{w},b,\alpha) \tag{12} w,bminαimaxL(w,b,α)(12)
根据拉格朗日对偶性可知,原始问题式(12)的对偶问题为如下极大极小问题
(13) max α i min w , b L ( w , b , α ) \max_{\alpha_i} \min_{\mathbf{w},b}L(\mathbf{w},b,\alpha) \tag{13} αimaxw,bminL(w,b,α)(13)
为了得到对偶问题式(13)的解,需要先求 L ( w , b , α ) L(\mathbf{w}, b, \alpha) L(w,b,α) 对 w \mathbf{w} w, b b b 的极小,在求对 α \alpha α 的极大。
(1)求 min w , b L ( w , b , α ) \min_{\mathbf{w},b}L(\mathbf{w},b,\alpha) minw,bL(w,b,α)
将 L ( w , b , α ) L(\mathbf{w},b,\alpha) L(w,b,α) 分别对 w \mathbf{w} w 和 b b b 求偏导,并将其置为 0,即
(14) ∂ L ( w , b , α ) ∂ w = w − ∑ i = 1 m α i y ( i ) x ( i ) = 0 ⇒ w = ∑ i = 1 m α i y ( i ) x ( i ) \frac{\partial L(\mathbf{w},b,\alpha)}{\partial \mathbf{w}} = \mathbf{w} - \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} = 0 \quad \Rightarrow \quad \mathbf{w} = \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} \tag{14} ∂w∂L(w,b,α)=w−i=1∑mαiy(i)x(i)=0⇒w=i=1∑mαiy(i)x(i)(14)
(15) ∂ L ( w , b , α ) ∂ b = ∑ i = 1 m α i y ( i ) = 0 ⇒ ∑ i = 1 m α i y ( i ) = 0 \frac{\partial L(\mathbf{w},b,\alpha)}{\partial b} = \sum_{i=1}^{m}\alpha_iy^{(i)} = 0 \quad \Rightarrow \quad \sum_{i=1}^{m}\alpha_iy^{(i)} = 0 \tag{15} ∂b∂L(w,b,α)=i=1∑mαiy(i)=0⇒i=1∑mαiy(i)=0(15)
将式(14)和(15)代入式(11)中,得:
(16) L ( w , b , α ) = 1 2 w T w + ∑ i = 1 m α i − w T ∑ i = 1 m α i y ( i ) x ( i ) − b ∑ i = 1 m α i y ( i ) = 1 2 w T ∑ i = 1 m α i y ( i ) x ( i ) + ∑ i = 1 m α i − w T ∑ i = 1 m α i y ( i ) x ( i ) − b ⋅ 0 = ∑ i = 1 m α i − 1 2 ( ∑ i = 1 m α i y ( i ) x ( i ) ) T ∑ i = 1 m α i y ( i ) x ( i ) = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y ( i ) y ( j ) x ( i ) ⋅ x ( j ) \begin{aligned} L(\mathbf{w},b,\alpha) &= \frac{1}{2}\mathbf{w}^{T}\mathbf{w} + \sum_{i=1}^{m}\alpha_i - \mathbf{w}^{T}\sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} - b\sum_{i=1}^{m} \alpha_i y^{(i)} \\\\ &= \frac{1}{2} \mathbf{w}^T \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} + \sum_{i=1}^{m}\alpha_i - \mathbf{w}^{T}\sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} - b\cdot0 \\\\ &= \sum_{i=1}^{m}\alpha_i - \frac{1}{2} \left( \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} \right)^T \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} \\\\ &= \sum_{i=1}^{m}\alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y^{(i)} y^{(j)} \mathbf{x}^{(i)} \cdot \mathbf{x}^{(j)} \end{aligned} \tag{16} L(w,b,α)=21wTw+i=1∑mαi−wTi=1∑mαiy(i)x(i)−bi=1∑mαiy(i)=21wTi=1∑mαiy(i)x(i)+i=1∑mαi−wTi=1∑mαiy(i)x(i)−b⋅0=i=1∑mαi−21(i=1∑mαiy(i)x(i))Ti=1∑mαiy(i)x(i)=i=1∑mαi−21i=1∑mj=1∑mαiαjy(i)y(j)x(i)⋅x(j)(16)
对偶问题转换为
(17) max α ( ∑ 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 α i ≥ 0 , i = 1 , 2 , ⋯   , m \begin{aligned} & \max_\alpha \left( \sum_{i=1}^{m}\alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y^{(i)} y^{(j)} \mathbf{x}^{(i)} \cdot \mathbf{x}^{(j)} \right) \\\\ & \begin{aligned} s.t. \quad &\sum_{i=1}^{m}\alpha_i y^{(i)} = 0 \\\\ & \alpha_i \geq 0,\quad i=1,2,\cdots,m \end{aligned} \end{aligned} \tag{17} αmax(i=1∑mαi−21i=1∑mj=1∑mαiαjy(i)y(j)x(i)⋅x(j))s.t.i=1∑mαiy(i)=0αi≥0,i=1,2,⋯,m(17)
需要注意的是上述过程需要满足以下 KKT 条件
(18) { α i ≥ 0 1 − y ( i ) ( w T x ( i ) + b ) ≤ 0 α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) = 0 \left \{ \begin{array}{cc} \begin{aligned} & \alpha_i \geq 0 \\\\ & 1 - y^{(i)} (\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \leq 0 \\\\ & \alpha_i \left(1 - y^{(i)} (\mathbf{w}^{T} \mathbf{x}^{(i)} + b)\right) = 0 \end{aligned} \end{array} \right. \tag{18} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧αi≥01−y(i)(wTx(i)+b)≤0αi(1−y(i)(wTx(i)+b))=0(18)
(2)求 min w , b L ( w , b , α ) \min_{\mathbf{w},b}L(\mathbf{w},b,\alpha) minw,bL(w,b,α) 对 α \alpha α 的极大
可知式(17)是一个二次规划问题,可使用通用的二次规划算法来求解;然而,该问题的规模正比于训练样本数,这会在实际任务中造成很大的开销。我们可以使用更高效的 SMO(Sequential Minimal Optimization,序列最小化)算法来求解这个问题。当求得 α \alpha α 后,然后可通过其求得 w \mathbf{w} w 和 b b b 的值,最终得到划分超平面 ( w , b ) (\mathbf{w}, b) (w,b)。
我们将在下一篇文章(支持向量机 02 - SMO(序列最小化))中介绍 SMO 算法。
在求得
α
\alpha
α 和
b
b
b 的值后,最终可得到
f
(
x
)
=
w
T
x
+
b
=
∑
i
=
1
m
α
i
y
(
i
)
x
(
i
)
⋅
x
+
b
\begin{aligned} f(\mathbf{x}) &= \mathbf{w}^{T} \mathbf{x} + b \\ & = \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} \cdot \mathbf{x} + b \end{aligned}
f(x)=wTx+b=i=1∑mαiy(i)x(i)⋅x+b
二、线性支持向量机
2.1 软间隔最大化
对于线性可分问题,上述线性可分支持向量机的学习算法是完美的。但是,在现实问题中,训练集往往是线性不可分的,比如在样本中出现噪声或特异点等情况。因为存在部分样本点不满足式(7)的不等式约束,所以线性可分支持向量机对线性不可分的情况不在适用。怎么才能将它扩展到线性不可分的情况呢?这就需要修改硬间隔最大化,使其成为软间隔最大化。
给定训练样本集 D = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯   , ( x ( m ) , y ( m ) ) } , y ( i ) ∈ { − 1 , + 1 } D=\{(\mathbf{x}^{(1)}, y^{(1)}), (\mathbf{x}^{(2)}, y^{(2)}), \cdots, (\mathbf{x}^{(m)}, y^{(m)})\}, y^{(i)} \in \{-1, +1\} D={(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))},y(i)∈{−1,+1},并假设训练样本集不是线性可分的。通常情况是,训练样本集中有一些特异点,将这些特异点除去后,剩下的样本组成的集合是线性可分的。
线性不可分意味着某些样本点 ( x ( i ) , y ( i ) ) (\mathbf{x}^{(i)}, y^{(i)}) (x(i),y(i)) 不能满足式(7)的不等式约束。为了解决这个问题,可以对每个样本点 ( x ( i ) , y ( i ) ) (\mathbf{x}^{(i)}, y^{(i)}) (x(i),y(i)) 引进一个松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξi≥0,约束条件变为
(19) y ( i ) ( w T x ( i ) + b ) ≥ 1 − ξ i y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \geq 1 - \xi_i \tag{19} y(i)(wTx(i)+b)≥1−ξi(19)
同时,对每个松弛变量 ξ i \xi_i ξi,添加一个代价 C C C。目标函数由原来的 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2} ||\mathbf{w}||^2 21∣∣w∣∣2 变为
(20) 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i \frac{1}{2} ||\mathbf{w}||^2 + C\sum_{i=1}^{m} \xi_i \tag{20} 21∣∣w∣∣2+Ci=1∑mξi(20)
其中, C > 0 C>0 C>0 称为惩罚参数,一般由实际问题决定。 C C C 值大时对误分类的惩罚增大, C C C 值小时对误分类的惩罚减小。最小化目标函数式(20)包含两层含义:使 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2} ||\mathbf{w}||^2 21∣∣w∣∣2 尽量小即间隔尽量大,同时使误分类点的个数尽量少, C C C 是调和二者的系数。
相应于线性可分支持向量机中的硬间隔最大化,这里称为 软间隔最大化。
线性支持向量机 的基本型为
(21) min w , b , ξ ( 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i ) s . t . y ( i ) ( w T x ( i ) + b ) ≥ 1 − ξ i , i = 1 , 2 , ⋯   , m ξ i ≥ 0 , i = 1 , 2 , ⋯   , m \begin{aligned} & \min_{\mathbf{w},b,\xi} \left( \frac{1}{2} ||\mathbf{w}||^2 + C \sum_{i=1}^{m}\xi_i \right) \\\\ & \begin{aligned} s.t. \quad & y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \geq 1-\xi_i, \quad i=1,2,\cdots,m \\\\ & \xi_i \geq 0, \quad i=1,2,\cdots,m \end{aligned} \end{aligned} \tag{21} w,b,ξmin(21∣∣w∣∣2+Ci=1∑mξi)s.t.y(i)(wTx(i)+b)≥1−ξi,i=1,2,⋯,mξi≥0,i=1,2,⋯,m(21)
由于现实中训练样本集往往是线性不可分的,相比线性可分支持向量机,线性支持向量机具有更广的适用性。
2.2 对偶问题
对原始问题构建拉格朗日函数
(22) 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 L(\mathbf{w}, b, \xi, \alpha, \beta) = \frac{1}{2} ||\mathbf{w}||^2 + C \sum_{i=1}^{m}\xi_i + \sum_{i=1}^{m} \alpha_i \left(1 - \xi_i - y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b)\right) - \sum_{i=1}^{m} \beta_i \xi_i \tag{22} L(w,b,ξ,α,β)=21∣∣w∣∣2+Ci=1∑mξi+i=1∑mαi(1−ξi−y(i)(wTx(i)+b))−i=1∑mβiξi(22)
其中, α i \alpha_i αi 和 β i \beta_i βi 为拉格朗日乘子,并且 α i ≥ 0 , β ≥ 0 \alpha_i \geq 0, \beta \geq 0 αi≥0,β≥0。则原始问题可表示为如下极小极大问题
(23) min w , b , ξ i max α i , β i L ( w , b , ξ , α , β ) \min_{\mathbf{w}, b, \xi_i} \max_{\alpha_i, \beta_i} L(\mathbf{w}, b, \xi, \alpha, \beta) \tag{23} w,b,ξiminαi,βimaxL(w,b,ξ,α,β)(23)
根据拉格朗日对偶性可知,原始问题式(23)的对偶问题为如下极大极小问题
(24) max α i , β i min w , b , ξ i L ( w , b , α ) \max_{\alpha_i, \beta_i} \min_{\mathbf{w},b, \xi_i}L(\mathbf{w},b,\alpha) \tag{24} αi,βimaxw,b,ξiminL(w,b,α)(24)
(1)求 min w , b , ξ i L ( w , b , ξ , α , β ) \min_{\mathbf{w},b, \xi_i} L(\mathbf{w}, b, \xi, \alpha, \beta) minw,b,ξiL(w,b,ξ,α,β)
将 L ( w , b , ξ , α , β ) L(\mathbf{w}, b, \xi, \alpha, \beta) L(w,b,ξ,α,β) 分别对 w \mathbf{w} w, b b b 和 ξ i \xi_i ξi 求偏导,并将其置为 0,即
(25) ∂ L ( w , b , ξ , α , β ) ∂ w = w − ∑ i = 1 m α i y ( i ) x ( i ) = 0 ⇒ w = ∑ i = 1 m α i y ( i ) x ( i ) \frac{\partial L(\mathbf{w}, b, \xi, \alpha, \beta)} {\partial \mathbf{w}} = \mathbf{w} - \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} = 0 \quad \Rightarrow \quad \mathbf{w} = \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} \tag{25} ∂w∂L(w,b,ξ,α,β)=w−i=1∑mαiy(i)x(i)=0⇒w=i=1∑mαiy(i)x(i)(25)
(26) ∂ L ( w , b , ξ , α , β ) ∂ b = − ∑ i = 1 m α i y ( i ) = 0 ⇒ ∑ i = 1 m α i y ( i ) = 0 \frac{\partial L(\mathbf{w}, b, \xi, \alpha, \beta)} {\partial b} = -\sum_{i=1}^{m} \alpha_i y^{(i)} = 0 \quad \Rightarrow \quad \sum_{i=1}^{m} \alpha_i y^{(i)} = 0 \tag{26} ∂b∂L(w,b,ξ,α,β)=−i=1∑mαiy(i)=0⇒i=1∑mαiy(i)=0(26)
(27) ∂ L ( w , b , ξ , α , β ) ∂ ξ i = C − α i − β i = 0 \frac{\partial L(\mathbf{w}, b, \xi, \alpha, \beta)} {\partial \xi_i} = C - \alpha_i - \beta_i = 0 \tag{27} ∂ξi∂L(w,b,ξ,α,β)=C−αi−βi=0(27)
将式(25)~(27)代入式(22)中,得
(28) min w , b , ξ i L ( w , b , ξ , α , β ) = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y ( i ) y ( j ) x ( i ) ⋅ x ( j ) \min_{\mathbf{w},b, \xi_i} L(\mathbf{w}, b, \xi, \alpha, \beta) = \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y^{(i)} y^{(j)} \mathbf{x}^{(i)} \cdot \mathbf{x}^{(j)} \tag{28} w,b,ξiminL(w,b,ξ,α,β)=i=1∑mαi−21i=1∑mj=1∑mαiαjy(i)y(j)x(i)⋅x(j)(28)
对偶问题转换为
(29) max α i ( ∑ 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 C − α i − β i = 0 α i ≥ 0 β i ≥ 0 , i = 1 , 2 , ⋯   , m \begin{aligned} & \max_{\alpha_i} \left( \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y^{(i)} y^{(j)} \mathbf{x}^{(i)} \cdot \mathbf{x}^{(j)} \right) \\\\ & \begin{aligned} s.t. \quad & \sum_{i=1}^{m} \alpha_i y^{(i)} = 0 \\\\ & C - \alpha_i - \beta_i = 0 \\\\ & \alpha_i \geq 0 \\\\ & \beta_i \geq 0, \quad i = 1,2,\cdots,m \end{aligned} \end{aligned} \tag{29} αimax(i=1∑mαi−21i=1∑mj=1∑mαiαjy(i)y(j)x(i)⋅x(j))s.t.i=1∑mαiy(i)=0C−αi−βi=0αi≥0βi≥0,i=1,2,⋯,m(29)
可以看到上面所求算式中不包含变量 β i \beta_i βi,所以我们可以将约束条件中的 β i \beta_i βi 消去,得到
(30) max α i ( ∑ 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 \begin{aligned} & \max_{\alpha_i} \left( \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y^{(i)} y^{(j)} \mathbf{x}^{(i)} \cdot \mathbf{x}^{(j)} \right) \\\\ & \begin{aligned} s.t. \quad & \sum_{i=1}^{m} \alpha_i y^{(i)} = 0 \\\\ & 0 \leq \alpha_i \leq C \end{aligned} \end{aligned} \tag{30} αimax(i=1∑mαi−21i=1∑mj=1∑mαiαjy(i)y(j)x(i)⋅x(j))s.t.i=1∑mαiy(i)=00≤αi≤C(30)
将式(30)与硬间隔下的对偶问题式(17)对比可知,两者唯一的差别就在于对偶变量的约束不同:前者是 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0≤αi≤C,后者是 0 ≤ α i 0 \leq \alpha_i 0≤αi。同样地,可以采用 SMO 算法求解式(30)。
类似式(18),线性支持向量机,需要满足以下 KKT 条件
(31) { α i ≥ 0 , β i ≥ 0 1 − ξ i − y ( i ) ( w T x ( i ) + b ) ≤ 0 α i ( 1 − ξ i − y ( i ) ( w T x ( i ) + b ) ) = 0 ξ i ≥ 0 β i ξ i = 0 \left \{ \begin{array}{cc} \begin{aligned} & \alpha_i \geq 0, \quad \beta_i \geq 0 \\\\ & 1 - \xi_i - y^{(i)} (\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \leq 0 \\\\ & \alpha_i \left( 1 - \xi_i - y^{(i)} (\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \right) = 0 \\\\ & \xi_i \geq 0 \\\\ & \beta_i \xi_i = 0 \end{aligned} \end{array} \right. \tag{31} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧αi≥0,βi≥01−ξi−y(i)(wTx(i)+b)≤0αi(1−ξi−y(i)(wTx(i)+b))=0ξi≥0βiξi=0(31)
(2)求 min w , b L ( w , b , ξ , α , β ) \min_{\mathbf{w},b}L(\mathbf{w}, b, \xi, \alpha, \beta) minw,bL(w,b,ξ,α,β) 对 α \alpha α 的极大
与线性可分支持向量机中一样,可以使用在 支持向量机 02 - SMO(序列最小化) 中介绍的 SMO 算法求解。
与线性可分支持向量机一样,在求得
α
\alpha
α 和
b
b
b 的值后,最终可得到
f
(
x
)
=
w
T
x
+
b
=
∑
i
=
1
m
α
i
y
(
i
)
x
(
i
)
⋅
x
+
b
\begin{aligned} f(\mathbf{x}) &= \mathbf{w}^{T} \mathbf{x} + b \\ & = \sum_{i=1}^{m} \alpha_i y^{(i)} \mathbf{x}^{(i)} \cdot \mathbf{x} + b \end{aligned}
f(x)=wTx+b=i=1∑mαiy(i)x(i)⋅x+b
2.3 支持向量
如图 3 所示,在线性不可分的情况下,这是的支持向量要比线性可分时的情况复杂一些。图中,分离超平面由黑色实线表示,间隔边界由虚线表示,被红色圆圈圈住的样本点属于 支持向量。我们可以看到,软间隔的支持向量可以在间隔边界上,或者间隔边界与分离超平面之间,或者在分离超平面误分一侧。
对任意训练样本 ( x ( i ) , y ( i ) ) (\mathbf{x}^{(i)}, y^{(i)}) (x(i),y(i)),总有 α i = 0 \alpha_i = 0 αi=0 或 y ( i ) f ( x ( i ) ) = 1 − ξ i y^{(i)} f(\mathbf{x}^{(i)}) = 1 - \xi_i y(i)f(x(i))=1−ξi。若 α i = 0 \alpha_i = 0 αi=0,则 1 − ξ i − y ( i ) ( w T x ( i ) + b ) ≤ 0 1 - \xi_i - y^{(i)} (\mathbf{w}^{T} \mathbf{x}^{(i)} + b) \leq 0 1−ξi−y(i)(wTx(i)+b)≤0,即样本在间隔边界外,样本被正确分类。若 α i > 0 \alpha_i > 0 αi>0,则有 1 − ξ i − y ( i ) ( w T x ( i ) + b ) = 0 1 - \xi_i - y^{(i)} (\mathbf{w}^{T} \mathbf{x}^{(i)} + b) = 0 1−ξi−y(i)(wTx(i)+b)=0,即该样本为支持向量。若 0 < α i < C 0 < \alpha_i < C 0<αi<C,由式(27)可知有 β i > 0 \beta_i > 0 βi>0,又由于 β i ξ i = 0 \beta_i \xi_i = 0 βiξi=0,进而有 ξ i = 0 \xi_i = 0 ξi=0,最终得到 1 − y ( i ) ( w T x ( i ) + b ) = 0 1 - y^{(i)} (\mathbf{w}^{T} \mathbf{x}^{(i)} + b) = 0 1−y(i)(wTx(i)+b)=0,即该样本在最大间隔边界上。若 α i = C \alpha_i = C αi=C,由式(27)可知有 β i = 0 \beta_i = 0 βi=0,此时若 0 < ξ i < 1 0 < \xi_i < 1 0<ξi<1,则样本在间隔边界与分离超平面之间;若 ξ i = 1 \xi_i = 1 ξi=1,则样本正好在分离超平面上;若 ξ i > 1 \xi_i > 1 ξi>1,则样本在分离超平面误分类一侧。
将上面的内容进行总结如下:
- 若 α i = 0 \alpha_i = 0 αi=0:不属于支持向量。样本被正确分类,位于间隔边界外。
(32) α i = 0 ⇔ y ( i ) f ( x ( i ) ) ≥ 1 \alpha_i = 0 \quad \Leftrightarrow \quad y^{(i)} f(\mathbf{x}^{(i)}) \geq 1 \tag{32} αi=0⇔y(i)f(x(i))≥1(32)
- 若 0 < α i < C 0 < \alpha_i < C 0<αi<C:属于支持向量。样本被正确分类,位于最大间隔边界上。
(33) 0 < α i < C ⇔ y ( i ) f ( x ( i ) ) = 1 0 < \alpha_i < C \quad \Leftrightarrow \quad y^{(i)} f(\mathbf{x}^{(i)}) = 1 \tag{33} 0<αi<C⇔y(i)f(x(i))=1(33)
-
若 α i = C \alpha_i = C αi=C:属于支持向量。又分为以下几种情况
- 若 0 < ξ i < 1 0 < \xi_i < 1 0<ξi<1:样本被正确分类,位于间隔边界与分离超平面之间;
- 若 ξ i = 1 \xi_i = 1 ξi=1:样本位于分离超平面上;
- 若 ξ i > 1 \xi_i > 1 ξi>1:样本被错误分类,样本位于分离超平面误分类一侧。
(34) α i = C ⇔ y ( i ) f ( x ( i ) ) ≤ 1 \alpha_i = C \quad \Leftrightarrow \quad y^{(i)} f(\mathbf{x}^{(i)}) \leq 1 \tag{34} αi=C⇔y(i)f(x(i))≤1(34)
由此可以看出 在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。
2.4 合页损失函数
对于线性支持向量机学习来说,其模型为分离超平面 w T x + b = 0 \mathbf{w}^{T} \mathbf{x} + b = 0 wTx+b=0,其学习策略为软间隔最大化,学习算法为凸二次规划。实际上线性支持向量机学习还有另外一种解释,就是最小化以下目标函数
(35) ∑ i = 1 m l h i n g e ( y ( i ) ( w T x ( i ) + b ) − 1 ) + λ ∣ ∣ w ∣ ∣ 2 \sum_{i=1}^{m} l_{hinge}(y^{(i)}(\mathbf{w}^{T} \mathbf{x}^{(i)} + b) - 1) + \lambda||\mathbf{w}||^{2} \tag{35} i=1∑mlhinge(y(i)(wTx(i)+b)−1)+λ∣∣w∣∣2(35)
其中 λ > 0 \lambda > 0 λ>0 是一个常数, l h i n g e l_{hinge} lhinge 是“合页损失函数”
(36) l h i n g e ( z ) = max ( 0 , 1 − z ) l_{hinge}(z) = \max(0, 1-z) \tag{36} lhinge(z)=max(0,1−z)(36)
即表示,当样本点 ( x ( i ) , y ( i ) ) (\mathbf{x}^{(i)}, y^{(i)}) (x(i),y(i)) 被正确分类且函数间隔 y ( i ) ( w T x ( i ) + b ) > 1 y^{(i)}\left(\mathbf{w}^{T}\mathbf{x}^{(i)}+b\right) > 1 y(i)(wTx(i)+b)>1 时,损失为 0 0 0;否则损失为 1 − y ( i ) ( w T x ( i ) + b ) 1 - y^{(i)}\left(\mathbf{w}^{T}\mathbf{x}^{(i)}+b\right) 1−y(i)(wTx(i)+b)。
目标函数式(35)中的第 一项称为 经验风险,第二项称为 结构风险, λ \lambda λ 用于对二者进行折中。实际上它与式(21)是等价的。(具体证明过程在参考书[2] 中有介绍。)
2.5 惩罚因子 C
需要注意的时,在代码实现时,
C
C
C 是一个常数,需要我们自己来定义。在前面的 2.1 节中有这样一句话
C
C
C 值大时对误分类的惩罚增大,
C
C
C 值小时对误分类的惩罚减小。
参考:
[1] 周志华《机器学习》
[2] 李航《统计学习方法》
[3] https://zhuanlan.zhihu.com/p/29604517
[4] https://blog.csdn.net/abcd_d_/article/details/45094473