Background
用线性分类方法求解非线性分类问题分为两步:
- 1.使用一个变换将原空间的数据映射到新空间。
- 2.在新空间里用线性分类学习方法从训练数据中学习分类模型。
核技巧就属于这样的方法
核技巧用于SVM,其基本想法就是通过一个非线性变换将输入空间(欧式空间 R n R^n Rn或离散集合)对应于一个特征空间(希尔伯特空间 H H H),使得在输入空间 R n R^n Rn中的超曲面模型对应于特征空间H中的超平面模型(支持向量机)。 这样,分类问题的学习任务通过在特征空间中求解线性支持向量机就可以完成。
概览
基本概念:
kernel的本质:在原空间中不好划分,可以经过一个空间变换,即经过一个非线性的函数变换,(不一定是变换到高维空间),在变换后的空间中可能容易线性划分。
核函数定义
设
χ
\chi
χ是输入空间(欧式空间
R
n
R^n
Rn的子集或离散集合),又设
H
H
H为特征空间(希尔伯特空间),如果存在一个从
χ
\chi
χ到
H
H
H的映射
ϕ
(
x
)
:
χ
−
>
H
\phi(x):\chi->H
ϕ(x):χ−>H
使得对所有的
x
,
z
∈
χ
x, z ∈\chi
x,z∈χ ,函数
κ
(
x
,
z
)
\kappa(x, z)
κ(x,z)满足条件
κ
(
x
,
z
)
=
ϕ
(
x
)
∗
ϕ
(
z
)
\kappa(x, z)=\phi(x)*\phi(z)
κ(x,z)=ϕ(x)∗ϕ(z)
则称
κ
(
x
,
z
)
\kappa(x, z)
κ(x,z)为核函数,
ϕ
(
x
)
\phi(x)
ϕ(x)为映射函数。
ϕ
(
x
)
∗
ϕ
(
z
)
\phi(x)*\phi(z)
ϕ(x)∗ϕ(z)为其内积。
另一个比较重要的感念:kernel function
下图最后的公式是求高纬度空间两个点的内积,经转换得到原低纬空间中两点内积的函数。将这个函数定义为kernel function。
好像只要操纵 kernel function,就能解决所有的问题。
并且知道了kernel function,好像就不需要知道feature mapping
ϕ
\phi
ϕ
总结:
为什么要计算高维空间的内积:因为内积决定了几何性质。如最重要的性质是:距离和角度。
下面分析一下内积如何决定距离和角度。
距离的计算:
角度的计算:
也就是说:哪些函数可以看作kernel function,然后就可以进一步算出内积、距离和角度。
Kernel Matrix 内积矩阵 – 任意两个点的内积。
计算
y
=
s
g
n
(
<
ϕ
(
x
)
−
c
,
w
>
)
y = sgn(<\phi(x)-c, w>)
y=sgn(<ϕ(x)−c,w>) 的方法。
- 如果
ϕ
\phi
ϕ函数已知。
- 如果 ϕ \phi ϕ函数未知,仅知道kernel function: κ ( x , y ) \kappa(x, y) κ(x,y)
Question:
Answer:
证明下面的函数是有限半正定的
常用的kernel function,都满足有限半正定
练习