RBF(Radial Basis Function)核函数
K
(
x
i
,
x
j
)
=
e
x
p
(
−
∥
x
i
−
x
j
∥
2
2
σ
2
)
K(x_{i},x_{j})=exp(-\frac{\|x_{i}-x{j}\|^{2}}{2{\sigma}^{2}})
K(xi,xj)=exp(−2σ2∥xi−xj∥2)
这个函数和高斯分布函数很像,只是少了前面那个系数项。这意味着RBF核函数只是高斯分布函数纵向等比放缩的结果,很多性质可以直接搬过来用,比如
3
σ
3\sigma
3σ准则。
我们可以很容易地看出几个性质:
- 函数最大值为1
- 在直角坐标系中,它和高斯分布函数一样是钟形曲线,且sigma越小,图形越“痩”
##在运用SVM时,如何使用RBF核函数使任何二分类数据线性可分
从RBF的函数形式来看,这是一个关于两点距离的函数:距离越远,值越小;
σ
\sigma
σ越小,函数值在远离中心点时下降地越快。如果我们让
σ
\sigma
σ小至0(趋于0),这样,函数就变成了只有在两个x相等时取1,否则取0。
K ( x i , x j ) = lim σ → 0 e x p ( − ∥ x i − x j ∥ 2 2 σ 2 ) K(x_{i},x_{j})=\lim_{\sigma \to 0}{exp(-\frac{\|x_{i}-x{j}\|^{2}}{2{\sigma}^{2}})} K(xi,xj)=σ→0limexp(−2σ2∥xi−xj∥2)
这样做有什么意义呢?让我慢慢道来。
先回忆一下SVM中核函数是做什么的。
如果原有数据不是线性可分的,则可以通过核函数将原有数据映射到高维空间,使其线性可分,就像下图:
但是,如果映射之后的维度过高,由现有空间下的向量映射到高维空间下的对应向量的计算非常耗时(如果映射之后为无穷维,则根本不能实现),是不可取的。然而我们要的只是高维空间下对应的內积结果,如果能从低维空间下的向量形式,外加一些计算量较小的函数可以间接计算出高维空间下的內积结果,岂不美哉。这就是核函数干的事情。一个核函数定义了一个空间映射。
那么核函数如何选择?
我们之所以要从低维度映射到高维度,就是为了使数据线性可分。但这个映射方法的选择很重要。我们根据经验认为,从低维度映射到高维度后,线性可分的可能性比较大,比如上面那副图。然而这只是经验而已,很多时候我们根本不知道映射后在高维下数据是什么样子的。一般来说我们是通过验证的方法来确定哪种映射比较好。
如果映射到高维后,仍然线性不可分怎么办?
答案是再向高维映射。但是就和上面说的一样,高维下数据形式几乎不可预测。这其实就是在看运气。
如果映射到无穷维度空间呢?
在无穷维度空间下,每一个维度体现了数据的一个特征。上哪找这么多特征呢?其实很简单,如果原有空间下点的可取值为无限的话(比如欧几里得空间),那么数据点到所有点的距离可以构成该点的无穷多个特征,也就是说,我们把数据映射到了无限维度的空间中了。这样映射的话,內积计算起来很麻烦,而且可能为无穷,于是考虑一种更为稀疏的映射方式:如果数据点到第i个点的距离为0(即该数据点本身),则第i维取1,否则取0。按照这个方式映射后,两个向量內积,当且仅当同一维特征取1时得到的是1,否则为0
x
1
=
(
1
,
0
,
0
,
,
.
.
.
,
0
)
T
,
x
2
=
(
1
,
0
,
0
,
,
.
.
.
,
0
)
T
,
x
3
=
(
0
,
1
,
0
,
.
.
.
,
0
)
T
x_{1}=(1,0,0,,...,0)^T, x_{2}=(1,0,0,,...,0)^T,x_{3}=(0,1,0,...,0)^T
x1=(1,0,0,,...,0)T,x2=(1,0,0,,...,0)T,x3=(0,1,0,...,0)T
则
有
⟨
x
1
,
x
2
⟩
=
1
,
⟨
x
1
,
x
3
⟩
=
0
则有\langle x_1,x_2\rangle=1,\langle x_1,x_3\rangle=0
则有⟨x1,x2⟩=1,⟨x1,x3⟩=0
也就是说,对应于映射前空间,两个向量如果相等,得到的高维空间下的內积结果为1,否则为0。这下你们应该发现了,这不正是**
σ
\sigma
σ取0时的RBF函数**吗?换句话说,我们现在同时得到了核函数形式、映射方法,映射之后的形式。
#####下面我来证明无论什么数据,用这个方法映射后都是线性可分的。(这里没用什么深奥的数学方法,非数学系的我也表示不会什么深奥的方法。。。。)
首先,如果他是线性可分的,那么必定存在一个超平面
x
T
w
+
b
=
0
x^{T}w+b=0
xTw+b=0可以数据集分开,我们只要证明无论什么样的数据,在应映射之后都可以找相应的到
w
w
w和
b
b
b使两类分开。如果用感知机来表示,
x
T
w
+
b
=
0
x^{T}w+b=0
xTw+b=0的值和
l
a
b
e
l
label
label(
l
a
b
e
l
label
label为数据的标签,值为1或-1,分别代表两类)同号。其实
w
w
w只要取
l
a
b
e
l
label
label,
b
b
b取0就行了,如下所示:
l
a
b
e
l
=
(
y
1
,
y
2
,
y
3
,
.
.
.
,
y
∞
)
T
label=(y_1,y_2,y_3,...,y_{\infty})^T
label=(y1,y2,y3,...,y∞)T
w
=
l
a
b
e
l
,
b
=
0
w=label, b=0
w=label,b=0
X
=
(
x
1
T
,
x
2
T
,
x
3
T
,
.
.
.
,
x
∞
T
)
T
,
其
中
x
i
(
i
)
=
1
,
x
i
(
j
)
=
0
(
i
̸
=
j
)
,
即
无
限
维
的
单
位
矩
阵
X=(x_{1}^T,x_{2}^T,x_{3}^T,...,x_{\infty}^T)^T,其中x_{i}^{(i)}=1,x_{i}^{(j)}=0(i\not=j),即无限维的单位矩阵
X=(x1T,x2T,x3T,...,x∞T)T,其中xi(i)=1,xi(j)=0(i̸=j),即无限维的单位矩阵
X
×
w
=
l
a
b
e
l
,
即
所
有
x
分
类
正
确
X\times w=label,即所有x分类正确
X×w=label,即所有x分类正确
既然求出了
w
w
w和
b
b
b,则证明了一定线性可分。
当然上面只是一种极限的情况,实际使用时,如果要使任何数据线性可分,只要把RBF函数的
σ
\sigma
σ改的足够小就行了。这或许也是RBF核函数在SVM中这么常用的原因了。
##弊端
虽然用上面的确实可以使任何数据变得线性可分,但是却也导致了严重的过拟合。所以一般来说,
σ
\sigma
σ不能过小。