线性分类器
线性分类器是
n
n
n 维空间中的分类超平面,它将空间分成两个部分。这个超平面的方程为
w
T
x
+
b
=
0
,
\mathbf{w}^{\text{T}} \mathbf{x} + b = 0,
wTx+b=0, 其中,
x
\mathbf{x}
x 是输入向量,
w
\mathbf{w}
w是权重向量,
b
b
b是偏置。
下面以二分类问题为例:
对于一个样本,若满足
w
T
x
+
b
≥
0
,
\mathbf{w}^{\text{T}} \mathbf{x} + b \ge 0,
wTx+b≥0, 则被判定为正样本,反之被判定为负样本。于是,线性分类器的判别函数可以写为
sgn
(
w
T
x
+
b
)
.
\text{sgn} \left( \mathbf{w}^{\text{T}} \mathbf{x} + b\right).
sgn(wTx+b).
但是,一般情况下,给定一组训练样本可以得到不止一个线性分类器。为了得到泛化性能更好的分类器,我们希望分类平面不应偏向于任何一类,并且离两个类的样本尽可能的远,即最大化分类间隔。
线性可分问题
如果两类样本可以通过一个超平面分开,我们称样本为线性可分的。
原问题
支持向量机的目标是寻找一个分类超平面,满足
- Condition 1: 正确分类每一个样本。
- Condition 2: 每一类样本中距离超平面最近的样本到超平面的距离尽可能地远。
假设训练样本集有 l l l 个样本, 特征向量 x i \mathbf{x}_{i} xi 是 n n n 维向量, y i ∈ { + 1 , − 1 } . y_{i} \in \{ +1, -1\}. yi∈{+1,−1}.
Condition 1 就可以被描述为
{
w
T
x
i
+
b
≥
0
,
y
i
=
+
1
,
w
T
x
i
+
b
<
0
,
y
i
=
−
1
,
\begin{cases}\mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \ge 0, \quad y_{i} = +1, \\ \mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \lt 0, \quad y_{i} = -1, \end{cases}
{wTxi+b≥0,yi=+1,wTxi+b<0,yi=−1,
等价地,有
y
i
(
w
T
x
i
+
b
)
≥
0.
y_{i} \left(\mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \right) \ge 0.
yi(wTxi+b)≥0.
Condition 2 就可以被描述为最大化
d
d
d,
d
=
∣
w
T
x
i
+
b
∣
∣
∣
w
∣
∣
,
d = \frac{\lvert \mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \rvert}{|| \mathbf{w} ||},
d=∣∣w∣∣∣wTxi+b∣,
其中,
∣
∣
w
∣
∣
|| \mathbf{w} ||
∣∣w∣∣ 是
L
2
L_{2}
L2 范数。考虑到在超平面方程中两边同时乘不为零的常数后还是同一个超平面,所以可以加上如下约束
min
x
i
∣
w
T
x
i
+
b
∣
=
1.
\min_{\mathbf{x}_{i}} \, \lvert \mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \rvert = 1.
ximin∣wTxi+b∣=1.
Condition 1 就可以表示为
y
i
(
w
T
x
i
+
b
)
≥
1.
y_{i} \left(\mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \right) \ge 1.
yi(wTxi+b)≥1.
Condition 2 就是最大化如下的
d
(
w
,
b
)
d(\mathbf{w}, b)
d(w,b)
d
(
w
,
b
)
=
min
x
i
⋅
y
i
=
−
1
d
(
w
,
b
;
x
i
)
+
min
x
i
⋅
y
i
=
+
1
d
(
w
,
b
;
x
i
)
=
2
∣
∣
w
∣
∣
\begin{aligned}d(\mathbf{w}, b) & = \min_{x_{i} \cdot y_{i} = -1} d(\mathbf{w}, b; \mathbf{x}_{i}) + \min_{x_{i} \cdot y_{i} = +1} d(\mathbf{w}, b; \mathbf{x}_{i}) \\ & = \frac{2}{|| \mathbf{w} ||} \end{aligned}
d(w,b)=xi⋅yi=−1mind(w,b;xi)+xi⋅yi=+1mind(w,b;xi)=∣∣w∣∣2
考虑前面定义的约束条件后,求解的优化问题可以写为
{
min
1
2
∣
∣
w
∣
∣
2
y
i
(
w
T
x
i
+
b
)
≥
1
\begin{cases} & \min \, \frac{1}{2} || \mathbf{w} ||^{2} \\ & y_{i} \left(\mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \right) \ge 1 \end{cases}
{min21∣∣w∣∣2yi(wTxi+b)≥1
由于目标函数是一个严格凸函数,所以此优化问题是一个凸优化问题。
对偶问题
考虑到上述凸优化问题带有大量不等式约束,不易求解,可以用拉格朗日对偶转化为对偶问题。首先为上述优化问题构造拉格朗日函数
L
(
w
,
b
,
α
)
=
1
2
w
T
w
−
∑
i
=
1
l
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
,
L(\mathbf{w}, b, \mathbf{\alpha}) = \frac{1}{2} \mathbf{w}^{\text{T}} \mathbf{w} - \sum_{i=1}^{l} \alpha_{i} \left[ y_{i} (\mathbf{w}^{\text{T}} x_{i} + b) - 1\right],
L(w,b,α)=21wTw−i=1∑lαi[yi(wTxi+b)−1], 其中
α
i
≥
0.
\alpha_{i} \ge 0.
αi≥0.
接下来,求解此对偶问题,首先把
α
\mathbf{\alpha}
α 固定, 对其他参数求偏导并令它们为0,即
{
∂
L
∂
b
=
0
∇
w
L
=
0
\begin{cases} \frac{\partial L}{ \partial b} = 0 \\ \nabla_{\mathbf{w}} \, L = 0 \end{cases}
{∂b∂L=0∇wL=0 从上面的两个方程中我们可以得到
{
∑
i
=
1
l
α
i
y
i
=
0
w
=
∑
i
=
1
l
α
i
y
i
x
i
\begin{cases} \sum_{i=1}^{l} \alpha_{i} y_{i} = 0 \\ \mathbf{w} = \sum_{i=1}^{l} \alpha_{i}y_{i} \mathbf{x}_{i} \end{cases}
{∑i=1lαiyi=0w=∑i=1lαiyixi
带入拉格朗日函数中消去
w
\mathbf{w}
w 和
b
b
b 后调整拉格朗日乘子,从而使目标函数取最大值。之后可以等价的转化为最小化目标函数的问题。即
{
min
α
1
2
∑
i
,
j
=
1
l
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
l
α
i
α
i
≥
0
,
i
=
1
,
2
,
⋯
,
l
∑
i
=
1
l
α
i
y
i
=
0
\begin{cases} & \min_{\mathbf{\alpha} } \, \frac{1}{2}\sum_{i, j = 1}^{l} \alpha_{i}\alpha_{j} y_{i}y_{j} \mathbf{x}_{i}^{\text{T}} \mathbf{x}_{j} - \sum_{i=1}^{l} \alpha_{i} \\ & \alpha_{i} \ge 0, \quad i =1, 2, \cdots, l \\ & \sum_{i=1}^{l} \alpha_{i} y_{i} = 0 \end{cases}
⎩⎪⎨⎪⎧minα21∑i,j=1lαiαjyiyjxiTxj−∑i=1lαiαi≥0,i=1,2,⋯,l∑i=1lαiyi=0
因此,我们可以求解出
α
\mathbf{\alpha}
α, 进而求出
w
\mathbf{w}
w 和
b
.
b.
b.
线性不可分问题
由于现实应用中的样本一般都不是线性可分的,因此,需要对线性可分的支持向量机进行扩展以便处理线性不可分问题的支持向量机。
原问题
利用松弛变量和惩罚因子,我们可以得到如下最优化问题:
{
min
1
2
w
T
w
+
C
∑
i
=
1
l
ξ
i
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
,
i
=
1
,
2
,
…
,
l
\begin{cases} & \min \frac{1}{2} \mathbf{w}^{\text{T}} \mathbf{w} + C\sum_{i=1}^{l} \xi_{i} \\ & y_{i} \left(\mathbf{w}^{\text{T}} \mathbf{x}_{i} + b \right) \ge 1 - \xi_{i} \\ & \xi_{i} \ge 0, i = 1, 2, \ldots, l \end{cases}
⎩⎪⎨⎪⎧min21wTw+C∑i=1lξiyi(wTxi+b)≥1−ξiξi≥0,i=1,2,…,l
其中,
ξ
i
\xi_{i}
ξi 是松弛变量,
C
>
0
C \gt 0
C>0 为惩罚因子,用来表示对违反不等式约束的样本进行惩罚。
由于目标函数的后半部分为线性函数,线性函数为凸函数,而整个目标函数是两个凸函数的线性组合,也为凸函数。所以该优化问题为凸优化问题。
对偶问题
接下来,我们构造对偶问题中的拉格朗日函数
L
(
w
,
b
,
α
,
ξ
,
β
)
=
1
2
w
T
w
+
C
∑
i
=
1
l
ξ
i
−
∑
i
=
1
l
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
+
ξ
i
]
−
∑
i
=
1
l
β
i
ξ
i
,
L(\mathbf{w}, b, \mathbf{\alpha}, \mathbf{\xi}, \mathbf{\beta}) = \frac{1}{2} \mathbf{w}^{\text{T}} \mathbf{w} + C \sum_{i=1}^{l} \xi_{i} - \sum_{i=1}^{l} \alpha_{i} \left[ y_{i} (\mathbf{w}^{\text{T}} x_{i} + b) - 1 + \xi_{i}\right] - \sum_{i=1}^{l} \beta_{i} \xi_{i},
L(w,b,α,ξ,β)=21wTw+Ci=1∑lξi−i=1∑lαi[yi(wTxi+b)−1+ξi]−i=1∑lβiξi,
之后,采用标准方法,我们可以得到如下最优化问题
{
min
α
1
2
∑
i
,
j
=
1
l
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
l
α
i
0
≤
α
i
≤
C
,
i
=
1
,
2
,
⋯
,
l
∑
i
=
1
l
α
i
y
i
=
0
\begin{cases} & \min_{\mathbf{\alpha} } \, \frac{1}{2}\sum_{i, j = 1}^{l} \alpha_{i}\alpha_{j} y_{i}y_{j} \mathbf{x}_{i}^{\text{T}} \mathbf{x}_{j} - \sum_{i=1}^{l} \alpha_{i} \\ & 0 \le \alpha_{i} \le C, \quad i =1, 2, \cdots, l \\ & \sum_{i=1}^{l} \alpha_{i} y_{i} = 0 \end{cases}
⎩⎪⎨⎪⎧minα21∑i,j=1lαiαjyiyjxiTxj−∑i=1lαi0≤αi≤C,i=1,2,⋯,l∑i=1lαiyi=0
之后便可以用凸优化方法进行求解。
核函数
上述的支持向量机本质都是线性分类器,为了处理非线性问题,我们要引入核映射:如果样本线性不可分,可以将特征向量映射到高维空间,使之在高维空间中是线性可分的。设核映射为
ϕ
\phi
ϕ, 即
z
=
ϕ
(
x
)
.
\mathbf{z} = \phi (\mathbf{x}).
z=ϕ(x).
在对偶问题的计算中,我们会遇到两个向量的内积,在核映射后,内积为
z
i
T
z
j
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\mathbf{z}_{i}^{\text{T}} \mathbf{z}_{j} = \phi(\mathbf{x}_{i})^{\text{T}} \phi(\mathbf{x}_{j})
ziTzj=ϕ(xi)Tϕ(xj)
直接计算这个映射的效率低,且核映射不太容易构造出来。但是如果映射函数选择的合适,则存在函数
K
K
K,使得
K
(
x
i
,
x
j
)
=
K
(
x
i
T
,
x
j
)
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
.
K(\mathbf{x}_{i}, \mathbf{x}_{j}) = K(\mathbf{x}_{i}^{\text{T}}, \mathbf{x}_{j}) =\phi(\mathbf{x}_{i})^{\text{T}} \phi(\mathbf{x}_{j}).
K(xi,xj)=K(xiT,xj)=ϕ(xi)Tϕ(xj).
这样就只需要先对变换前的向量做内积后用函数
K
K
K 变换来代替先做核映射再做内积。
最后给出常用核函数及其表达式:
核函数 | 表达式 |
---|---|
线性核 | K ( x i , x j ) = x i T x j K(\mathbf{x}_{i}, \mathbf{x}_{j} ) =\mathbf{x}_{i}^{\text{T}}\mathbf{x}_{j} K(xi,xj)=xiTxj |
多项式核 | K ( x i , x j ) = ( γ x i T x j + b ) d K(\mathbf{x}_{i}, \mathbf{x}_{j} ) =\left( \gamma\mathbf{x}_{i}^{\text{T}}\mathbf{x}_{j}+ b \right)^{d} K(xi,xj)=(γxiTxj+b)d |
高斯核 | K ( x i , x j ) = exp ( − γ ∥ x i − x j ∥ 2 ) K(\mathbf{x}_{i}, \mathbf{x}_{j} ) = \exp\left( -\gamma \| \mathbf{x}_{i} - \mathbf{x}_{j} \|^{2}\right) K(xi,xj)=exp(−γ∥xi−xj∥2) |
sigmoid 核 | K ( x i , x j ) = tanh ( γ x i T x j + b ) K(\mathbf{x}_{i}, \mathbf{x}_{j} )=\tanh\left( \gamma \mathbf{x}_{i}^{\text{T}}\mathbf{x}_{j} + b \right) K(xi,xj)=tanh(γxiTxj+b) |