核方法可以说是支持向量机的灵魂所在,是SVM中最为关键重要的内容。在面对一些非线性问题时,前面我们所讲的线程处理方式最终的效果差强人意。因此针对于非线性的核方法便应运而生。下面将会从核技巧、正定何证明、核技巧在SVM中的应用三个方面进行主要的介绍,最后会提供几种常用的核函数
核技巧
首先应明确核函数处理的问题:低维不可分
核方法定义:
K
(
x
,
z
)
=
φ
(
x
)
.
φ
(
z
)
K(x,z)=φ(x).φ(z)
K(x,z)=φ(x).φ(z)
针对一个非线性问题一般不容易进行求解,通常情况下我们会对该问题进行变换,使之成为我们常见的线性问题。核方法采取的就是这种思想,通过一个相关的非线性变化,将非线性问题转化为一个线性问题后再进行学习。
核方法中通常将存在于欧式空间的输入数据通过一个相应的映射,映射到一个希尔伯特空间内形成相应的特征空间。通常这个特征空间维度要高于甚至远高于原本的欧式空间。然后再用现行分类学习的方法在这个特征空间上进行学习。(如下图所示,2维不可分,映射到三维的希尔伯特空间进行简单的线性划分就表现得非常好)
核技巧:
φ
(
x
)
φ(x)
φ(x)转换后维度高,计算量大计算复杂度高,因此我们并不通过
φ
(
x
)
φ
(
z
)
φ(x)φ(z)
φ(x)φ(z)来得到
K
(
x
,
z
)
K(x,z)
K(x,z),而是直接计算
K
(
x
,
z
)
K(x,z)
K(x,z),避免了显式的定义映射函数
φ
(
x
)
φ(x)
φ(x)及庞大的计算量
线性方法解决非线性问题(核方法)小结:
1:使用映射将原本数据的输入空间映射到特征空间上
2:使用线性分类方法在特征空间上进行学习分类
正定核证明
在SVM核方法中我们所说的核函数就是正定核函数,正定核函数其实有一个充要条件,设K:X*X∈R的空间中是对称函数,则K(x,z)为正定核函数的充要条件是对任意的
x
i
∈
X
x_i∈X
xi∈X,K(x,z)对应的Gram矩阵是半正定矩阵
换句话说针对一个K(x,z)我们只要证明其Gram矩阵为半正定矩阵那么该函数就是一个正定核函数。下面我们对上述定理的必要性、充分性进行证明。
先验知识:Gram matrix(格拉姆矩阵)
格拉姆矩阵是由两个向量之间的内积构成,内积形成了一个标量,量化了特征空间内两两向量之间的相关性
而且从下图可以明显地发现格拉姆矩阵是一个对称矩阵
必要性证明
必要性:已知 K ( x , z ) K(x,z) K(x,z)为正定核函数,证明其Gram矩阵为半正定矩阵
由于
K
(
x
,
z
)
K(x,z)
K(x,z)是
R
R
R上的正定核,所以存在从R到希尔伯特空间H的映射:
K
(
x
,
z
)
=
φ
(
x
)
.
φ
(
z
)
K(x,z)=φ(x).φ(z)
K(x,z)=φ(x).φ(z)
其中对于任意的向量
x
i
x_i
xi,构造
K
(
x
,
z
)
K(x,z)
K(x,z)的Gram矩阵
G
r
a
m
=
[
K
(
x
i
,
x
j
)
]
m
∗
m
Gram = [K(x_i,x_j)]_{m*m}
Gram=[K(xi,xj)]m∗m
半正定定义:对于任意的≠0的向量
x
i
x_i
xi,都有
x
i
T
A
x
i
≥
0
x_i^TAx_i≥0
xiTAxi≥0,我们称A矩阵为半正定矩阵
利用这个定理,对于任意的向量
c
i
,
c
j
c_i,c_j
ci,cj有:
∑
i
m
∑
j
m
c
i
T
c
j
K
(
x
,
z
)
=
∑
i
m
∑
j
m
c
i
T
c
j
φ
(
x
i
)
.
φ
(
x
j
)
=
(
∑
i
m
c
i
φ
(
x
i
)
)
.
(
∑
j
m
c
j
φ
(
x
j
)
)
\sum_i^m\sum_j^mc_{i}^Tc_{j}K(x,z)=\sum_i^m\sum_j^mc_{i}^Tc_{j}φ(x_i).φ(x_j)=(\sum_i^mc_{i}φ(x_i)).(\sum_j^mc_{j}φ(x_j))
∑im∑jmciTcjK(x,z)=∑im∑jmciTcjφ(xi).φ(xj)=(∑imciφ(xi)).(∑jmcjφ(xj))
=
∣
∣
∑
i
m
c
i
φ
(
x
i
)
∣
∣
2
≥
0
=||\sum_i^mc_{i}φ(x_i)||^2≥0
=∣∣∑imciφ(xi)∣∣2≥0
必要性得证
在这里较为繁琐又涉及到一些先验知识,输入空间映射到完备的希尔伯特空间的转换(以下证明来自于李航统计学习方法,部分修改增减)
可以简单的分为三个步䠫:
前提:对称函数K(x,z)对应的Gram矩阵是半正定矩阵
1:定义映射φ并构成向量空间S
2:在S上定义内积构成内积空间
3:将S完备化构成希尔伯特空间
1:定义映射φ并构成向量空间S
定义一个映射
φ
:
x
−
−
>
K
(
。
,
x
)
φ:x-->K(。,x)
φ:x−−>K(。,x)
进行我们可以借此进行现行的表示
f
(
。
)
=
∑
i
m
α
i
K
(
。
,
x
i
)
f(。)=\sum_i^mα_iK(。,x_i)
f(。)=∑imαiK(。,xi)
2:在S上定义内积构成内积空间
定义一个运算*,要符合内积空间要求
f
(
。
)
=
∑
i
m
α
i
K
(
。
,
x
i
)
f(。)=\sum_i^mα_iK(。,x_i)
f(。)=∑imαiK(。,xi)
f
(
。
)
=
∑
j
m
β
j
K
(
。
,
x
j
)
f(。)=\sum_j^mβ_jK(。,x_j)
f(。)=∑jmβjK(。,xj)
f
∗
g
=
∑
i
m
∑
j
m
α
i
β
j
K
(
x
i
,
x
j
)
f*g=\sum_i^m\sum_j^mα_iβ_jK(x_i,x_j)
f∗g=∑im∑jmαiβjK(xi,xj)
现在我们要保证我们定义的*运算能够帮助我们构成空间S的内积,即要满足上图条件,转化到f,g即以下形式
(
c
f
)
∗
g
=
c
(
f
∗
g
)
(cf)*g=c(f*g)
(cf)∗g=c(f∗g)
(
f
+
g
)
∗
h
=
f
∗
h
+
g
∗
h
(f+g)*h=f*h+g*h
(f+g)∗h=f∗h+g∗h
f
∗
g
=
g
∗
f
f*g=g*f
f∗g=g∗f
f
∗
f
≥
0
,
f
∗
f
=
0
−
−
>
f
=
0
f*f≥0,f*f=0-->f=0
f∗f≥0,f∗f=0−−>f=0
前面三个直接代入就可证明,自最后一个前半段利用Gram矩阵性质可知,所以仅需对
f
∗
f
=
0
−
−
>
f
=
0
f*f=0-->f=0
f∗f=0−−>f=0证明。
首先知道一个定理
∣
f
∗
g
∣
2
≤
(
f
∗
f
)
(
g
∗
g
)
|f*g|^2≤(f * f)(g * g)
∣f∗g∣2≤(f∗f)(g∗g)
K
(
。
,
x
)
∗
f
=
f
(
x
)
=
∑
i
m
α
i
K
(
x
,
x
i
)
K(。,x)*f=f(x)=\sum_i^mα_iK(x,x_i)
K(。,x)∗f=f(x)=∑imαiK(x,xi)
∣
f
(
x
)
∣
2
=
∣
∑
i
m
α
i
K
(
x
,
x
i
)
∣
2
=
∣
K
(
。
,
x
)
∗
f
∣
2
)
|f(x)|^2=|\sum_i^mα_iK(x,x_i)|^2=|K(。,x)*f|^2)
∣f(x)∣2=∣∑imαiK(x,xi)∣2=∣K(。,x)∗f∣2)
∣
K
(
。
,
x
)
∗
f
∣
2
≤
(
K
(
。
,
x
)
)
∗
(
K
(
。
,
x
)
)
(
f
∗
f
)
=
K
(
x
,
x
)
(
f
∗
f
)
|K(。,x)*f|^2≤(K(。,x))*(K(。,x))(f*f)=K(x,x)(f*f)
∣K(。,x)∗f∣2≤(K(。,x))∗(K(。,x))(f∗f)=K(x,x)(f∗f)
∣
f
(
x
)
∣
2
≤
K
(
x
,
x
)
(
f
∗
f
)
|f(x)|^2≤K(x,x)(f*f)
∣f(x)∣2≤K(x,x)(f∗f)
因此当
f
∗
f
=
0
−
−
>
f
=
0
f*f=0-->f=0
f∗f=0−−>f=0
3:将S完备化构成希尔伯特空间
根据泛函理论,不完备的向量空间S,一定可以使之完备化,得到希尔伯特空间H,满足下列性质
K
(
。
,
x
)
∗
f
=
f
(
x
)
K(。,x)*f=f(x)
K(。,x)∗f=f(x)
K
(
。
,
x
)
∗
K
(
。
,
z
)
=
K
(
x
,
z
)
K(。,x)*K(。,z)=K(x,z)
K(。,x)∗K(。,z)=K(x,z)
充分性证明
充分性:已知
K
(
x
,
z
)
K(x,z)
K(x,z)的Gram矩阵为半正定矩阵,证明
K
(
x
,
z
)
K(x,z)
K(x,z)为R上的正定核
根据上述的知识,定义一个映射,满足其内积空间要求总能使之完备化为希尔伯特空间H,进而满足
K
(
。
,
x
)
∗
K
(
。
,
z
)
=
K
(
x
,
z
)
K(。,x)*K(。,z)=K(x,z)
K(。,x)∗K(。,z)=K(x,z)
K
(
x
,
z
)
=
φ
(
x
)
.
φ
(
z
)
K(x,z)=φ(x).φ(z)
K(x,z)=φ(x).φ(z)
充分性得证
核技巧在SVM中的应用
在上述的目标函数与决策函数中,都只涉及到了特征向量之间的内积,因此利用核技巧我们可以将
x
i
,
x
j
x_i,x_j
xi,xj改写为
K
(
x
i
,
x
j
)
K(x_i,x_j)
K(xi,xj)
即:
L
(
x
,
b
,
α
)
=
∑
i
m
α
i
−
1
/
2
∑
i
m
∑
j
m
α
i
α
j
y
i
y
j
x
i
x
j
L(x,b,α)=\sum_i^mα_i -1/2\sum_i^m\sum_j^mα_{i}α_{j}y_{i}y_{j}x_{i}x_{j}
L(x,b,α)=∑imαi−1/2∑im∑jmαiαjyiyjxixj
将核函数变换后为:
L
(
x
,
b
,
α
)
=
∑
i
m
α
i
−
1
/
2
∑
i
m
∑
j
m
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
L(x,b,α)=\sum_i^mα_i -1/2\sum_i^m\sum_j^mα_{i}α_{j}y_{i}y_{j}K(x_i,x_j)
L(x,b,α)=∑imαi−1/2∑im∑jmαiαjyiyjK(xi,xj)
决策函数由:
f
(
x
)
=
s
i
g
n
(
w
x
+
b
)
=
s
i
g
n
(
∑
i
m
α
i
y
i
x
i
x
+
b
)
f(x) = sign(wx+b)=sign(\sum_i^mα_iy_ix_ix+b)
f(x)=sign(wx+b)=sign(∑imαiyixix+b)
变换后为:
f
(
x
)
=
s
i
g
n
(
w
x
+
b
)
=
s
i
g
n
(
∑
i
m
α
i
y
i
K
(
x
i
,
x
)
+
b
)
f(x) = sign(wx+b)=sign(\sum_i^mα_iy_iK(x_i,x)+b)
f(x)=sign(wx+b)=sign(∑imαiyiK(xi,x)+b)
常见核函数及其选择
下面以sklearn中常见的四种核函数为例进行介绍
1:线性核,就是我们常见的线性划分,只能处理线性问题
2:多项式核,可以处理线性和非线性问题,但是往往偏向于处理线性问题
3:双曲正切核,用以处理非线性问题
4:高斯核,可以处理线性与非线性问题,偏向于处理非线性问题
一般情况下,我们会对问题有一个定性的预判断,判断该问题是一个线性或非线性问题。线性有些选择线性核,非线性
优先选择高斯核