前言
机器学习实战系列之学习笔记主要是本人进行学习机器学习的整理。本系列所有代码是用python3编写,并使用IDE Pycharm在Windows平台上编译通过。本系列所涉及的所有代码和资料可在我的github或者码云上下载到,gitbub地址:https://github.com/mcyJacky/MachineLearning,码云地址:https://gitee.com/mcyHome/MachineLearning,如有问题,欢迎指出~。
一、SVM解决什么问题
支持向量机,即SVM,全称是(Support Vector Machines),它是一种二类分类模型。下面我们先简单解释下这个概念,如图1.1所示为某数据集的分布,用红蓝两种颜色表示。
一个问题就是,能否画出一条直线将红色点和蓝色点分开呢?答案是当然可以,如图1.2所示,我们可以用黑色实线A和B分别将数据分开。
从图1.2可知,我们很容易就能画出一条直线将两组数据分开,在这种情况下这组数据是线性可分数据。将上述数据集分隔开的直线称为分隔超平面(separating hyperplane)。上述给的例子数据点都在二维平面上,所以分隔超平面就只是一条直线。如果所给的数据是三维的,那么此时分隔数据就是一个面。显而易见,更高维的情况可以依次类推。如果数据集是1024维的,那么就需要一个1023维地某某对象来对数据进行分隔。这个1023维的对象就叫做超平面(hyperplane),也就是分类的决策面。即分布在超平面一侧的所有数据都属于某个类别,而分布在另一侧的所有数据则属于另一个类别。
我们希望能采用这种方式来构建分类器,即如果数据点离决策边界越远,那么其最后的预测结果也就越可信。图1.2中A、B两条直线,它们都能将数据分开,但是哪一条最好呢?SVM算法认为图中分类器A的性能优于分类器B。依据的是A的分类间隔大(点到分隔面的距离被称为间隔),即我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能的近。其中,那个最大间隔的决策面A就是SVM要寻找的最优解,而这个最优解对应的两侧虚线所穿过的样本点,就是SVM的支持样本点,称为“支持向量”。
表面上看优化的对象似乎是这个决策面的方向和位置,但实际上最优决策面的方向和位置完全取决于选择哪些样本点作为支持向量(下面会详细推导)。
二、SVM数据建模
一个最优化的问题通常有两个基本的因素:①目标函数,也就是你希望什么东西的什么指标达到最好;②优化对象,你期望改变哪些因素使你的目标函数达到最优。在线性SVM算法中,目标函数显然就是那个“分类间隔”,而优化对象则是决策面,下面首先对这两个对象进行描述。
2.1 优化对象(决策面)
我们用一个二维空间来来进行描述决策面。假设我们已知线性方程: (2.1) y = a x + b y=ax+b \tag{2.1} y=ax+b(2.1)现在我们做个小变化,让式(2.1)中的 x x x变成 x 1 x_1 x1, y y y变成 x 2 x_2 x2,于是公式(2.1)的方程变为: (2.2) a x 1 − x 2 + b = 0 ax_1-x_2+b =0\tag{2.2} ax1−x2+b=0(2.2)用向量形式表示为: (2.3) [ a , − 1 ] [ x 1 x 2 ] + b = 0 [a,-1] \left[ \begin{matrix} x_1\\ x_2 \\ \end{matrix} \right] +b = 0 \tag{2.3} [a,−1][x1x2]+b=0(2.3)
现在我们又对式(2.3)进行变换,写出一个更加一般的向量表达式: (2.4) w T x + b = 0 w^Tx+b=0 \tag{2.4} wTx+b=0(2.4)其中, w = [ w 1 , w 2 ] T , x = [ x 1 , x 2 ] T w=[w_1,w_2]^T,x=[x_1,x_2]^T w=[w1,w2]T,x=[x1,x2]T,而在式子中 w 1 = a , w 2 = − 1 。 w_1=a,w_2=-1。 w1=a,w2=−1。我们从高等数学空间曲线方程构造可知,在式(2.3)中 w = [ a , − 1 ] T w=[a,-1]^T w=[a,−1]T表示曲线方程的法向量,b为曲线方程的截距。如果将其推广到n维空间,曲线方程就变成了超平面方程,唯一不同的是 w = [ w 1 , w 2 , . . . , w n ] T , x = [ x 1 , x 2 . . . , x n ] T w=[w_1,w_2,...,w_n]^T,x=[x_1,x_2...,x_n]^T w=[w1,w2,...,wn]T,x=[x1,x2...,xn]T。
2.2 目标函数(分类间隔)
前面我们已经介绍分类间隔的定义及其直观的几何意义。间隔的大小实际上就是支持向量对应的样本点到决策面的距离的二倍,如图2.1所示。
我们通过点到直线的距离推导公式可以简单得出支持向量样本点至决策面的距离: (2.5) d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d=\frac{|w^Tx+b|}{||w||} \tag{2.5} d=∣∣w∣∣∣wTx+b∣(2.5)其中 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣表示向量的模。而在求 W W W最大间隔,也就是求 d d d的最大化。目前,看来我们已经找到目标函数的数学形式。
2.3 约束条件分析
下面我们先探讨下亟待解决的问题:
- 并不是所有的方向都存在能够实现100%正确分类的决策面,我们如何判断一条直线是否能够将所有的样本点都正确分类?
- 即使我们正确的找到了决策面的方向,我们还要注意决策面的位置应该在间隔区域的中轴线上,所以用来确定决策面位置的截距 b b b也不能自由的优化,而是受到决策面和样本点分布的约束。
- 即便取到了合适的方向和截距,式(2.4)中的 x x x也不是随便的样本点,而是支持向量对应的样本点。
以上的三条麻烦的本质就是“约束条件”,也就是我们要优化的变量的取值范围收到了限制和约束。下面我们通过一些技巧,将三条约束条件融合在一个不等式中。
首先,我们考虑一个决策面是否能够将所有的样本都正确分类的约束。在图2.1中样本点分成两类(红点和蓝点),我们为每一个样本点
x
i
x_i
xi加上一个类标签
y
i
y_i
yi:
(2.6)
y
i
=
{
+
1
,
蓝
点
−
1
,
红
的
y_i= \left \{\begin{array}{cc} +1, &蓝点\\ -1, &红的 \end{array}\right \tag{2.6}.
yi={+1,−1,蓝点红的(2.6)
如果我们的决策面方程能够完全正确地对图2.1进行分类,就会满足如下公式:
(2.7)
{
w
T
x
i
+
b
>
0
,
y
i
=
1
w
T
x
i
+
b
<
0
,
y
i
=
−
1
\left \{\begin{array}{cc} w^Tx_i+b > 0, &y_i=1\\ w^Tx_i+b <0, &y_i=-1 \end{array}\right \tag{2.7}.
{wTxi+b>0,wTxi+b<0,yi=1yi=−1(2.7)
如果我们要求再高一点,假设决策面正好处在间隔区域的中轴线上,并且相应的支持向量对应的样本点到决策面的距离为
d
d
d,那么式(2.7)就进一步写成:
(2.8)
{
(
w
T
x
i
+
b
)
/
∣
∣
w
∣
∣
≥
d
,
∀
y
i
=
1
(
w
T
x
i
+
b
)
/
∣
∣
w
∣
∣
≤
−
d
,
∀
y
i
=
−
1
\left \{\begin{array}{cc} (w^Tx_i+b)/||w|| \geq d, &\forall y_i=1\\ (w^Tx_i+b)/||w|| \leq-d, &\forall y_i=-1 \end{array}\right \tag{2.8}.
{(wTxi+b)/∣∣w∣∣≥d,(wTxi+b)/∣∣w∣∣≤−d,∀yi=1∀yi=−1(2.8)
将公式(2.8)两边同时除以d,得到:
(2.9)
{
(
w
d
T
x
i
+
b
d
)
≥
1
,
∀
y
i
=
1
(
w
d
T
x
i
+
b
d
)
≤
−
1
,
∀
y
i
=
−
1
\left \{\begin{array}{cc} (w_d^Tx_i+b_d) \geq 1, &\forall y_i=1\\ (w_d^Tx_i+b_d) \leq-1, &\forall y_i=-1 \end{array}\right \tag{2.9}.
{(wdTxi+bd)≥1,(wdTxi+bd)≤−1,∀yi=1∀yi=−1(2.9)其中
w
d
=
w
∣
∣
w
∣
∣
d
,
b
d
=
b
∣
∣
w
∣
∣
d
w_d=\frac{w}{||w||d},b_d=\frac{b}{||w||d}
wd=∣∣w∣∣dw,bd=∣∣w∣∣db,因为直线
w
d
T
x
+
b
d
=
0
和
w
T
+
b
=
0
w_d^Tx+b_d=0和w^T+b=0
wdTx+bd=0和wT+b=0其实是同一条直线,所以我们将参数
w
d
和
b
d
w_d和b_d
wd和bd重新取个名字为
w
和
b
w和b
w和b。所以对于存在分类间隔的两类样本点,我们一定可以找到决策面,使其对于所有的样本点满足下面的条件:
(2.10)
{
(
w
T
x
i
+
b
)
≥
1
,
当
y
i
=
1
(
w
T
x
i
+
b
)
≤
−
1
,
当
y
i
=
−
1
\left \{\begin{array}{cc} (w^Tx_i+b) \geq 1, & 当y_i=1\\ (w^Tx_i+b) \leq-1, &当y_i=-1 \end{array}\right \tag{2.10}.
{(wTxi+b)≥1,(wTxi+b)≤−1,当yi=1当yi=−1(2.10)式(2.10)为SVM优化问题的约束条件的基本描述。
公式(2.10)中
(
w
T
x
i
+
b
)
=
1
或
者
(
w
T
x
i
+
b
)
=
−
1
(w^Tx_i+b) =1或者(w^Tx_i+b) = -1
(wTxi+b)=1或者(wTxi+b)=−1在什么情况下会发生呢?只有当
x
i
x_i
xi是决策面
(
w
T
x
i
+
b
)
=
0
(w^Tx_i+b) =0
(wTxi+b)=0所对应的支持向量样本点时才会出现。这样我们又可以对目标函数进行简化。
(2.11)
d
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
=
1
∣
∣
w
∣
∣
d=\frac{|w^Tx+b|}{||w||}=\frac{1}{||w||} \tag{2.11}
d=∣∣w∣∣∣wTx+b∣=∣∣w∣∣1(2.11)式(2.11)的几何意义就是,支持向量样本点到决策面的距离。我们本来是求
W
=
2
d
W=2d
W=2d最大化,现在就可以转化为求
∣
∣
w
∣
∣
||w||
∣∣w∣∣最小化问题,也等价于求
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2最小化问题。
另外,我们对约束条件(2.10)进一步精炼,把类标签
y
i
y_i
yi和两个不等式相乘:
(2.12)
y
i
(
w
T
x
i
+
b
)
≥
1
,
∀
x
i
y_i(w^Tx_i+b) \geq1, \forall x_i \tag{2.12}
yi(wTxi+b)≥1,∀xi(2.12)
至目前为止,我们可以给出线性SVM最优化问题的数学描述了:
(2.13)
{
m
i
n
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
.
\begin{cases} min_{w,b}\ \frac{1}{2}||w||^2 \\ s.t. \quad y_i(w^Tx_i+b) \geq1, &i=1,2,...,m \end{cases} \tag{2.13}.
{minw,b 21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m.(2.13)
2.4 有约束最优化问题的数学模型
1)有约束问题的几何意象
约束条件一般分为等式约束和不等式约束,前者表示为
g
(
x
)
=
0
g(x)=0
g(x)=0;后者表示为
g
(
x
)
≤
0
g(x)\leq0
g(x)≤0。下图2.3就是等式约束和不等式约束最优解的几何意象。
从图2.3可知,等式约束条件的可行解区域是一个超平面,最优解位于等值线与超平面上。而不等式约束的可行解区域是超平面和其一侧的对应区域,最优解位于可行解区域内。
2)拉格朗日函数构造
我们通过构造拉格朗日函数,可以将等式约束优化问题转化为无约束优化问题:
(2.14)
L
(
x
,
λ
)
=
f
(
x
)
+
λ
g
(
x
)
L(x,λ)=f(x)+λg(x) \tag{2.14}
L(x,λ)=f(x)+λg(x)(2.14)
新的拉格朗日目标函数有两个自变量
x
,
λ
x,λ
x,λ,我们因此可以通过求解无约束优化问题的思想,将公式(2.14)对
x
,
λ
x,λ
x,λ求导,令结果为零,就可以建立两个方程求出最优解。可我们回头看我们需要求解SVM的目标函数公式(2.13)是一个不等式约束,那应该怎么办呢?下面我们KKT条件。
我们知道函数
f
(
x
)
f(x)
f(x)和函数
g
(
x
)
g(x)
g(x)在等值线的最优解点
x
∗
x^*
x∗处相切,即两者在
x
∗
x^*
x∗点的梯度方向相同或相反。我们可以描述最优解
x
∗
x^*
x∗的一个特性:
(2.15)
∇
f
(
x
∗
)
+
λ
∇
g
(
x
∗
)
=
0
\nabla f(x^*)+λ\nabla g(x^*)=0 \tag{2.15}
∇f(x∗)+λ∇g(x∗)=0(2.15)其中
∇
表
示
梯
度
\nabla表示梯度
∇表示梯度。
3)KKT条件
对于不等式约束条件
g
(
x
)
≤
0
g(x)\leq0
g(x)≤0的情况,如图2.4所示,最优解所在的位置
x
∗
x^*
x∗有两种可能,即或者在
g
(
x
)
=
0
g(x)=0
g(x)=0的边界上或者在可行解区域内部满足不等式
g
(
x
)
<
0
g(x)<0
g(x)<0的地方。
a.第一种情况: 最优解位于边界上,就相当于约束条件为
g
(
x
)
=
0
g(x)=0
g(x)=0,注意图2.4中
f
(
x
)
f(x)
f(x)的最优解在可行解区域外面,所以函数
f
(
x
)
f(x)
f(x)的变化趋势是“在可行解区域内侧较大而区域外侧较小”,与之对应的函数
g
(
x
)
g(x)
g(x)在可行解区域内小于0,在区域外大于0。这就意味着目标函数
f
(
x
)
f(x)
f(x)的梯度方向与约束条件函数
g
(
x
)
g(x)
g(x)梯度方向相反,由式(2.15),可以推断出参数
λ
>
0
λ>0
λ>0。
b.第二种情况: 如果在区域内,相当于约束条件没有起作用,即
λ
=
0
λ=0
λ=0。因此,整个两种情况,可以写出一个约束条件的统一表达,如下:
(2.16)
{
g
(
x
)
≤
0
λ
≥
0
λ
g
(
x
)
=
0
.
\begin{cases} g(x)\leq0 \\ λ \geq0 \\ λg(x)=0 \end{cases} \tag{2.16}.
⎩⎪⎨⎪⎧g(x)≤0λ≥0λg(x)=0.(2.16)
其中第一个式子是不等式约束本身,第二个式子是对拉格朗日乘子的描述,第三个式子是第一种情况和第二种情况的整合:在第一种情况中,
λ
>
0
,
g
(
x
)
=
0
λ>0,g(x)=0
λ>0,g(x)=0;在第二种情况下,
λ
=
0
,
g
(
x
)
<
0
λ=0,g(x)<0
λ=0,g(x)<0。公式(2.16)就称为Karush-Kuhn-Tucker条件,简称KKT条件。
我们现在知道问题的约束条件是一个 g ( x ) ≤ 0 g(x)\leq0 g(x)≤0,而KKT条件又多弄出了两条,这不是让问题变得更加复杂了吗?答案当然没有变得复杂,因为KKT条件是对最优解的约束,而原始问题中的约束条件是对可行解的约束;KKT条件的推导对于后面马上要介绍的拉格朗日对偶问题的推导很重要。
2.5 拉格朗日对偶算法
接下来就是重头戏(拉格朗日对偶),我们先从宏观的视野了解下拉格朗日对偶问题出现的原因和背景。
按照之前等式约束条件下的优化问题的求解思路,构造拉格朗日方程的目的是将约束条件放在目标函数中,从而将有约束优化问题转换为无约束优化问题。我们仍然秉承这一思路去解决不等式约束条件下的优化问题,那么如何针对不等式约束条件下的优化问题构建拉格朗日函数呢?
因为我们求解的是最小化问题,所以一个直观的想法就是如果我能构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大。那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化是等价的问题。
拉格朗日对偶问题其实就是沿着这一思路往下走的过程中,为了方便求解而使用的一种技巧。于是在这里出现了三个问题:1)有约束的原始目标函数优化问题;2)新构造的拉格朗日目标函数优化问题;3)拉格朗日对偶函数的优化问题。我们希望这三个问题由完全相同的最优解,而数学技巧上通常第三个问题(拉格朗日对偶优化问题)最好解决。
1)原始目标函数(有约束条件)
接下来为了讨论一般性,我们把等式约束条件也放进来,进而有约束的原始目标函数优化问题重新给出统一描述:
(2.17)
{
m
i
n
x
f
(
x
)
s
.
t
.
h
i
(
x
)
=
0
,
i
=
1
,
2
,
.
.
,
m
g
i
(
x
)
≤
0
,
j
=
1
,
2
,
.
.
,
n
\begin{cases} min_x\quad f(x) \\ s.t.\quad h_i(x)=0,i=1,2,..,m \\ \quad \quad \ \ g_i(x) \leq0,j=1,2,..,n \end{cases} \tag{2.17}
⎩⎪⎨⎪⎧minxf(x)s.t.hi(x)=0,i=1,2,..,m gi(x)≤0,j=1,2,..,n(2.17)公式(2.17)表示
m
m
m个等式约束条件和
n
n
n个不等式约束条件下的目标函数
f
(
x
)
f(x)
f(x)的最小化问题。
2)新构造的拉格朗日目标函数
接下来我们构造一个基于广义拉格朗日函数的新目标函数,记为:
(2.18)
θ
p
(
x
)
=
max
α
,
β
;
β
j
≥
0
L
(
x
,
α
,
β
)
θ_p(x) = \max \limits_{α,β;β_j \geq0}\ L(x,α,β) \tag{2.18}
θp(x)=α,β;βj≥0max L(x,α,β)(2.18)
其中
L
(
x
,
α
,
β
)
L(x,α,β)
L(x,α,β)为广义的拉格朗日函数,定义为:
(2.19)
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
k
=
1
m
α
i
h
i
(
x
)
+
∑
j
=
1
n
β
j
g
j
(
x
)
L(x,α,β) = f(x) + \sum_{k=1}^mα_ih_i(x) + \sum_{j=1}^nβ_jg_j(x) \tag{2.19}
L(x,α,β)=f(x)+k=1∑mαihi(x)+j=1∑nβjgj(x)(2.19)其中
α
=
[
α
1
,
α
2
,
.
.
.
,
α
m
]
T
,
β
=
[
β
1
,
β
2
,
.
.
.
,
β
n
]
T
α=[α_1,α_2,...,α_m]^T,β=[β_1,β_2,...,β_n]^T
α=[α1,α2,...,αm]T,β=[β1,β2,...,βn]T为引入的系数,也是求解式(2.18)最大化问题的变量。将式(2.19)带入式(2.18)有:
(2.20)
θ
p
(
x
)
=
f
(
x
)
+
max
α
,
β
;
β
j
≥
0
[
∑
k
=
1
m
α
i
h
i
(
x
)
+
∑
j
=
1
n
β
j
g
j
(
x
)
]
θ_p(x) =f(x) + \max \limits_{α,β;β_j \geq0} \Big[ \sum_{k=1}^mα_ih_i(x) + \sum_{j=1}^nβ_jg_j(x)\Big] \tag{2.20}
θp(x)=f(x)+α,β;βj≥0max[k=1∑mαihi(x)+j=1∑nβjgj(x)](2.20)
对比公式(2.17)中的约束条件,我们从可行解区域和可行解区域外两个部分对公式(2.20)的取值进行分析,将可行解区域记为
Φ
Φ
Φ,当
β
j
≥
0
,
i
=
1
,
2
,
.
.
,
n
β_j \geq0,i=1,2,..,n
βj≥0,i=1,2,..,n时有:
可行解区域内: 由于
h
i
(
x
)
=
0
,
g
i
(
x
)
≤
0
且
系
数
β
j
≥
0
h_i(x)=0,g_i(x) \leq 0且系数β_j \geq0
hi(x)=0,gi(x)≤0且系数βj≥0,所以有:
(2.21)
max
α
,
β
;
β
j
≥
0
[
∑
k
=
1
m
α
i
h
i
(
x
)
+
∑
j
=
1
n
β
j
g
j
(
x
)
]
=
0
,
f
o
r
x
∈
Φ
\max \limits_{α,β;β_j \geq0} \Big[ \sum_{k=1}^mα_ih_i(x) + \sum_{j=1}^nβ_jg_j(x)\Big] = 0,for \ x \in Φ\tag{2.21}
α,β;βj≥0max[k=1∑mαihi(x)+j=1∑nβjgj(x)]=0,for x∈Φ(2.21)
可行解区域外: 式(2.17)中至少有一组约束条件没有得到满足。如果
h
i
(
x
)
≠
0
h_i(x) \neq 0
hi(x)̸=0,则可以调整系数
α
i
α_i
αi,就可以使
α
i
h
i
(
x
)
→
+
∞
α_ih_i(x)\rightarrow +\infty
αihi(x)→+∞;如果
g
j
(
x
)
>
0
g_j(x) > 0
gj(x)>0,就可以调整系数
β
j
g
j
(
x
)
→
+
∞
β_jg_j(x) \rightarrow +\infty
βjgj(x)→+∞,这就表示:
(2.22)
max
α
,
β
;
β
j
≥
0
[
∑
k
=
1
m
α
i
h
i
(
x
)
+
∑
j
=
1
n
β
j
g
j
(
x
)
]
=
+
∞
,
f
o
r
x
∉
Φ
\max \limits_{α,β;β_j \geq0} \Big[ \sum_{k=1}^mα_ih_i(x) + \sum_{j=1}^nβ_jg_j(x)\Big] = +\infty,for \ x \notin Φ\tag{2.22}
α,β;βj≥0max[k=1∑mαihi(x)+j=1∑nβjgj(x)]=+∞,for x∈/Φ(2.22)
由式(2.21)和式(2.22)可以得到我们新构造的目标函数的取值分布情况:
(2.23)
θ
p
(
x
)
=
{
f
(
x
)
,
f
o
r
x
∈
Φ
+
∞
,
f
o
r
x
∉
Φ
θ_p(x)= \left \{\begin{array}{cc} f(x), &for \ x \in Φ\\ +\infty, &for \ x \notin Φ \end{array}\right \tag{2.23}.
θp(x)={f(x),+∞,for x∈Φfor x∈/Φ(2.23)
式(2.23)正是与我们的构想,即建立一个在可行解区域内与原目标函数相同,在可行解区域外函数值趋势于无穷大的新函数。现在约束条件已经没了,接下来我们可以求解公式(2.24):
(2.24)
min
x
[
θ
p
(
x
)
]
\min\limits_{x}[θ_p(x)] \tag{2.24}
xmin[θp(x)](2.24)
这样这个问题与有约束条件下的原始目标函数
f
(
x
)
f(x)
f(x)最小化问题的解等价。
3)对偶问题
接下来我们需要求解上述目标函数,即:
(2.25)
min
x
[
θ
p
(
x
)
]
=
min
x
[
max
α
,
β
;
β
j
≥
0
L
(
x
,
α
,
β
)
]
\min\limits_{x}[θ_p(x)] = \min\limits_{x}[\max \limits_{α,β;β_j \geq0} L(x,α,β)] \tag{2.25}
xmin[θp(x)]=xmin[α,β;βj≥0maxL(x,α,β)](2.25)
在求解式(2.25)时,我们很难从公式中把参数
α
,
β
α,β
α,β拿掉,这样我们就无法通过
∂
θ
p
(
x
)
∂
x
=
0
\frac{\partial θ_p(x)}{\partial x} = 0
∂x∂θp(x)=0来求解最优解
x
∗
x^*
x∗。因此,我们应用拉格朗日的对偶性(这里不在证明),通过求解对偶问题得到原始问题的最优解。即:
(2.26)
min
x
[
max
α
,
β
;
β
j
≥
0
L
(
x
,
α
,
β
)
]
=
max
α
,
β
;
β
j
≥
0
[
min
x
L
(
x
,
α
,
β
)
]
\min\limits_{x}[\max \limits_{α,β;β_j \geq0} L(x,α,β)] = \max\limits_{α,β;β_j \geq0}[\min \limits_{x} L(x,α,β)] \tag{2.26}
xmin[α,β;βj≥0maxL(x,α,β)]=α,β;βj≥0max[xminL(x,α,β)](2.26)以上式子(2.26)具有相同的解
x
∗
,
α
∗
,
β
∗
x^*,α^*,β^*
x∗,α∗,β∗。
4)实际求解过程
至此,我们已经分析完线性SVM的基本理论。现在,我们对式(2.13)引入拉格朗日乘子
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
N
α_i \geq 0, i=1,2,...N
αi≥0,i=1,2,...N,为了表示方便
w
T
w^T
wT用
w
w
w表示,样本点的个数统一变为
N
N
N个,则构建拉格朗日函数:
(2.27)
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
N
α
i
y
i
(
w
x
i
+
b
)
+
∑
i
=
1
N
α
i
L(w,b,α) = \frac{1}{2}||w||^2 - \sum_{i=1}^N α_iy_i(wx_i + b) + \sum_{i=1}^N α_i \tag{2.27}
L(w,b,α)=21∣∣w∣∣2−i=1∑Nαiyi(wxi+b)+i=1∑Nαi(2.27)
下面求解式(2.27)方程过程:
①求
min
w
,
b
L
(
w
,
b
,
α
)
\min \limits_{w,b} \ L(w,b,α)
w,bmin L(w,b,α)
将拉格朗日函数
L
(
w
,
b
,
α
)
L(w,b,α)
L(w,b,α)分别对
w
,
b
w,b
w,b求偏导数并令其为0:
∇
w
L
(
w
,
b
,
α
)
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
\nabla_wL(w,b,α) = w - \sum_{i=1}^N α_iy_ix_i = 0
∇wL(w,b,α)=w−i=1∑Nαiyixi=0
∇
b
L
(
w
,
b
,
α
)
=
∑
i
=
1
N
α
i
y
i
=
0
\nabla_bL(w,b,α) = \sum_{i=1}^N α_iy_i = 0
∇bL(w,b,α)=i=1∑Nαiyi=0
得到:
(2.28)
w
=
∑
i
=
1
N
α
i
y
i
x
i
w = \sum_{i=1}^N α_iy_ix_i \tag{2.28}
w=i=1∑Nαiyixi(2.28)
(2.29)
∑
i
=
1
N
α
i
y
i
=
0
\sum_{i=1}^N α_iy_i = 0 \tag{2.29}
i=1∑Nαiyi=0(2.29)
下面将式(2.28)带入函数式(2.27),并利用式(2.29),计算可得:
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
y
i
(
(
∑
j
=
1
N
α
j
y
j
x
j
)
x
i
+
b
)
+
∑
i
=
1
N
α
i
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
x
j
)
+
∑
i
=
1
N
α
i
L(w,b,α) = \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N α_iα_jy_iy_j(x_ix_j) - \sum_{i=1}^N α_iy_i \Big( \Big( \sum_{j=1}^N α_jy_jx_j\Big)x_i +b \Big) + \sum_{i=1}^N α_i \\ =-\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N α_iα_jy_iy_j(x_ix_j) + \sum_{i=1}^N α_i
L(w,b,α)=21i=1∑Nj=1∑Nαiαjyiyj(xixj)−i=1∑Nαiyi((j=1∑Nαjyjxj)xi+b)+i=1∑Nαi=−21i=1∑Nj=1∑Nαiαjyiyj(xixj)+i=1∑Nαi
即:
min
w
,
b
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
\min \limits_{w,b} \ L(w,b,α) = -\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N α_iα_jy_iy_j(x_ix_j) + \sum_{i=1}^N α_i
w,bmin L(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xixj)+i=1∑Nαi
②求
min
w
,
b
L
(
w
,
b
,
α
)
\min \limits_{w,b} \ L(w,b,α)
w,bmin L(w,b,α)对
α
α
α的极大值
(2.30)
{
max
α
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
x
j
)
+
∑
i
=
1
N
α
i
s
.
t
.
∑
j
=
1
N
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\begin{cases} \max \limits_{α} \quad -\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N α_iα_jy_iy_j(x_ix_j) + \sum_{i=1}^N α_i \\ s.t.\quad \sum_{j=1}^N α_iy_i = 0 \\ \quad \quad \quad α_i \geq 0, i=1,2,...,N \end{cases} \tag{2.30}
⎩⎪⎨⎪⎧αmax−21∑i=1N∑j=1Nαiαjyiyj(xixj)+∑i=1Nαis.t.∑j=1Nαiyi=0αi≥0,i=1,2,...,N(2.30)
将式(2.30)的目标函数由求极大转换成求极小,就得到下面与之等价的对偶最优化问题:
(2.31)
{
min
α
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
j
=
1
N
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\begin{cases} \min \limits_{α} \quad \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N α_iα_jy_iy_j(x_ix_j) - \sum_{i=1}^N α_i \\ s.t.\quad \sum_{j=1}^N α_iy_i = 0 \\ \quad \quad \quad α_i \geq 0, i=1,2,...,N \end{cases} \tag{2.31}
⎩⎪⎨⎪⎧αmin21∑i=1N∑j=1Nαiαjyiyj(xixj)−∑i=1Nαis.t.∑j=1Nαiyi=0αi≥0,i=1,2,...,N(2.31)
对于线性可分训练数据集,假设对偶最优化问题(2.31)对
α
α
α的解为
α
∗
=
(
α
1
∗
,
α
1
∗
,
.
.
.
,
α
N
∗
)
α^*=(α_1^*,α_1^*,...,α_N^*)
α∗=(α1∗,α1∗,...,αN∗)。则可以求出原始最优化问题对
(
w
,
b
)
(w,b)
(w,b)的解
w
∗
,
b
∗
w^*,b^*
w∗,b∗如下:
(2.32)
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^* = \sum_{i=1}^N α_i^*y_ix_i \tag{2.32}
w∗=i=1∑Nαi∗yixi(2.32)
(2.33)
b
∗
=
y
i
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
x
j
)
b^* = y_i - \sum_{i=1}^N α_i^*y_i(x_ix_j) \tag{2.33}
b∗=yi−i=1∑Nαi∗yi(xixj)(2.33)
证明:
根据KKT成立的条件式(2.16)和式(2.28)和式(2.29)可知:
(2.34)
{
w
∗
−
∑
i
=
1
N
α
i
∗
y
i
x
i
=
0
∑
i
=
1
N
α
i
∗
y
i
=
0
α
i
∗
(
y
i
(
w
∗
x
i
+
b
∗
)
−
1
)
=
0
,
i
=
1
,
2
,
.
.
,
N
y
i
(
w
∗
x
i
+
b
∗
)
−
1
≥
0
,
i
=
1
,
2
,
.
.
,
N
α
i
∗
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\begin{cases} w^* - \sum_{i=1}^N α_i^*y_ix_i = 0\\ \sum_{i=1}^N α_i^*y_i = 0\\ α_i^*(y_i(w^*x_i + b^*)-1) = 0,i=1,2,..,N\\ y_i(w^*x_i + b^*) - 1 \geq 0 ,i=1,2,..,N\\ α_i^* \geq 0, i = 1,2,...,N \end{cases} \tag{2.34}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧w∗−∑i=1Nαi∗yixi=0∑i=1Nαi∗yi=0αi∗(yi(w∗xi+b∗)−1)=0,i=1,2,..,Nyi(w∗xi+b∗)−1≥0,i=1,2,..,Nαi∗≥0,i=1,2,...,N(2.34)
由此得:
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^* = \sum_{i=1}^N α_i^*y_ix_i
w∗=i=1∑Nαi∗yixi
因为其中至少有一个
α
j
∗
>
0
α_j^* > 0
αj∗>0(用反证法,假设
α
j
∗
=
0
α_j^* = 0
αj∗=0,由式(2.34)可知
w
∗
=
0
w^* = 0
w∗=0,而
w
∗
=
0
w^* = 0
w∗=0不是原始最优化问题的解,矛盾),对此有:
(2.35)
y
j
(
w
∗
x
j
+
b
∗
)
−
1
=
0
y_j(w^*x_j + b^*) - 1 = 0 \tag{2.35}
yj(w∗xj+b∗)−1=0(2.35)
将式(2.32)带入式(2.35),而
y
j
2
=
1
y_j^2=1
yj2=1,即得:
(2.36)
b
∗
=
y
i
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
x
j
)
b^* = y_i - \sum_{i=1}^N α_i^*y_i(x_ix_j) \tag{2.36}
b∗=yi−i=1∑Nαi∗yi(xixj)(2.36)
三、小结
至此,我们已经讨论完了线性可分支持向量机理论及推导,对于线性不可分的训练数据集是不适用的。以下章节内容我们会继续学习如何扩展到线性非可分数据集、如何使用SMO算法,核函数在支持向量机中的应用等内容。
【参考】:
1. 《统计学习方法》作者:李航 第7章 支持向量机
2. https://zhuanlan.zhihu.com/p/24638007 陈老师 Support Vector Machine(一)
3. 《机器学习》作者:周志华 第6章 支持向量机
转载声明:
版权声明:非商用自由转载-保持署名-注明出处
署名 :mcyJacky
文章出处:https://blog.csdn.net/mcyJacky