参考周老师的《机器学习》
在SVM第一章中,我们假设训练样本是线性可分的。当训练样本不能线性可分时,又该怎么办呢?别怕,核函数来啦。
下面这张图片左边是原始训练样本空间,通过将样本映射到一个三维空间后,我们发现可以找到一个超平面将他们正确分开,也就是说线性可分。因此,找到这样的一个高维映射成为关键的一环。
周老师的书里提到:如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本线性可分。
现在,我们先假设我们找到了这样的高维空间,把 x x 映射到。那么在高维空间里进行的方法和我们第一章一模一样。
原始问题是:
min12||w||2
min
1
2
|
|
w
|
|
2
s.t.yi(wTϕ(xi)+b)≥1,i=1,2,...,n
s
.
t
.
y
i
(
w
T
ϕ
(
x
i
)
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
n
对偶问题是:
max∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjϕ(xi)Tϕ(xj)
max
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
(
x
i
)
T
ϕ
(
x
j
)
s.t.αi≥0,i=1,2,...,n
s
.
t
.
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
n
∑ni=1αiyi=0
∑
i
=
1
n
α
i
y
i
=
0
因此如何计算 ϕ(xi)Tϕ(xj) ϕ ( x i ) T ϕ ( x j ) 成为关键性问题。上面我们提到:如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本线性可分。而这个高维特征空间维数可能很高,甚至是无限维,因此直接计算高维空间里的内积很困难。那我们另辟蹊径—-核函数来了!
核函数:
k(xi,xj)=ϕ(xi)Tϕ(xj)
k
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
因此将上面的对偶问题重写为:
max∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjk(xi,xj)
max
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
k
(
x
i
,
x
j
)
s.t.αi≥0,i=1,2,...,n
s
.
t
.
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
n
∑ni=1αiyi=0
∑
i
=
1
n
α
i
y
i
=
0
最终模型是:
f(x)=wTϕ(x)+b=∑ni=1αiyiϕ(xi)Tϕ(x)+b=∑ni=1αiyik(xi,x)+b
f
(
x
)
=
w
T
ϕ
(
x
)
+
b
=
∑
i
=
1
n
α
i
y
i
ϕ
(
x
i
)
T
ϕ
(
x
)
+
b
=
∑
i
=
1
n
α
i
y
i
k
(
x
i
,
x
)
+
b
什么样的函数可以做核函数呢?
Mercer定理:一个对称函数所对应的核矩阵半正定,它就可以作为核函数。
任何一个核函数都隐式地定义了一个称为“再生核希尔伯特空间RKHS”的特征空间。
注意:前面我们提到,如果原始空间是有限维,那么一定存在一个高维特征空间使样本可分。但是我们并不知道这个高维空间是什么,我们又知道一个核函数对应了一个特征空间,因此核函数的选择十分重要,如果核函数选的不合适,意味着无法在高维空间里线性可分。
核函数选择成为SVM的最大变数。
我们列出几种常用的核函数:
- 线性核 k(xi,xj)=xTixj k ( x i , x j ) = x i T x j
- 多项式核 k(xi,xj)=(xTixj)d k ( x i , x j ) = ( x i T x j ) d ,其中 d≥1为多项式的次数 d ≥ 1 为 多 项 式 的 次 数
- 高斯核(亦称RBF核) k(xi,xj)=exp(−||xi−xj||22σ2) k ( x i , x j ) = e x p ( − | | x i − x j | | 2 2 σ 2 ) , σ>0为高斯核的带宽 σ > 0 为 高 斯 核 的 带 宽
- 拉普拉斯核 k(xi,xj)=exp(−||xi−xj||σ) k ( x i , x j ) = e x p ( − | | x i − x j | | σ ) , σ>0 σ > 0
- Sigmoid核 k(xi,xj)=tanh(βxTixj+θ) k ( x i , x j ) = t a n h ( β x i T x j + θ ) , tanh t a n h 为双曲正切函数, β>0,θ<0 β > 0 , θ < 0
此外,还可以通过函数组合得到:
- k1 k 1 和 k2 k 2 为核函数,对于任意正数 γ1,γ2 γ 1 , γ 2 ,其线性组合 γ1k1+γ2k2 γ 1 k 1 + γ 2 k 2 也是核函数
- k1 k 1 和 k2 k 2 为核函数, k1(x,z)k2(x,z) k 1 ( x , z ) k 2 ( x , z ) 也为核函数
- k1 k 1 为核函数,对于任意函数 g(x) g ( x ) , g(x)k1(x,z)g(z) g ( x ) k 1 ( x , z ) g ( z ) 也为核函数