说完训练数据线性可分(近似可分),我们就该考虑考虑训练数据非线性可分的情况了,非线性问题往往并不好求解,所以我们希望能用解线性分类问题的方法来解决这个问题。因此我们需要将非线性问题转化为线性问题,通过解转化后的线性问题的方法求解原来的非线性问题。
比如上面左边的图中,训练数据无法用直线(线性模型)将正负实例点正确分开,但用了一条椭圆曲线(非线性模型)可以将它们正确分开。我们将这左图中坐标
x(1)
x
(
1
)
,
x(2)
x
(
2
)
做一个变换,映射到新的空间中体现,就出现了右图,很明显,通过映射在新空间的训练数据可以被线性模型正确分开。
【映射函数】
我们定义
Φ(x):X→H
Φ
(
x
)
:
X
→
H
为映射函数,
z=Φ(x)
z
=
Φ
(
x
)
表示将数据从原空间映射到新空间的。
如:
Φ(x)=(x,x2,x3)T
Φ
(
x
)
=
(
x
,
x
2
,
x
3
)
T
,一维映射到三维
Φ(x)=(x(1)2,2–√x(1)x(2),x(2)2)T
Φ
(
x
)
=
(
x
(
1
)
2
,
2
x
(
1
)
x
(
2
)
,
x
(
2
)
2
)
T
,二维映射到三维
Φ(x)=(x(1)2,x(1)x(2),x(1)x(2),x(2)2)T
Φ
(
x
)
=
(
x
(
1
)
2
,
x
(
1
)
x
(
2
)
,
x
(
1
)
x
(
2
)
,
x
(
2
)
2
)
T
,二维映射到四维
对于上图来说我们可以定义
z=Φ(x)=(x(1)2,x(2)2)T
z
=
Φ
(
x
)
=
(
x
(
1
)
2
,
x
(
2
)
2
)
T
。
经过变换,原空间
X⊂R2
X
⊂
R
2
,
x=(x(1),x(2))∈X
x
=
(
x
(
1
)
,
x
(
2
)
)
∈
X
变换为新空间
Z⊂R2
Z
⊂
R
2
,
z=(z(1),z(2))T
z
=
(
z
(
1
)
,
z
(
2
)
)
T
原空间中的椭圆:
w1x(1)2+w2x(2)2+b=0
w
1
x
(
1
)
2
+
w
2
x
(
2
)
2
+
b
=
0
变换为新空间的直线:
w1z(1)+w2z(2)+b=0
w
1
z
(
1
)
+
w
2
z
(
2
)
+
b
=
0
【核函数】
定义
设 X X 是输入空间(欧式空间 Rn R n 的子集或离散集合), H H 为特征空间(希尔伯特空间),若存在一个从 X→H X → H 的映射,即 Φ(x):X→H Φ ( x ) : X → H 使得对所有的 x,z∈X x , z ∈ X ,函数 K(x,z)=Φ(x)⋅Φ(z) K ( x , z ) = Φ ( x ) · Φ ( z ) ,则称 K(x,z) K ( x , z ) 为核函数, Φ(x) Φ ( x ) 为映射函数,式中 Φ(x)⋅Φ(z) Φ ( x ) · Φ ( z ) 为 Φ(x) Φ ( x ) 和 Φ(z) Φ ( z ) 的内积
【核技巧】
核技巧的基本想法就是通过一个非线性变化,将输入空间对应于一个特征空间,使得在输入空间中的超曲面模型对应于特征空间中的超平面模型(支持向量机)。这样,分类问题的学习任务通过在特征空间中求解线性支持向量机就可以完成了。
那么核技巧的主要方法是什么呢?
通过上面的例子可以看出,我们可以通过直接定义映射函数
Φ
Φ
的方式来计算内积,可是往往通过映射函数来计算内积是不容易的。
举个栗子,假设输入空间是
R2
R
2
,核函数是
K(x,z)=(x⋅z)2
K
(
x
,
z
)
=
(
x
·
z
)
2
,记
x=(x(1),x(2))T
x
=
(
x
(
1
)
,
x
(
2
)
)
T
,
z=(z(1),z(2))T
z
=
(
z
(
1
)
,
z
(
2
)
)
T
,映射函数
Φ(x)=(x(1)2,2–√x(1)x(2),x(2)2)T
Φ
(
x
)
=
(
x
(
1
)
2
,
2
x
(
1
)
x
(
2
)
,
x
(
2
)
2
)
T
若我们取
x=(x(1),x(2))T=(2,3)T
x
=
(
x
(
1
)
,
x
(
2
)
)
T
=
(
2
,
3
)
T
,
z=(z(1),z(2))T=(4,5)T
z
=
(
z
(
1
)
,
z
(
2
)
)
T
=
(
4
,
5
)
T
用映射函数求解:
Φ(x)=(4,62–√,9)
Φ
(
x
)
=
(
4
,
6
2
,
9
)
Φ(z)=(16,202–√,25)
Φ
(
z
)
=
(
16
,
20
2
,
25
)
Φ(x)⋅Φ(z)=4×16+62–√×202–√+9×25=529
Φ
(
x
)
·
Φ
(
z
)
=
4
×
16
+
6
2
×
20
2
+
9
×
25
=
529
用核函数求解:
K(x,z)=(x⋅z)2=(8+15)2=529 K ( x , z ) = ( x · z ) 2 = ( 8 + 15 ) 2 = 529
额,仅仅是特征空间为三维,输入空间为二维,计算的复杂程度就已经如此明显了。设想一下如果我们的输入空间为
n
n
维(),
x=(x(1),x(2),...x(n))T
x
=
(
x
(
1
)
,
x
(
2
)
,
.
.
.
x
(
n
)
)
T
,特征空间为
m
m
维(),
a=(a(1),a(2),...a(m))T
a
=
(
a
(
1
)
,
a
(
2
)
,
.
.
.
a
(
m
)
)
T
。如果我们用映射函数求解,我们需要先把
n
n
维的输入空间映射为维的特征空间,然后进行m次乘积,再加和。而如果我们用核函数求解,则只需进行n次乘积,再加和,最后整体求
i
i
次方即可。
由于特征空间一般都是高维的,甚至是无穷维,因此,若是用映射函树求解将会非常麻烦。核函数的作用就是将维高维内积运算
Φ(x)⋅Φ(z)
Φ
(
x
)
·
Φ
(
z
)
转化为
n
n
维低维输入空间的核函数运算。
对于给定的核
K(x,z)
K
(
x
,
z
)
,其特征空间
H
H
和映射函数
Φ(x)
Φ
(
x
)
的取法不唯一,如《统计学习方法》中例7.3,第一种和第二种情况表现了选取同样的特征空间,但映射是可以不同的;从整体可以看出,对于特征空间,也可以取不同的情况。
核技巧的应用:
说到核技巧的应用,就不得不提提前面我们所学到的线性支持向量机的对偶问题。
线性支持向量机对偶问题:
minα12∑i=1n∑j=1nαiαjyiyjxTixj−∑i=1nαi
min
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
n
α
i
s.t.
∑i=1nαiyi=0
∑
i
=
1
n
α
i
y
i
=
0
(
αi≥0,i=1,2..,n
α
i
≥
0
,
i
=
1
,
2..
,
n
)
s.t.
0≤αi≤C
0
≤
α
i
≤
C
(
i=1,2..,n
i
=
1
,
2..
,
n
)
很明显可以看出目标函数中存在内积形式,即
xTixj
x
i
T
x
j
,既然出现了内积形式,我们就可以用核函数来替代,这时,对偶问题的目标函数变为:
minα12∑i=1n∑j=1nαiαjyiyjK(xi,xj)−∑i=1nαi
min
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
n
α
i
对于分离超平面和分类决策函数,也可以用核函数来代替公式中的内积形式。
分离超平面:
∑i=1nα∗yiK(xi,x)+b∗=0
∑
i
=
1
n
α
∗
y
i
K
(
x
i
,
x
)
+
b
∗
=
0
分类决策函数:
f(x)=sign(∑i=1nα∗yiK(xi,x)+b∗)
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
n
α
∗
y
i
K
(
x
i
,
x
)
+
b
∗
)
【判定核函数有效性】
在不构造映射函数
Φ(x)
Φ
(
x
)
的情况下,我们如何判断给定的
K(x,z)
K
(
x
,
z
)
是不是核函数呢?
由于我们通常所说的核函数就是正定核函数,我们可以通过判断给定的
K(x,z)
K
(
x
,
z
)
是不是正定核来确定它是不是核函数。
(1)判定正定核:
设
X
X
为输入空间,
K(x,z)
K
(
x
,
z
)
是定义在
X×X
X
×
X
上的对称函数,如果对任意
xi∈X,(i=1,2...m)
x
i
∈
X
,
(
i
=
1
,
2...
m
)
,
K(x,z)
K
(
x
,
z
)
对应的
Gram
G
r
a
m
矩阵
[Kij]m×m=[K(xi,xj)]m×m
[
K
i
j
]
m
×
m
=
[
K
(
x
i
,
x
j
)
]
m
×
m
是半正定矩阵,则称
K(x,z)
K
(
x
,
z
)
是正定核。
Gram
G
r
a
m
矩阵长这样:
G=XTX=∣∣∣∣∣∣∣∣xT1xT2..xTm∣∣∣∣∣∣∣∣[x1,x2,…,xm]=∣∣∣∣∣∣∣∣xT1x1xT2x1..xTmx1xT1x2xT2x2xTmx2.........xT1xmxT2xmxTmxm∣∣∣∣∣∣∣∣
G
=
X
T
X
=
|
x
1
T
x
2
T
.
.
x
m
T
|
[
x
1
,
x
2
,
…
,
x
m
]
=
|
x
1
T
x
1
x
1
T
x
2
.
.
.
x
1
T
x
m
x
2
T
x
1
x
2
T
x
2
.
.
.
x
2
T
x
m
.
.
x
m
T
x
1
x
m
T
x
2
.
.
.
x
m
T
x
m
|
心累,还得多补补线性代数相关知识。如何判断这个矩阵是半正定矩阵呢?一般对于实对称矩阵来说,它的特征值大于等于0,就是半正定矩阵。
(2) Mercer M e r c e r 定理判定Mercer核
如果函数
K
K
是上的映射(也就是两个n维向量映射到实数域),若
K
K
是一个有效核函数(即Mercer核),那么当且仅当对于训练样例{}其相应的核函数是对称半正定的。
emmmm,其实不太懂什么意思,后续再看,不过书上提到,正定核比Mercer核更具一般性。
【常用核函数】
①线性核函数
K(x,z)=xTz
K
(
x
,
z
)
=
x
T
z
主要用于线性可分的情况,输入空间与特征空间的维度一样,由于其参数少,速度快,对于线性可分数据的分类效果非常理想。
②多项式核函数
K(x,z)=(xTz+1)p
K
(
x
,
z
)
=
(
x
T
z
+
1
)
p
可以实现将低维输入空间映射到高维特征空间,但由于参数多,当多项式阶数比较高时,计算复杂度会很大。
③高斯核函数(是一种径向基核函数)
K(x,z)=exp(−||x−z||22δ2)
K
(
x
,
z
)
=
e
x
p
(
−
|
|
x
−
z
|
|
2
2
δ
2
)
一种局部性强的核函数,可以将一个样本映射到一个更高维的空间。其对数据中的噪音有着较好的抗干扰能力,它的参数决定了函数作用范围,超过了这范围,数据的作用就”基本消失”,该函数的参数相较于多项式核函数要少,但其性能对参数十分敏感。
还有其他一些径向基核函数,常用的如:指数核,拉普拉斯核;不常用的如:二次有理核,多元二次核,逆多元二次核,ANOVA核。
④sigmoid核函数
K(x,z)=tanh(axTz+c)
K
(
x
,
z
)
=
t
a
n
h
(
a
x
T
z
+
c
)
采用sigmoid核函数,SVM实现的就是一种多层神经网络。
对于核函数,还有很多,诸如小波核(适用于语音处理场景)、贝叶斯核、对数核(常用于图像分割场景)等等
【核函数的选择】
NG老师机器学习课上曾给出这样的方法:
—–特征数量很大,大到和样本数量差不多:选用逻辑回归或者线性核函数的SVM
—–特征数量小,样本数量正常:选用高斯核函数+SVM
—–特征数量小,样本数量很大:需手工添加一些特征从而变成第一种情况
参考文献:《统计学习方法》、《机器学习》