【SVM】为什么RBF核函数可以使任何二分类数据线性可分

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σ2xixj2)
这个函数和高斯分布函数很像,只是少了前面那个系数项。这意味着RBF核函数只是高斯分布函数纵向等比放缩的结果,很多性质可以直接搬过来用,比如 3 σ 3\sigma 3σ准则。
【SVM】为什么RBF核函数可以使任何二分类数据线性可分_第1张图片

我们可以很容易地看出几个性质:

  1. 函数最大值为1
  2. 在直角坐标系中,它和高斯分布函数一样是钟形曲线,且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σ2xixj2)

【SVM】为什么RBF核函数可以使任何二分类数据线性可分_第2张图片

这样做有什么意义呢?让我慢慢道来。

先回忆一下SVM中核函数是做什么的。

如果原有数据不是线性可分的,则可以通过核函数将原有数据映射到高维空间,使其线性可分,就像下图:
【SVM】为什么RBF核函数可以使任何二分类数据线性可分_第3张图片
但是,如果映射之后的维度过高,由现有空间下的向量映射到高维空间下的对应向量的计算非常耗时(如果映射之后为无穷维,则根本不能实现),是不可取的。然而我们要的只是高维空间下对应的內积结果,如果能从低维空间下的向量形式,外加一些计算量较小的函数可以间接计算出高维空间下的內积结果,岂不美哉。这就是核函数干的事情。一个核函数定义了一个空间映射。

那么核函数如何选择?
我们之所以要从低维度映射到高维度,就是为了使数据线性可分。但这个映射方法的选择很重要。我们根据经验认为,从低维度映射到高维度后,线性可分的可能性比较大,比如上面那副图。然而这只是经验而已,很多时候我们根本不知道映射后在高维下数据是什么样子的。一般来说我们是通过验证的方法来确定哪种映射比较好。

如果映射到高维后,仍然线性不可分怎么办?
答案是再向高维映射。但是就和上面说的一样,高维下数据形式几乎不可预测。这其实就是在看运气。

如果映射到无穷维度空间呢?

在无穷维度空间下,每一个维度体现了数据的一个特征。上哪找这么多特征呢?其实很简单,如果原有空间下点的可取值为无限的话(比如欧几里得空间),那么数据点到所有点的距离可以构成该点的无穷多个特征,也就是说,我们把数据映射到了无限维度的空间中了。这样映射的话,內积计算起来很麻烦,而且可能为无穷,于是考虑一种更为稀疏的映射方式:如果数据点到第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,...,xT)T,xi(i)=1,xi(j)=0(i̸=j),
X × w = l a b e l , 即 所 有 x 分 类 正 确 X\times w=label,即所有x分类正确 X×w=labelx
既然求出了 w w w b b b,则证明了一定线性可分。
当然上面只是一种极限的情况,实际使用时,如果要使任何数据线性可分,只要把RBF函数的 σ \sigma σ改的足够小就行了。这或许也是RBF核函数在SVM中这么常用的原因了。

##弊端
虽然用上面的确实可以使任何数据变得线性可分,但是却也导致了严重的过拟合。所以一般来说, σ \sigma σ不能过小。

你可能感兴趣的:(机器学习)