SVM进阶
核函数
在推导SVM公式时,我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在实际应用中,原始样本空间也许并不存在一个能正确划分样本类的超平面。例如,“异或”问题就不是线性可分的。
对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
令
ϕ
(
x
)
\phi(x)
ϕ(x)表示将
x
x
x映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为
f
(
x
)
=
w
T
ϕ
(
x
)
+
b
f(x) = w^T\phi(x)+b
f(x)=wTϕ(x)+b其中
w
w
w和
b
b
b是模型参数。其模型可表示为
min
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
ϕ
(
x
i
)
+
b
)
≥
1
,
i
=
1
,
2
,
…
,
m
.
\min\limits_{w,b}\frac{1}{2}||w||^2 \\ s.t. ~~~~ y_i(w^T\phi(x_i)+b)\geq1,i=1,2,\ldots,m.
w,bmin21∣∣w∣∣2s.t. yi(wTϕ(xi)+b)≥1,i=1,2,…,m.其对偶问题为:
(1)
max
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
ϕ
(
x
i
)
T
ϕ
(
x
j
)
T
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
≥
0
,
i
=
1
,
2
,
…
,
m
.
\tag{1}\max\limits_\alpha\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j)^T \\ s.t.~~~~\sum_{i=1}^{m}\alpha_iy_i=0, \\ \alpha_i \geq0,i=1,2,\ldots,m.
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjϕ(xi)Tϕ(xj)Ts.t. i=1∑mαiyi=0,αi≥0,i=1,2,…,m.(1)
求解上式涉及到计算
θ
(
x
i
)
T
θ
(
x
j
)
\theta(x_i)^T\theta(x_j)
θ(xi)Tθ(xj),这是样本
x
i
x_i
xi与
x
j
x_j
xj映射到特征空间后的内积。由于特征空间维数可能很高,甚至无穷维,直接计算困难。为了避开这个障碍,可以设想一个函数:
(2)
κ
(
x
i
,
x
j
)
=
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\tag{2}\kappa(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle=\phi(x_i)^T\phi(x_j)
κ(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)(2)把(2)式带入(1)式可得
(3)
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
.
\tag{3}\max\limits_\alpha\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\kappa(x_i,x_j) \\ s.t.~~~~\sum_{i=1}^{m}\alpha_iy_i=0, \\ \alpha_i \geq0,i=1,2,\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,2,…,m.(3)求解后可得
(4)
f
(
x
)
=
w
T
ϕ
(
x
)
+
b
=
∑
i
=
1
m
α
i
y
i
ϕ
(
x
i
)
T
ϕ
(
x
)
+
b
=
∑
i
=
1
m
α
i
y
i
κ
(
x
,
x
i
)
+
b
\tag{4}f(x) = w^T\phi(x)+b=\sum_{i=1}^{m}\alpha_iy_i\phi(x_i)^T\phi(x)+b=\sum_{i=1}^{m}\alpha_iy_i\kappa(x,x_i)+b~~
f(x)=wTϕ(x)+b=i=1∑mαiyiϕ(xi)Tϕ(x)+b=i=1∑mαiyiκ(x,xi)+b (4)
核函数定理
令 χ \chi χ为输入空间, κ ( ⋅ , ⋅ ) \kappa(\cdot,\cdot) κ(⋅,⋅)是定义在 χ \chi χ x χ \chi χ上的对称函数,则 κ \kappa κ是核函数当且仅当对于任意数据 D = { x 1 , x 2 , … , x m } D=\{x_1, x_2, \dots, x_m\} D={x1,x2,…,xm},“核矩阵” K K K总是半正定的: (5) K = [ κ ( x 1 , x 2 ) … κ ( x 1 , x j ) … κ ( x 1 , x m ) ⋮ ⋱ ⋮ ⋱ ⋮ κ ( x i , x 1 ) … κ ( x i , x j ) … κ ( x i , x m ) ⋮ ⋱ ⋮ ⋱ ⋮ κ ( x m , x 1 ) … κ ( x m , x j ) … κ ( x m , x m ) ] \tag{5}K = \begin{bmatrix} \kappa(x_1,x_2) & \ldots & \kappa(x_1, x_j) &\ldots&\kappa(x_1,x_m) \\ \vdots & \ddots & \vdots &\ddots&\vdots\\ \kappa(x_i,x_1)&\ldots&\kappa(x_i,x_j)&\ldots&\kappa(x_i,x_m)\\ \vdots & \ddots & \vdots &\ddots&\vdots\\ \kappa(x_m,x_1)&\ldots&\kappa(x_m,x_j)&\ldots&\kappa(x_m,x_m) \end{bmatrix} K=⎣⎢⎢⎢⎢⎢⎢⎡κ(x1,x2)⋮κ(xi,x1)⋮κ(xm,x1)…⋱…⋱…κ(x1,xj)⋮κ(xi,xj)⋮κ(xm,xj)…⋱…⋱…κ(x1,xm)⋮κ(xi,xm)⋮κ(xm,xm)⎦⎥⎥⎥⎥⎥⎥⎤(5)公式(5)表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射 ϕ \phi ϕ。换言之,任何一个核函数都隐式地定义了一个称为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,简称RKHS)的特征空间。
通过前面的讨论可知,我们希望样本在特征向量空间内线性可分,因此特征空间的好坏对支持向量机的性能至关重要。需要注意的是,在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,而核函数也仅是隐式的定义了这个特征空间。于是,“核函数选择”成为支持向量机的最大变数。若核函数选择不合适,则意味着将本样本映射到了一个不合适的特征空间,很可能导致性能不佳。
名称 | 表达式 | 参数 |
---|---|---|
线性核 | κ ( x i , x j ) = x i T x j \kappa(x_i,x_j)=x_i^Tx_j κ(xi,xj)=xiTxj | |
多项式核 | κ ( x i , x j ) = ( x i T x j ) d \kappa(x_i,x_j)=(x_i^T x_j)^d κ(xi,xj)=(xiTxj)d | d ≥ 1 d\geq1 d≥1为多项式的次数 |
高斯核 | κ ( x i , x j ) = e x p ( ∥ x i − x j ∥ 2 2 σ 2 ) \kappa(x_i,x_j)=exp(\frac{\|x_i-x_j\|^2}{2\sigma^2}) κ(xi,xj)=exp(2σ2∥xi−xj∥2) | σ > 0 \sigma>0 σ>0为高斯核的带宽 |
拉普拉斯核 | κ ( x i , x j ) = e x p ( − ∥ x i − x j ∥ 2 2 σ 2 ) \kappa(x_i,x_j)=exp(-\frac { \|x_i-x_j\|^2} {2\sigma^2}) κ(xi,xj)=exp(−2σ2∥xi−xj∥2) | σ > 0 \sigma>0 σ>0 |
Sigmoid核 | κ ( x i , x j ) = t a n h ( β x i T x j + θ ) \kappa(x_i,x_j)=tanh(\beta x_i^Tx_j+\theta) κ(xi,xj)=tanh(βxiTxj+θ) | t a n h tanh tanh为双曲正切函数, β > 0 , θ < 0 \beta>0,\theta<0 β>0,θ<0 |
此外,还可以通过组合得到,例如:
- 若 κ 1 \kappa_1 κ1和 κ 2 \kappa_2 κ2为核函数,则对于任意正数 γ 1 \gamma_1 γ1、 γ 2 \gamma_2 γ2,其线性组合, γ 1 κ 1 + γ 2 κ 2 \gamma_1\kappa_1+\gamma_2\kappa_2 γ1κ1+γ2κ2也是核函数
- 若 κ 1 \kappa_1 κ1和 κ 2 \kappa_2 κ2为核函数,则核函数的直积, κ 1 ⊗ κ ( x , z ) = κ 1 ( x , z ) κ 2 ( x , z ) \kappa_1\otimes\kappa(x,z)=\kappa_1(x,z)\kappa_2(x,z) κ1⊗κ(x,z)=κ1(x,z)κ2(x,z)也是核函数
- 若 κ 1 \kappa_1 κ1为核函数,则对于任意函数 g ( x ) g(x) g(x), κ ( x , z ) = g ( x ) κ 1 ( x , z ) g ( z ) \kappa(x,z)=g(x)\kappa_1(x,z)g(z) κ(x,z)=g(x)κ1(x,z)g(z)也是核函数