支持向量机
本文是笔者西瓜书第六章的学习笔记,如有谬误,请随时指出。
间隔与支持向量
考虑一个二分类问题,其训练样本集为
D
=
{
(
x
i
,
y
i
)
}
i
=
1
m
D = \{(\mathbf{x_i}, y_i)\}_{i=1}^m
D={(xi,yi)}i=1m,其中
y
i
∈
{
−
1
,
+
1
}
y_i\in\{-1, +1\}
yi∈{−1,+1},最直观的想法就是找到一个超平面
w
⊤
x
+
b
=
0
\mathbf{w}^\top\mathbf{x}+b=0
w⊤x+b=0
使得不同类的训练样本分别位于超平面两侧,即
{
w
⊤
x
i
+
b
≥
+
1
,
y
i
=
+
1
w
⊤
x
i
+
b
≤
−
1
,
y
i
=
−
1
\left\{ \begin{aligned} \mathbf{w}^\top\mathbf{x_i}+b\geq+1, \quad y_i = +1\\ \mathbf{w}^\top\mathbf{x_i}+b\leq-1, \quad y_i = -1 \end{aligned} \right.
{w⊤xi+b≥+1,yi=+1w⊤xi+b≤−1,yi=−1
这里我们将超平面
w
⊤
x
+
b
\mathbf{w}^\top\mathbf{x}+b
w⊤x+b简记为
(
w
,
b
)
(\mathbf{w}, b)
(w,b),你可能已经发现,怎么能保证超平面两侧的训练样本
(
x
i
,
y
i
)
(\mathbf{x_i}, y_i)
(xi,yi)一定满足
∣
w
⊤
x
i
+
b
∣
≥
1
|\mathbf{w}^\top\mathbf{x_i}+b|\geq 1
∣w⊤xi+b∣≥1呢?
在超平面 ( w , b ) (\mathbf{w}, b) (w,b)能够将训练样本完全正确分类的情况下(注意,这是一个假设前提!下述的内容均在该假设下),这是很容易做到的。当训练样本能够完全正确分类时一定有 ∣ w ⊤ x + b ∣ ≥ ϵ |\mathbf{w}^\top\mathbf{x}+b|\geq\epsilon ∣w⊤x+b∣≥ϵ,那么我们只需要令 w ′ = w / ϵ \mathbf{w}' = \mathbf{w}/\epsilon w′=w/ϵ, b ′ = b / ϵ b' = b/\epsilon b′=b/ϵ,即可构造出超平面 ( w ′ , b ′ ) (\mathbf{w}', b') (w′,b′)满足上式。
容易发现,如果两类样本的类间散度足够大,类内散度足够小,那么将会存在无穷多个超平面能将该训练集完全分隔开,我们应该选取哪一个超平面当作分类超平面呢?
直观上我们应该选取一个能够正确的将样本分类,并且距离两类别足够远的一个超平面。前者,是一个分类器的基本要求;后者,是为了获取一个鲁棒的分类器,当样本发生一些扰动的时候,依然能尽可能的正确分类。显然,满足后者我们需要知道样本点距离分类超平面的距离,那么如何求解呢?
首先,令样本点
x
\mathbf{x}
x在超平面
(
w
,
b
)
(\mathbf{w}, b)
(w,b)上的投影点为
x
′
\mathbf{x}'
x′,我们需要求的是
∣
∣
x
−
x
′
∣
∣
||\mathbf{x}-\mathbf{x}'||
∣∣x−x′∣∣的值。由于
w
\mathbf{w}
w是超平面
(
w
,
b
)
(\mathbf{w}, b)
(w,b)的法向量(与超平面垂直),那么
w
\mathbf{w}
w与
x
−
x
′
\mathbf{x}-\mathbf{x}'
x−x′平行,那么有
∣
w
⊤
(
x
−
x
′
)
∣
=
∥
w
∥
⋅
∥
x
−
x
′
∥
|\mathbf{w}^\top(\mathbf{x}-\mathbf{x}')| = \|\mathbf{w}\|\cdot\|\mathbf{x}-\mathbf{x}'\|
∣w⊤(x−x′)∣=∥w∥⋅∥x−x′∥
我们将左边式子展开
w
⊤
(
x
−
x
′
)
=
w
⊤
x
−
w
⊤
x
′
=
w
⊤
x
+
b
\begin{aligned} \mathbf{w}^\top(\mathbf{x}-\mathbf{x}') &= \mathbf{w}^\top\mathbf{x}-\mathbf{w}^\top\mathbf{x}' \\ &= \mathbf{w}^\top\mathbf{x}+b \end{aligned}
w⊤(x−x′)=w⊤x−w⊤x′=w⊤x+b
因此我们可以得出
∣
∣
x
−
x
′
∣
∣
=
∣
w
⊤
x
+
b
∣
∥
w
∥
||\mathbf{x}-\mathbf{x}'|| = \frac{|\mathbf{w}^\top\mathbf{x}+b|}{\|\mathbf{w}\|}
∣∣x−x′∣∣=∥w∥∣w⊤x+b∣
此时我们求出了任意点
x
\mathbf{x}
x到超平面
(
w
,
b
)
(\mathbf{w}, b)
(w,b)的距离,那么距离两类别足够远应该如何用数学语言描述呢?显然我们只需要考虑两类别中,距离超平面
(
w
,
b
)
(\mathbf{w}, b)
(w,b)最近的点即可,因为其余的点一定比他们距离超平面更远,距离两类别足够远,实际上就是距离两类别最近的点足够远。而两类别距离超平面最近的点称为“支持向量”(support vector)。支持向量
x
\mathbf{x}
x满足
∣
w
⊤
x
+
b
∣
=
1
|\mathbf{w}^\top\mathbf{x}+b| = 1
∣w⊤x+b∣=1,因此两类别的支持向量距离超平面之和为
γ
=
2
∥
w
∥
\gamma = \frac{2}{\|\mathbf{w}\|}
γ=∥w∥2
也被称为“间隔”(margin)。因此想要找到有“最大间隔”的分类超平面,实际上就是求解下述约束优化问题
max
w
,
b
2
∥
w
∥
s.t.
y
i
(
w
⊤
x
i
+
b
≥
1
)
,
i
=
1
,
…
,
m
\underset{\mathbf{w}, b}{\max} \quad \frac{2}{\|\mathbf{w}\|} \\ \text{s.t.} \quad y_i(\mathbf{w}^\top\mathbf{x_i}+b\geq 1), \quad i=1,\ldots ,m
w,bmax∥w∥2s.t.yi(w⊤xi+b≥1),i=1,…,m
这等价于
min
w
,
b
1
2
∥
w
∥
2
s.t.
y
i
(
w
⊤
x
i
+
b
)
≥
1
,
i
=
1
,
…
,
m
\underset{\mathbf{w}, b}{\min} \quad \frac{1}{2}\|\mathbf{w}\|^2 \\ \text{s.t.} \quad y_i(\mathbf{w}^\top\mathbf{x_i}+b)\geq 1, \quad i=1,\ldots ,m
w,bmin21∥w∥2s.t.yi(w⊤xi+b)≥1,i=1,…,m
这就是支持向量机(Support Vector Machine,SVM)的基本型。注意,没有直接使用
∥
w
∥
\|\mathbf{w}\|
∥w∥而是使用了
1
/
2
⋅
∥
w
∥
2
1/2\cdot\|\mathbf{w}\|^2
1/2⋅∥w∥2,只是为了之后的求解和变形方便。
对偶问题
在求解上述的约束优化问题之前,我们首先需要复习一些关于最优化方法的知识。
凸优化问题
对于一般约束优化问题
min
f
(
x
)
s.t.
g
i
(
x
)
≤
0
,
i
=
1
,
…
,
m
h
j
(
x
)
=
0
,
j
=
1
,
…
,
n
\min \quad f(\mathbf{x}) \\ \text{s.t.} \quad g_i(\mathbf{x})\leq 0, \quad i=1, \ldots, m\\ \qquad h_j(\mathbf{x}) = 0, \quad j = 1, \ldots, n
minf(x)s.t.gi(x)≤0,i=1,…,mhj(x)=0,j=1,…,n
若目标函数
f
(
x
)
f(\mathbf{x})
f(x)是凸函数,不等式约束
g
i
(
x
)
g_i(\mathbf{x})
gi(x)是凸函数,等式约束
h
j
(
x
)
h_j(\mathbf{x})
hj(x)是仿射函数,那么该优化问题为凸优化问题。
KKT条件
对于一般约束优化问题
min
f
(
x
)
s.t.
g
i
(
x
)
≤
0
,
i
=
1
,
…
,
m
h
j
(
x
)
=
0
,
j
=
1
,
…
,
n
\min \quad f(\mathbf{x}) \\ \text{s.t.} \quad g_i(\mathbf{x})\leq 0, \quad i=1, \ldots, m\\ \qquad h_j(\mathbf{x}) = 0, \quad j = 1, \ldots, n
minf(x)s.t.gi(x)≤0,i=1,…,mhj(x)=0,j=1,…,n
KKT条件是局部最优解的必要条件,也就是说只要该优化问题满足任何一个特定的约束限制条件,局部解就一定会满足以下五个条件:
{
∇
x
L
(
x
∗
,
μ
∗
,
λ
∗
)
=
∇
f
(
x
∗
)
+
∑
i
=
1
m
μ
i
∗
∇
g
i
(
x
∗
)
+
∑
j
=
1
n
λ
j
∗
∇
h
j
(
x
∗
)
=
0
h
j
(
x
∗
)
=
0
,
j
=
1
,
…
,
n
g
i
(
x
∗
)
≤
0
,
i
=
1
,
…
,
m
μ
i
∗
≥
0
,
i
=
1
,
…
,
m
μ
i
∗
g
i
(
x
∗
)
=
0
,
i
=
1
,
…
,
m
\left\{ \begin{aligned} \nabla_\mathbf{x} L(\mathbf{x}^*, \mu^*, \lambda^*) = \nabla f(\mathbf{x}^*)+\sum_{i=1}^m\mu_i^*\nabla g_i(\mathbf{x}^*)+\sum_{j=1}^n\lambda_j^*\nabla h_j(\mathbf{x}^*) = 0\\ h_j(\mathbf{x}^*) = 0, \quad j=1, \ldots, n\\ g_i(\mathbf{x}^*) \leq 0, \quad i = 1,\ldots, m\\ \mu_i^* \geq 0, \quad i=1,\ldots, m\\ \mu_i^* g_i(\mathbf{x}^*) = 0, \quad i=1,\ldots, m \end{aligned} \right.
⎩
⎨
⎧∇xL(x∗,μ∗,λ∗)=∇f(x∗)+i=1∑mμi∗∇gi(x∗)+j=1∑nλj∗∇hj(x∗)=0hj(x∗)=0,j=1,…,ngi(x∗)≤0,i=1,…,mμi∗≥0,i=1,…,mμi∗gi(x∗)=0,i=1,…,m
拉格朗日对偶函数
对于一般约束优化问题
min
f
(
x
)
s.t.
g
i
(
x
)
≤
0
,
i
=
1
,
…
,
m
h
j
(
x
)
=
0
,
j
=
1
,
…
,
n
\min \quad f(\mathbf{x}) \\ \text{s.t.} \quad g_i(\mathbf{x})\leq 0, \quad i=1, \ldots, m\\ \qquad h_j(\mathbf{x}) = 0, \quad j = 1, \ldots, n
minf(x)s.t.gi(x)≤0,i=1,…,mhj(x)=0,j=1,…,n
设上述优化问题的定义域为
D
D
D,可行集为
D
ˉ
\bar{D}
Dˉ,最优值为
p
∗
=
min
{
f
(
x
)
}
,
x
∈
D
ˉ
p^* = \min\{f(\mathbf{x})\}, \mathbf{x}\in\bar{D}
p∗=min{f(x)},x∈Dˉ。上述优化问题的拉格朗日函数为
L
(
x
,
μ
,
λ
)
=
f
(
x
)
+
∑
i
=
1
m
μ
i
g
i
(
x
)
+
∑
j
=
1
n
λ
j
h
j
(
x
)
L(\mathbf{x}, \mathbf{\mu}, \mathbf{\lambda}) = f(\mathbf{x}) + \sum_{i=1}^m\mu_ig_i(\mathbf{x})+\sum_{j=1}^n\lambda_jh_j(\mathbf{x})
L(x,μ,λ)=f(x)+i=1∑mμigi(x)+j=1∑nλjhj(x)
其中
μ
=
(
μ
i
)
i
=
1
m
\mathbf{\mu} = (\mu_i)_{i=1}^m
μ=(μi)i=1m,
λ
=
(
λ
i
)
j
=
1
n
\mathbf{\lambda} = (\lambda_i)_{j=1}^n
λ=(λi)j=1n为拉格朗日乘子向量,相应的拉格朗日对偶函数
Γ
(
μ
,
λ
)
\Gamma(\mathbf{\mu}, \mathbf{\lambda})
Γ(μ,λ)定义为
L
(
x
,
μ
,
λ
)
L(\mathbf{x}, \mathbf{\mu}, \mathbf{\lambda})
L(x,μ,λ)的下确界,即
Γ
(
μ
,
λ
)
=
inf
x
∈
D
L
(
x
,
μ
,
λ
)
=
inf
x
∈
D
(
f
(
x
)
+
∑
i
=
1
m
μ
i
g
i
(
x
)
+
∑
j
=
1
n
λ
j
h
j
(
x
)
)
\Gamma(\mathbf{\mu}, \mathbf{\lambda}) = \inf_{\mathbf{x}\in D} L(\mathbf{x}, \mathbf{\mu}, \mathbf{\lambda}) = \inf_{\mathbf{x}\in D}\left(f(\mathbf{x}) + \sum_{i=1}^m\mu_ig_i(\mathbf{x})+\sum_{j=1}^n\lambda_jh_j(\mathbf{x})\right)
Γ(μ,λ)=x∈DinfL(x,μ,λ)=x∈Dinf(f(x)+i=1∑mμigi(x)+j=1∑nλjhj(x))
对偶函数具有如下性质:
- 无论上述优化问题是否为凸优化问题,其对偶函数 Γ ( μ , λ ) \Gamma(\mathbf{\mu}, \mathbf{\lambda}) Γ(μ,λ)恒为凹函数。
- 当
μ
i
≥
0
,
i
=
1
,
…
,
m
\mu_i\geq 0, i=1, \ldots, m
μi≥0,i=1,…,m时,
Γ
(
μ
,
λ
)
\Gamma(\mathbf{\mu}, \mathbf{\lambda})
Γ(μ,λ)构成上述优化问题最优值
p
∗
p^*
p∗的下界即
Γ ( μ , λ ) ≤ p ∗ \Gamma(\mu, \lambda) \leq p^* Γ(μ,λ)≤p∗
拉格朗日对偶问题
在
μ
i
≥
0
,
i
=
1
,
…
,
m
\mu_i\geq 0, i=1, \ldots, m
μi≥0,i=1,…,m的约束下求对偶函数的最大值的优化问题称为拉格朗日对偶问题
max
Γ
(
μ
,
λ
)
s.t.
μ
i
≥
0
,
i
=
1
,
…
,
m
\max \quad \Gamma(\mathbf{\mu}, \mathbf{\lambda}) \\ \text{s.t.} \quad \mu_i\geq 0, \quad i=1, \ldots, m
maxΓ(μ,λ)s.t.μi≥0,i=1,…,m
之前的优化问题称为主问题或者原问题。
假设对偶问题的最优值为 d ∗ d^* d∗,由于 Γ ( μ , λ ) ≤ p ∗ \Gamma(\mathbf{\mu}, \mathbf{\lambda})\leq p^* Γ(μ,λ)≤p∗可知, d ∗ ≤ p ∗ d^*\leq p^* d∗≤p∗,此时称为“弱对偶性”成立;如果有 d ∗ = p ∗ d^*= p^* d∗=p∗,则称为“强对偶性”成立。当主问题求解困难时,如果强对偶性成立,我们通过求解对偶问题来间接求解主问题。
一般情况下,强对偶性并不成立,只有当主问题满足特定的约束限制条件时才成立,常见的比如说“Slater 条件”,Slater条件的一种定义为,对于一个凸问题,若不等式约束为仿射约束,只要可行域非空,那么该凸问题和它的对偶问题一定是强对偶。观察SVM的基本型可以看出,满足Slater条件,因此强对偶性成立。
SVM基本型
对于SVM的基本型
min
w
,
b
1
2
∥
w
∥
2
s.t.
y
i
(
w
⊤
x
i
+
b
)
≥
1
,
i
=
1
,
…
,
m
\underset{\mathbf{w}, b}{\min} \quad \frac{1}{2}\|\mathbf{w}\|^2 \\ \text{s.t.} \quad y_i(\mathbf{w}^\top\mathbf{x_i}+b)\geq 1, \quad i=1,\ldots ,m
w,bmin21∥w∥2s.t.yi(w⊤xi+b)≥1,i=1,…,m
我们注意到目标函数
1
/
2
∥
w
∥
2
1/2\|\mathbf{w}\|^2
1/2∥w∥2是凸二次函数,并且不等约束均为仿射函数,显然这是一个凸优化问题。同时可以注意到其满足Slater条件,因此我们可以通过求解其对偶问题来间接求解原问题。
首先我们写出SVM基本型的拉格朗日函数
L
(
w
,
b
,
λ
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
m
λ
i
(
1
−
y
i
(
w
⊤
x
i
+
b
)
)
L(\mathbf{w}, b, \mathbf{\lambda}) = \frac{1}{2}\|\mathbf{w}\|^2+\sum_{i=1}^m\lambda_i(1-y_i(\mathbf{w}^\top\mathbf{x_i}+b))
L(w,b,λ)=21∥w∥2+i=1∑mλi(1−yi(w⊤xi+b))
根据拉格朗日对偶函数的定义
Γ
(
λ
)
=
inf
(
w
,
b
)
∈
D
L
(
w
,
b
,
λ
)
\Gamma(\lambda) = \inf_{(\mathbf{w}, b)\in D} L(\mathbf{w}, b, \mathbf{\lambda})
Γ(λ)=inf(w,b)∈DL(w,b,λ),同时我们可以发现
L
(
w
,
b
,
λ
)
L(\mathbf{w}, b, \mathbf{\lambda})
L(w,b,λ)也是凸函数,因此我们分别对
w
,
b
\mathbf{w}, b
w,b求偏导,令其偏导数为零,然后消去
w
,
b
\mathbf{w}, b
w,b,即可得到
inf
(
w
,
b
)
∈
D
L
(
w
,
b
,
λ
)
\inf_{(\mathbf{w}, b)\in D} L(\mathbf{w}, b, \mathbf{\lambda})
inf(w,b)∈DL(w,b,λ),即拉格朗日对偶函数
Γ
(
λ
)
\Gamma(\mathbf{\lambda})
Γ(λ)。
令
w
,
b
\mathbf{w}, b
w,b的偏导数为零可得
w
=
∑
i
=
1
m
λ
i
y
i
x
i
∑
i
=
1
m
λ
i
y
i
=
0
\mathbf{w} = \sum_{i=1}^{m}\lambda_iy_i\mathbf{x_i}\\ \sum_{i=1}^m\lambda_iy_i = 0
w=i=1∑mλiyixii=1∑mλiyi=0
代入拉格朗日函数后,可得拉格朗日对偶函数
Γ
(
λ
)
=
∑
i
=
1
m
λ
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
λ
i
λ
j
y
i
y
j
x
i
⊤
x
j
\Gamma(\mathbf{\lambda}) = \sum_{i=1}^m\lambda_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\mathbf{x_i}^\top\mathbf{x_j}
Γ(λ)=i=1∑mλi−21i=1∑mj=1∑mλiλjyiyjxi⊤xj
因此SVM基本型的对偶问题为
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
≥
0
,
i
=
1
,
…
,
m
∑
i
=
1
m
λ
i
y
i
=
0
\max_\lambda \quad \Gamma(\mathbf{\lambda}) = \sum_{i=1}^m\lambda_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\mathbf{x_i}^\top\mathbf{x_j} \\ \text{s.t.} \quad \lambda_i \geq 0, \quad i=1,\ldots, m\\ \sum_{i=1}^m\lambda_iy_i = 0
λmaxΓ(λ)=i=1∑mλi−21i=1∑mj=1∑mλiλjyiyjxi⊤xjs.t.λi≥0,i=1,…,mi=1∑mλiyi=0
其中对偶问题的第一个约束条件是根据拉格朗日对偶问题的定义,第二个约束条件来自于令
b
b
b偏导数为零产生的约束。为什么令
w
\mathbf{w}
w偏导数为零的约束不在里面呢?实际上已经隐含在
Γ
(
λ
)
\Gamma(\mathbf{\lambda})
Γ(λ)中了。根据对偶问题,解得
λ
\mathbf{\lambda}
λ后,即可得到模型
f
(
x
)
=
∑
i
=
1
m
λ
i
y
i
x
i
⊤
x
+
b
f(\mathbf{x}) = \sum_{i=1}^m\lambda_iy_i\mathbf{x_i}^\top\mathbf{x}+b
f(x)=i=1∑mλiyixi⊤x+b
如何确定参数
b
b
b呢?我们注意到支持向量
(
x
s
,
y
s
)
(\mathbf{x}_s, y_s)
(xs,ys)都有
y
s
f
(
x
s
)
=
1
y_sf(\mathbf{x}_s)=1
ysf(xs)=1,即
y
s
(
∑
i
∈
S
λ
i
y
i
x
i
⊤
x
s
+
b
)
=
1
y_s\left(\sum_{i\in S}\lambda_iy_i\mathbf{x_i}^\top\mathbf{x}_s+b\right) = 1
ys(i∈S∑λiyixi⊤xs+b)=1
其中
S
S
S为所有支持向量的下标集合,通过上式我们即可求出
b
b
b。可以看出,理论上只需要一个支持向量,即可求出参数
b
b
b,但是实际中我们希望得到一个更加鲁棒的
b
b
b,我们采用使用所有支持向量求解的均值
b
=
1
∣
S
∣
∑
s
∈
S
(
1
/
y
s
−
∑
i
∈
S
λ
i
y
i
x
i
⊤
x
s
)
b = \frac{1}{|S|}\sum_{s\in S}\left(1/y_s-\sum_{i\in S}\lambda_iy_i\mathbf{x_i}^\top\mathbf{x_s}\right)
b=∣S∣1s∈S∑(1/ys−i∈S∑λiyixi⊤xs)
此时我们可以发现,只需要确定
λ
\mathbf{\lambda}
λ,那么参数
w
,
b
\mathbf{w}, b
w,b都将随之得出。也许你此时会产生以下两个疑问:
- 为什么弄这么麻烦?直接求原问题把 w , b \mathbf{w}, b w,b都直接解出来不就好了?
- 既然参数 w , b \mathbf{w}, b w,b都要根据 λ \mathbf{\lambda} λ才能求解,那么 λ \mathbf{\lambda} λ怎么求呢?
这里我们首先回答第一个问题。利用对偶问题间接的求解参数的原因有两点:
- 一方面是,原问题中我们要求的 w \mathbf{w} w的维数为 d d d,对应样本特征个数,而对偶问题要求的 λ \mathbf{\lambda} λ的维数为 m m m,对应样本点的个数。一般情况下 m ⋘ d m\llless d m⋘d,因此求解对偶问题更加高效。
- 另一方面,对偶问题中存在 x i ⊤ x j \mathbf{x_i}^\top\mathbf{x_j} xi⊤xj这一项,这便于引入核方法,进而使得支持向量机也能对在原始特征空间线性不可分的数据进行分类。
对于第二个问题,我们可以发现这是一个二次规划问题,可能可以用二次规划算法求解,但是该问题的规模正比于训练样本数,实际过程中可能会造成很大的开销,因此我们需要避开这个障碍。SMO是避开障碍的一种方法,这里我们只简单介绍SMO的基本思路。
SMO的基本思路是,先固定除了 λ i \lambda_i λi以外的所有参数,然后求 λ i \lambda_i λi上的极值。由于我们这个问题存在约束 ∑ i = 1 m λ i y i = 0 \sum_{i=1}^m\lambda_iy_i=0 ∑i=1mλiyi=0,因此如果固定除了 λ i \lambda_i λi以外的所有参数, λ i \lambda_i λi也会被其他参数推导出,因此我们每次选取 λ i , λ j \lambda_i, \lambda_j λi,λj。具体为
- 选取一对亟需更新的变量 λ i , λ j \lambda_i, \lambda_j λi,λj
- 固定其他参数,求目标函数极值
此时我们基本上解决了这个对偶问题,容易发现
λ
i
\lambda_i
λi是
(
x
i
,
y
i
)
(\mathbf{x_i}, y_i)
(xi,yi)的拉格朗日乘子,观察原问题的KKT条件
{
λ
i
≥
0
y
i
f
(
x
i
)
−
1
≥
0
λ
i
(
y
i
f
(
x
i
)
−
1
)
=
0
\left\{ \begin{aligned} \lambda_i \geq 0 \\ y_if(\mathbf{x}_i)-1 \geq 0\\ \lambda_i(y_if(\mathbf{x_i})-1) = 0 \end{aligned} \right.
⎩
⎨
⎧λi≥0yif(xi)−1≥0λi(yif(xi)−1)=0
可以发现对于任意的训练样本总有
λ
i
=
0
\lambda_i=0
λi=0或者
y
i
f
(
x
i
)
=
1
y_if(\mathbf{x_i})=1
yif(xi)=1,若
λ
i
=
0
\lambda_i=0
λi=0,那么这一项将不会在最终的模型中表现出来,也就是说对
f
(
x
)
f(\mathbf{x})
f(x)没有任何影响;
λ
i
>
0
\lambda_i>0
λi>0,那么必定有
y
i
f
(
x
i
)
=
1
y_if(\mathbf{x_i})=1
yif(xi)=1,即该样本是支持向量,因此我们可以发现,当训练完成之后,我们只需要保留支持向量即可得到模型
f
(
x
)
f(\mathbf{x})
f(x),实际上支持向量机这个名字强调了此类学习器的关键是如何根据支持向量构建出解。
终于,我们成功推导完了SVM的基本型!!不用担心,之后的推导都大同小异,理解了SVM的基本型推导,后续就会变得十分容易。
核函数
在之前的讨论中,我们假设样本是线性可分的,即假设存在一个超平面能使训练样本正确分类,但是如果不存在这样一个超平面怎么办呢?
此时我们可以将样本从原始空间映射到高维空间,使得样本在这个高维空间内线性可分。并且我们可以确定的是,如果原始空间是有限维的,那么一定存在一个高维特征空间是样本线性可分。
令
ϕ
(
x
)
\phi(\mathbf{x})
ϕ(x)是样本
x
\mathbf{x}
x映射后的向量,于是在高维空间中的划分超平面可以表示为
f
(
x
)
=
w
⊤
ϕ
(
x
)
+
b
f(\mathbf{x}) = \mathbf{w}^\top\phi(\mathbf{x})+b
f(x)=w⊤ϕ(x)+b
进而我们可以得出
min
w
,
b
1
2
∥
w
∥
2
s.t.
y
i
(
w
⊤
ϕ
(
x
i
)
+
b
)
≥
1
,
i
=
1
,
…
,
m
\min_{\mathbf{w}, b} \quad \frac{1}{2}\|\mathbf{w}\|^2 \\ \text{s.t.} \quad y_i(\mathbf{w}^\top\phi(\mathbf{x_i})+b) \geq 1, \quad i=1,\ldots,m
w,bmin21∥w∥2s.t.yi(w⊤ϕ(xi)+b)≥1,i=1,…,m
其对偶问题可以求得
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
,
…
,
m
\max_{\lambda} \sum_{i=1}^m \lambda_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\phi(\mathbf{x_i})^\top\phi(\mathbf{x_j})\\ \text{s.t.} \quad \sum_{i=1}^m\lambda_iy_i = 0\\ \lambda_i\geq 0, \quad i=1,\ldots, m
λmaxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjϕ(xi)⊤ϕ(xj)s.t.i=1∑mλiyi=0λi≥0,i=1,…,m
我们可以注意到
ϕ
(
x
i
)
⊤
ϕ
(
x
j
)
\phi(\mathbf{x_i})^\top\phi(\mathbf{x_j})
ϕ(xi)⊤ϕ(xj)是在高维映射空间中的内积,直接计算通常比较困难,为了避开这个障碍我们设想这样一个函数
κ
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
⊤
ϕ
(
x
j
)
\kappa(\mathbf{x_i}, \mathbf{x_j}) = \phi(\mathbf{x_i})^\top\phi(\mathbf{x_j})
κ(xi,xj)=ϕ(xi)⊤ϕ(xj)
此时我们就不必计算高维映射空间中的内积了,其对偶问题可以重写为
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
,
…
,
m
\max_{\lambda} \sum_{i=1}^m \lambda_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\kappa(\mathbf{x_i}, \mathbf{x_j})\\ \text{s.t.} \quad \sum_{i=1}^m\lambda_iy_i = 0\\ \lambda_i\geq 0, \quad i=1,\ldots, m
λmaxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjκ(xi,xj)s.t.i=1∑mλiyi=0λi≥0,i=1,…,m
求解后可以得到
f
(
x
)
=
w
⊤
ϕ
(
x
)
+
b
=
∑
i
=
1
m
λ
i
y
i
ϕ
(
x
i
)
⊤
ϕ
(
x
)
+
b
=
∑
i
=
1
m
λ
i
y
i
κ
(
x
i
,
x
)
+
b
\begin{aligned} f(\mathbf{x}) &= \mathbf{w}^\top\phi(\mathbf{x})+b\\ &= \sum_{i=1}^m\lambda_iy_i\phi(\mathbf{x_i})^\top\phi(\mathbf{x})+b\\ &= \sum_{i=1}^m\lambda_iy_i\kappa(\mathbf{x_i}, \mathbf{x})+b \end{aligned}
f(x)=w⊤ϕ(x)+b=i=1∑mλiyiϕ(xi)⊤ϕ(x)+b=i=1∑mλiyiκ(xi,x)+b
其中
κ
(
⋅
,
⋅
)
\kappa(\cdot, \cdot)
κ(⋅,⋅)代表核函数,通常来说只要已知
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅)就可以写出核函数
κ
(
⋅
,
⋅
)
\kappa(\cdot, \cdot)
κ(⋅,⋅),然而我们通常不知道
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅)是什么形式。事实上,我们并不需要选择映射
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅),对于一个半正定核矩阵
K
=
[
κ
(
x
1
,
x
1
)
…
κ
(
x
1
,
x
m
)
⋮
⋱
⋮
κ
(
x
m
,
x
1
)
…
κ
(
x
m
,
x
m
)
]
K = \begin{bmatrix} \kappa(\mathbf{x_1}, \mathbf{x_1}) & \ldots & \kappa(\mathbf{x_1}, \mathbf{x_m}) \\ \vdots & \ddots & \vdots\\ \kappa(\mathbf{x_m}, \mathbf{x_1}) & \ldots & \kappa(\mathbf{x_m}, \mathbf{x_m}) \end{bmatrix}
K=
κ(x1,x1)⋮κ(xm,x1)…⋱…κ(x1,xm)⋮κ(xm,xm)
总能找到一个与之对应的映射
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅),于是,核函数的选择称为了支持向量机的最大变数,如果核函数选择的不合适,那么样本将会被映射到一个不合适的特征空间,导致性能不佳。这里罗列一下核函数的选择和性质:
- 对于文本数据我们一般采用线性核函数,情况不明先采用高斯核
- 核函数 κ 1 , κ 2 \kappa_1, \kappa_2 κ1,κ2的线性组合 γ 1 κ 1 + γ 2 κ 2 \gamma_1\kappa_1+\gamma_2\kappa_2 γ1κ1+γ2κ2依然是核函数
- 核函数 κ 1 , κ 2 \kappa_1, \kappa_2 κ1,κ2的直积 κ 1 ( x , y ) κ 2 ( x , y ) \kappa_1(\mathbf{x}, \mathbf{y})\kappa_2(\mathbf{x}, \mathbf{y}) κ1(x,y)κ2(x,y)也是核函数
- 核函数 κ 1 \kappa_1 κ1,对于任意函数 g ( x ) g(\mathbf{x}) g(x), g ( x ) k 1 ( x , y ) g ( y ) g(\mathbf{x})k_1(\mathbf{x}, \mathbf{y})g(\mathbf{y}) g(x)k1(x,y)g(y)也是核函数
软间隔与正则化
在实际问题中,经常遇到以下几个难点:
- 很难找到一个核函数使得样本在特征空间中线性可分
- 即便找到了对于的核函数,并且样本线性可分了,也很难断定这个结果是否是过拟合产生的结果
为了缓解这个问题,我们允许支持向量机在少数的一些样本上出错,这也就引出了“软间隔”的概念。前面介绍的支持向量机的形式,对于任意样本
(
x
i
,
y
i
)
(\mathbf{x_i}, y_i)
(xi,yi)均需要满足约束
y
i
(
w
⊤
x
+
b
)
≥
1
y_i(\mathbf{w}^\top\mathbf{x}+b)\geq 1
yi(w⊤x+b)≥1
这称为“硬间隔”,要如何引入软间隔呢?我们可以在最大化间隔的同时,让出错的样本尽可能的少,于是优化目标可以写成
min
w
,
b
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
l
0
/
1
(
y
i
(
w
⊤
x
i
+
b
)
−
1
)
\min_{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^2+C\sum_{i=1}^ml_{0/1}(y_i(\mathbf{w}^\top\mathbf{x_i}+b)-1)
w,bmin21∥w∥2+Ci=1∑ml0/1(yi(w⊤xi+b)−1)
其中
C
>
0
C>0
C>0是一个常数,
l
0
/
1
l_{0/1}
l0/1为
l
0
/
1
(
z
)
=
{
1
,
z
<
0
0
,
z
≥
0
l_{0/1}(z) = \left\{ \begin{aligned} 1,\quad z<0\\ 0,\quad z\geq 0 \end{aligned} \right.
l0/1(z)={1,z<00,z≥0
显然当
C
→
∞
C\rightarrow\infty
C→∞时,将迫使所有的样本均分类正确;当
C
C
C取有限值时,允许一些样本出错。然而
l
0
/
1
l_{0/1}
l0/1非凸不连续,数学性质不好,因此我们需要用其他函数代替,一般有以下三种代替函数:
- hinge损失: l hinge ( z ) = max ( 0 , 1 − z ) l_{\text{hinge}}(z) = \max(0, 1-z) lhinge(z)=max(0,1−z)
- 指数损失: l exp ( z ) = exp ( − z ) l_{\text{exp}}(z) = \exp(-z) lexp(z)=exp(−z)
- 对率损失: l log ( z ) = log ( 1 + exp ( − z ) ) l_{\text{log}}(z) = \log(1+\exp(-z)) llog(z)=log(1+exp(−z))
若采用hinge损失,则优化目标可以写成
min
w
,
b
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
max
(
0
,
1
−
y
i
(
w
⊤
x
+
b
)
)
\min_{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^2+C\sum_{i=1}^m\max(0, 1-y_i(\mathbf{w}^\top\mathbf{x}+b))
w,bmin21∥w∥2+Ci=1∑mmax(0,1−yi(w⊤x+b))
此时我们令
ξ
i
=
max
(
0
,
1
−
y
i
(
w
⊤
x
+
b
)
)
\xi_i = \max(0, 1-y_i(\mathbf{w}^\top\mathbf{x}+b))
ξi=max(0,1−yi(w⊤x+b))
因此当
1
−
y
i
(
w
⊤
x
+
b
)
≥
0
1-y_i(\mathbf{w}^\top\mathbf{x}+b)\geq0
1−yi(w⊤x+b)≥0时,
ξ
i
=
1
−
y
i
(
w
⊤
x
+
b
)
\xi_i = 1-y_i(\mathbf{w}^\top\mathbf{x}+b)
ξi=1−yi(w⊤x+b),反之
ξ
i
>
1
−
y
i
(
w
⊤
x
+
b
)
\xi_i > 1-y_i(\mathbf{w}^\top\mathbf{x}+b)
ξi>1−yi(w⊤x+b),因此有
y
i
(
w
⊤
x
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
y_i(\mathbf{w}^\top\mathbf{x}+b) \geq 1-\xi_i \\ \xi_i\geq 0
yi(w⊤x+b)≥1−ξiξi≥0
故引入
ξ
i
\xi_i
ξi后的优化目标为(
ξ
i
\xi_i
ξi称为“松弛变量”)
min
w
,
b
,
ξ
i
1
2
+
C
∑
i
=
1
m
ξ
i
s.t.
y
i
(
w
⊤
x
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
,
i
=
1
,
…
,
m
\min_{\mathbf{w}, b, \xi_i} \frac{1}{2}+C\sum_{i=1}^m\xi_i\\ \text{s.t.} \quad y_i(\mathbf{w}^\top\mathbf{x}+b) \geq 1-\xi_i \\ \xi_i\geq 0, \quad i=1, \ldots, m
w,b,ξimin21+Ci=1∑mξis.t.yi(w⊤x+b)≥1−ξiξi≥0,i=1,…,m
显然
ξ
i
\xi_i
ξi代表样本
(
x
i
,
y
i
)
(\mathbf{x_i}, y_i)
(xi,yi)不满足约束
y
i
(
w
⊤
x
i
+
b
)
≥
1
y_i(\mathbf{w}^\top\mathbf{x_i}+b)\geq 1
yi(w⊤xi+b)≥1的程度。求解上述问题,与求解SVM基本型的方法类似,首先求出其拉格朗日函数
L
(
w
,
b
,
λ
,
μ
,
ξ
)
=
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ξ
i
+
∑
i
=
1
m
λ
i
(
1
−
ξ
i
−
y
i
(
w
⊤
x
i
+
b
)
)
−
∑
i
=
1
m
μ
i
ξ
i
L(\mathbf{w}, b, \mathbf{\lambda}, \mathbf{\mu}, \mathbf{\xi}) = \frac{1}{2}\|\mathbf{w}\|^2+C\sum_{i=1}^m\xi_i\\+\sum_{i=1}^m\lambda_i(1-\xi_i-y_i(\mathbf{w}^\top\mathbf{x_i}+b))-\sum_{i=1}^m\mu_i\xi_i
L(w,b,λ,μ,ξ)=21∥w∥2+Ci=1∑mξi+i=1∑mλi(1−ξi−yi(w⊤xi+b))−i=1∑mμiξi
由于目标函数是凸函数,不等式约束均为仿射约束,满足Slater条件因此强对偶性成立,并且分别
w
,
b
,
ξ
\mathbf{w}, b, \mathbf{\xi}
w,b,ξ的偏导数为0,即可求出拉格朗日函数的下界,即拉格朗日对偶函数,从而可求出对偶问题
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
,
0
≤
λ
i
≤
C
,
i
=
1
,
…
,
m
\max_{\alpha} \sum_{i=1}^m\lambda_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\mathbf{x_i}^\top\mathbf{x_j}\\ \text{s.t.}\quad \sum_{i=1}^m\lambda_iy_i = 0,\\ 0\leq\lambda_i\leq C, \quad i=1,\ldots, m
αmaxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjxi⊤xjs.t.i=1∑mλiyi=0,0≤λi≤C,i=1,…,m
可以看出软间隔的对偶问题和硬间隔的对偶问题的唯一差异在于,前者的对偶变量约束为
0
≤
λ
i
≤
C
0\leq\lambda_i\leq C
0≤λi≤C,后者的对偶变量约束为
λ
i
≥
0
\lambda_i\geq 0
λi≥0,因此可以用相同的求解方式求解,引入核函数后也一样。
我们考虑软间隔支持向量机的KKT条件
{
λ
i
≥
0
,
μ
i
≥
0
y
i
f
(
x
i
)
−
1
+
ξ
i
≥
0
λ
i
(
y
i
f
(
x
i
)
−
1
+
ξ
i
)
=
0
ξ
i
≥
0
,
μ
i
ξ
i
=
0
λ
i
+
μ
i
=
C
∑
i
=
1
m
λ
i
y
i
=
0
\left\{ \begin{aligned} \lambda_i\geq 0, \mu_i\geq 0\\ y_if(\mathbf{x_i})-1+\xi_i\geq 0\\ \lambda_i(y_if(\mathbf{x_i})-1+\xi_i) = 0\\ \xi_i\geq 0, \mu_i\xi_i=0\\ \lambda_i+\mu_i = C\\ \sum_{i=1}^m\lambda_iy_i=0 \end{aligned} \right.
⎩
⎨
⎧λi≥0,μi≥0yif(xi)−1+ξi≥0λi(yif(xi)−1+ξi)=0ξi≥0,μiξi=0λi+μi=Ci=1∑mλiyi=0
我们可以发现,对于任意训练样本
(
x
i
,
y
i
)
(\mathbf{x_i}, y_i)
(xi,yi),总有
λ
i
=
0
\lambda_i=0
λi=0或者
y
i
f
(
x
i
)
−
1
+
ξ
i
=
0
y_if(\mathbf{x_i})-1+\xi_i=0
yif(xi)−1+ξi=0,若
λ
i
=
0
\lambda_i=0
λi=0,该样本对
f
(
x
)
f(\mathbf{x})
f(x)没有任何影响,若
y
i
f
(
x
i
)
−
1
+
ξ
i
=
0
y_if(\mathbf{x_i})-1+\xi_i=0
yif(xi)−1+ξi=0,那么该样本是支持向量。如果
0
<
λ
i
<
C
0 < \lambda_i < C
0<λi<C,那么
μ
i
≠
0
\mu_i\neq 0
μi=0,进而有
ξ
i
=
0
\xi_i=0
ξi=0,这说明该支持向量位于最大间隔的边界;若
λ
i
=
C
\lambda_i=C
λi=C,则
μ
i
=
0
\mu_i=0
μi=0,此时如果
λ
≤
1
\lambda\leq 1
λ≤1,那么说明该支持向量位于间隔内部,反之说明被错误分类。由此可以看出,软间隔的支持向量机的最终模型也仅和支持向量有关。
适当推广一下,我们将原问题写成更一般的形式
min
f
Ω
(
f
)
+
C
∑
i
=
1
m
l
(
f
(
x
i
)
,
y
i
)
\min_f \Omega(f)+C\sum_{i=1}^ml(f(\mathbf{x_i}), y_i)
fminΩ(f)+Ci=1∑ml(f(xi),yi)
其中
Ω
(
f
)
\Omega(f)
Ω(f)称为结构风险,用于描述
f
f
f的某些性质;第二项
∑
i
=
1
m
l
(
f
(
x
i
)
,
y
i
)
\sum_{i=1}^ml(f(\mathbf{x_i}), y_i)
∑i=1ml(f(xi),yi)称为经验风险,用于描述模型与数据的契合程度;常数
C
C
C用于折中二者。
松弛变量与hinge损失为何等价?
我们发现如果单纯考虑 ξ i \xi_i ξi的约束条件,只要 ξ i \xi_i ξi取的足够大,约束条件是都满足的,此时我们可能会认为,hinge损失和引入松弛变量 ξ i \xi_i ξi似乎并不等价。
但是注意,我们不能忽略我们要求目标函数的最小值,因此对于每个 ξ i \xi_i ξi,我们都应该取满足约束条件的最小值,此时松弛变量和hinge损失函数就是等价的了。
支持向量回归(SVR)
现在我们考虑回归问题,假设我们最多能容忍
f
(
x
)
f(\mathbf{x})
f(x)与
y
y
y之间最多有
ϵ
\epsilon
ϵ的偏差,也就是说只有当
f
(
x
)
f(\mathbf{x})
f(x)和
y
y
y之间的差别大于
ϵ
\epsilon
ϵ的时候才计算损失,这相当于是以
f
(
x
)
f(\mathbf{x})
f(x)为中心构建了一个宽度为
2
ϵ
2\epsilon
2ϵ的间隔带,只要样本落入间隔带中,我们认为样本预测正确,于是该问题可形式化为
min
w
,
b
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
l
ϵ
(
f
(
x
i
)
−
y
i
)
\min_{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^2+C\sum_{i=1}^m l_\epsilon(f(\mathbf{x_i})-y_i)
w,bmin21∥w∥2+Ci=1∑mlϵ(f(xi)−yi)
其中
C
C
C为常数,
l
ϵ
l_\epsilon
lϵ定义为
l
ϵ
(
z
)
=
{
0
,
∣
z
∣
≤
ϵ
∣
z
∣
−
ϵ
,
其他
l_\epsilon(z) = \left\{ \begin{aligned} 0, \quad |z|\leq \epsilon\\ |z|-\epsilon, \quad 其他 \end{aligned} \right.
lϵ(z)={0,∣z∣≤ϵ∣z∣−ϵ,其他
为了引入松弛变量
ξ
i
+
,
ξ
i
−
\xi_i^+, \xi_i^-
ξi+,ξi−,我们可以发现
l
ϵ
(
z
)
=
l
ϵ
+
(
z
)
+
l
ϵ
−
(
z
)
l_\epsilon(z) = l_\epsilon^+(z)+l_\epsilon^-(z)
lϵ(z)=lϵ+(z)+lϵ−(z),其中
l
ϵ
+
(
z
)
=
{
0
,
z
≤
ϵ
z
−
ϵ
,
z
>
ϵ
l
ϵ
−
(
z
)
=
{
0
,
z
≥
−
ϵ
−
z
−
ϵ
,
z
<
−
ϵ
l_\epsilon^+(z) = \left\{ \begin{aligned} 0, \quad z\leq \epsilon\\ z-\epsilon, \quad z>\epsilon \end{aligned} \right. \qquad l_\epsilon^-(z) = \left\{ \begin{aligned} 0, \quad z\geq -\epsilon\\ -z-\epsilon, \quad z<-\epsilon \end{aligned} \right.
lϵ+(z)={0,z≤ϵz−ϵ,z>ϵlϵ−(z)={0,z≥−ϵ−z−ϵ,z<−ϵ
我们令
ξ
i
+
=
l
ϵ
+
(
f
(
x
i
)
,
y
i
)
,
ξ
i
−
=
l
ϵ
−
(
f
(
x
i
)
,
y
i
)
\xi_i^+=l_\epsilon^+(f(\mathbf{x_i}), y_i), \xi_i^-=l_\epsilon^-(f(\mathbf{x_i}), y_i)
ξi+=lϵ+(f(xi),yi),ξi−=lϵ−(f(xi),yi),可得
ξ
i
+
≥
f
(
x
i
)
−
y
i
−
ϵ
i
ξ
i
−
≥
y
i
−
f
(
x
i
)
−
ϵ
i
\xi_i^+\geq f(\mathbf{x_i})-y_i-\epsilon_i \qquad \xi_i^- \geq y_i-f(\mathbf{x_i})-\epsilon_i
ξi+≥f(xi)−yi−ϵiξi−≥yi−f(xi)−ϵi
进而有
min
w
,
b
,
ξ
i
+
,
ξ
i
−
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
(
ξ
i
+
+
ξ
i
−
)
s.t.
f
(
x
i
)
−
y
i
≤
ϵ
+
ξ
i
+
y
i
−
f
(
x
i
)
≤
ϵ
+
ξ
i
−
ξ
i
+
≥
0
,
ξ
i
−
≥
0
\min_{\mathbf{w}, b, \xi_i^+, \xi_i^-} \frac{1}{2}\|\mathbf{w}\|^2+C\sum_{i=1}^m(\xi_i^++\xi_i^-)\\ \text{s.t.} f(\mathbf{x_i})-y_i\leq\epsilon+\xi_i^+\\ y_i-f(\mathbf{x_i})\leq\epsilon+\xi_i^-\\ \xi_i^+\geq 0, \quad\xi_i^-\geq 0
w,b,ξi+,ξi−min21∥w∥2+Ci=1∑m(ξi++ξi−)s.t.f(xi)−yi≤ϵ+ξi+yi−f(xi)≤ϵ+ξi−ξi+≥0,ξi−≥0
这里我们写出其拉格朗日函数
L
(
w
,
b
,
λ
+
,
λ
−
,
ξ
+
,
ξ
−
,
μ
+
,
μ
−
)
=
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
(
ξ
i
+
+
ξ
i
−
)
−
∑
i
=
1
m
μ
i
+
ξ
i
+
−
∑
i
=
1
m
μ
i
−
ξ
i
−
+
∑
i
=
1
m
λ
i
+
(
f
(
x
i
)
−
y
i
−
ϵ
−
ξ
i
+
)
+
∑
i
=
1
m
λ
i
−
(
f
(
x
i
)
−
y
i
−
ϵ
−
ξ
i
−
)
\begin{aligned} &L(\mathbf{w}, b, \mathbf{\lambda^+}, \mathbf{\lambda^-}, \mathbf{\xi^+}, \mathbf{\xi^-}, \mathbf{\mu^+}, \mathbf{\mu^-}) \\ &= \frac{1}{2}\|\mathbf{w}\|^2+C\sum_{i=1}^m(\xi_i^++\xi_i^-)-\sum_{i=1}^m\mu_i^+\xi_i^+-\sum_{i=1}^m\mu_i^-\xi_i^-\\ &+ \sum_{i=1}^m\lambda_i^+(f(\mathbf{x_i})-y_i-\epsilon-\xi_i^+)+\sum_{i=1}^m\lambda_i^-(f(\mathbf{x_i})-y_i-\epsilon-\xi_i^-) \end{aligned}
L(w,b,λ+,λ−,ξ+,ξ−,μ+,μ−)=21∥w∥2+Ci=1∑m(ξi++ξi−)−i=1∑mμi+ξi+−i=1∑mμi−ξi−+i=1∑mλi+(f(xi)−yi−ϵ−ξi+)+i=1∑mλi−(f(xi)−yi−ϵ−ξi−)
然后分别对
w
,
b
,
ξ
i
+
,
ξ
i
−
\mathbf{w}, b, \xi_i^+, \xi_i^-
w,b,ξi+,ξi−求偏导数,令偏导数为零,代入拉格朗日函数即可得到其对偶问题
max
λ
+
,
λ
−
∑
i
=
1
m
(
y
i
(
λ
i
−
−
λ
i
+
)
−
ϵ
(
λ
i
−
+
λ
i
+
)
)
−
1
2
∑
i
=
1
m
∑
i
=
1
m
(
λ
i
−
−
λ
i
+
)
(
λ
j
−
−
λ
j
+
)
x
i
⊤
x
j
s.t.
∑
i
=
1
m
(
λ
i
−
−
λ
i
+
)
=
0
0
≤
λ
i
−
,
λ
i
+
≤
C
\max_{\mathbf{\lambda^+}, \mathbf{\lambda^-}} \sum_{i=1}^m\left(y_i(\lambda_i^--\lambda_i^+)-\epsilon(\lambda_i^-+\lambda_i^+)\right)\\-\frac{1}{2}\sum_{i=1}^m\sum_{i=1}^m(\lambda_i^--\lambda_i^+)(\lambda_j^--\lambda_j^+)\mathbf{x_i}^\top\mathbf{x_j}\\ \text{s.t.}\quad \sum_{i=1}^m(\lambda_i^--\lambda_i^+) = 0\\ 0\leq \lambda_i^-, \lambda_i^+\leq C
λ+,λ−maxi=1∑m(yi(λi−−λi+)−ϵ(λi−+λi+))−21i=1∑mi=1∑m(λi−−λi+)(λj−−λj+)xi⊤xjs.t.i=1∑m(λi−−λi+)=00≤λi−,λi+≤C
上述问题的KKT条件为
{
w
=
∑
i
=
1
m
(
λ
i
−
−
λ
i
+
)
x
i
∑
i
=
1
m
(
λ
i
−
−
λ
i
+
)
=
0
λ
i
+
+
μ
i
+
=
0
,
λ
i
−
+
μ
i
−
=
0
λ
i
+
(
f
(
x
i
)
+
y
i
−
ϵ
−
ξ
i
+
)
=
0
λ
i
−
(
f
(
x
i
)
+
y
i
−
ϵ
−
ξ
i
−
)
=
0
λ
i
+
λ
i
−
=
0
,
ξ
i
+
ξ
i
−
=
0
(
C
−
λ
i
+
)
ξ
i
+
=
0
,
(
C
−
λ
i
−
)
ξ
i
−
=
0
\left\{ \begin{aligned} \mathbf{w} = \sum_{i=1}^m(\lambda_i^--\lambda_i^+)\mathbf{x_i}\\ \sum_{i=1}^m(\lambda_i^--\lambda_i^+) = 0\\ \lambda_i^++\mu_i^+ = 0, \quad\lambda_i^-+\mu_i^-=0\\ \lambda_i^+(f(\mathbf{x_i})+y_i-\epsilon-\xi_i^+) = 0\\ \lambda_i^-(f(\mathbf{x_i})+y_i-\epsilon-\xi_i^-) = 0\\ \lambda_i^+\lambda_i^- = 0,\quad \xi_i^+\xi_i^-=0\\ (C-\lambda_i^+)\xi_i^+=0,\quad(C-\lambda_i^-)\xi_i^-=0 \end{aligned} \right.
⎩
⎨
⎧w=i=1∑m(λi−−λi+)xii=1∑m(λi−−λi+)=0λi++μi+=0,λi−+μi−=0λi+(f(xi)+yi−ϵ−ξi+)=0λi−(f(xi)+yi−ϵ−ξi−)=0λi+λi−=0,ξi+ξi−=0(C−λi+)ξi+=0,(C−λi−)ξi−=0
可以看出,只有当
f
(
x
i
)
+
y
i
−
ϵ
−
ξ
i
+
=
0
f(\mathbf{x_i})+y_i-\epsilon-\xi_i^+=0
f(xi)+yi−ϵ−ξi+=0或者
f
(
x
i
)
+
y
i
−
ϵ
−
ξ
i
−
=
0
f(\mathbf{x_i})+y_i-\epsilon-\xi_i^-=0
f(xi)+yi−ϵ−ξi−=0时,
λ
i
+
\lambda_i^+
λi+和
λ
i
−
\lambda_i^-
λi−才有可能取非零值,并且
f
(
x
i
)
+
y
i
−
ϵ
−
ξ
i
+
=
0
f(\mathbf{x_i})+y_i-\epsilon-\xi_i^+=0
f(xi)+yi−ϵ−ξi+=0和
f
(
x
i
)
+
y
i
−
ϵ
−
ξ
i
−
=
0
f(\mathbf{x_i})+y_i-\epsilon-\xi_i^-=0
f(xi)+yi−ϵ−ξi−=0不能同时成立,也就是说只有当样本
(
x
i
,
y
i
)
(\mathbf{x_i}, y_i)
(xi,yi)落在间隔带之外,
λ
i
+
\lambda_i^+
λi+和
λ
i
−
\lambda_i^-
λi−才有可能取非零值。
同时我们可以得出SVR的解
f
(
x
)
=
∑
i
=
1
m
(
λ
i
−
−
λ
i
+
)
x
i
⊤
x
+
b
f(\mathbf{x}) = \sum_{i=1}^m(\lambda_i^--\lambda_i^+)\mathbf{x_i}^\top\mathbf{x}+b
f(x)=i=1∑m(λi−−λi+)xi⊤x+b
能使
λ
i
−
−
λ
i
+
≠
0
\lambda_i^--\lambda_i^+\neq 0
λi−−λi+=0的样本即为SVR的支持向量,可知SVR的支持向量必然落在
ϵ
\epsilon
ϵ-间隔带之外。SVR的支持向量仅为训练样本的一部分,其解依然具有稀疏性。
关于
b
b
b的求解,对于每个样本
(
x
i
,
y
i
)
(\mathbf{x_i}, y_i)
(xi,yi)都有
(
C
−
λ
i
)
ξ
i
=
0
(C-\lambda_i)\xi_i=0
(C−λi)ξi=0且
λ
i
(
f
(
x
i
)
−
y
i
−
ϵ
+
ξ
i
)
=
0
\lambda_i(f(\mathbf{x_i})-y_i-\epsilon+\xi_i)=0
λi(f(xi)−yi−ϵ+ξi)=0,于是,得到
λ
i
\lambda_i
λi之后,只要
0
<
λ
i
<
C
0<\lambda_i<C
0<λi<C,则必有
ξ
i
=
0
\xi_i=0
ξi=0,进而可以得出
f
(
x
i
)
−
y
i
−
ϵ
+
ξ
i
=
0
f(\mathbf{x_i})-y_i-\epsilon+\xi_i = 0
f(xi)−yi−ϵ+ξi=0
因此
b
b
b可以求出(
b
b
b包含在
f
(
x
i
)
f(\mathbf{x_i})
f(xi)中,展开变形即可)。实践中采用更鲁棒的方法,选取多个满足
0
<
λ
i
<
C
0<\lambda_i<C
0<λi<C的样本,求解出对应的
b
b
b后取平均值。
在考虑特征映射,则SVR可以表示为
f
(
x
)
=
∑
i
=
1
m
(
λ
i
−
−
λ
i
+
)
κ
(
x
i
,
x
)
+
b
f(\mathbf{x}) = \sum_{i=1}^m(\lambda_i^--\lambda_i^+)\kappa(\mathbf{x_i}, \mathbf{x})+b
f(x)=i=1∑m(λi−−λi+)κ(xi,x)+b
其中
κ
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
⊤
ϕ
(
x
j
)
\kappa(\mathbf{x_i}, \mathbf{x_j})=\phi(\mathbf{x_i})^\top\phi(\mathbf{x_j})
κ(xi,xj)=ϕ(xi)⊤ϕ(xj)为核函数,由此我们完成了支持向量回归的相关推导。