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

RBF(Radial Basis Function)核函数

K(xi,xj)=exp(xixj22σ2)K(x_{i},x_{j})=exp(-\frac{\|x_{i}-x{j}\|^{2}}{2{\sigma}^{2}})
这个函数和高斯分布函数很像,只是少了前面那个系数项。这意味着RBF核函数只是高斯分布函数纵向等比放缩的结果,很多性质可以直接搬过来用,比如3σ3\sigma准则。
【SVM】为什么RBF核函数可以使任何二分类数据线性可分

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

  1. 函数最大值为1
  2. 在直角坐标系中,它和高斯分布函数一样是钟形曲线,且sigma越小,图形越“痩”

##在运用SVM时,如何使用RBF核函数使任何二分类数据线性可分
从RBF的函数形式来看,这是一个关于两点距离的函数:距离越远,值越小;σ\sigma越小,函数值在远离中心点时下降地越快。如果我们让σ\sigma小至0(趋于0),这样,函数就变成了只有在两个x相等时取1,否则取0。

K(xi,xj)=limσ0exp(xixj22σ2)K(x_{i},x_{j})=\lim_{\sigma \to 0}{exp(-\frac{\|x_{i}-x{j}\|^{2}}{2{\sigma}^{2}})}

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

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

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

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

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

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

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

在无穷维度空间下,每一个维度体现了数据的一个特征。上哪找这么多特征呢?其实很简单,如果原有空间下点的可取值为无限的话(比如欧几里得空间),那么数据点到所有点的距离可以构成该点的无穷多个特征,也就是说,我们把数据映射到了无限维度的空间中了。这样映射的话,內积计算起来很麻烦,而且可能为无穷,于是考虑一种更为稀疏的映射方式:如果数据点到第i个点的距离为0(即该数据点本身),则第i维取1,否则取0。按照这个方式映射后,两个向量內积,当且仅当同一维特征取1时得到的是1,否则为0
x1=(1,0,0,,...,0)T,x2=(1,0,0,,...,0)T,x3=(0,1,0,...,0)Tx_{1}=(1,0,0,,...,0)^T, x_{2}=(1,0,0,,...,0)^T,x_{3}=(0,1,0,...,0)^T
x1,x2=1,x1,x3=0则有\langle x_1,x_2\rangle=1,\langle x_1,x_3\rangle=0
也就是说,对应于映射前空间,两个向量如果相等,得到的高维空间下的內积结果为1,否则为0。这下你们应该发现了,这不正是**σ\sigma取0时的RBF函数**吗?换句话说,我们现在同时得到了核函数形式、映射方法,映射之后的形式。

#####下面我来证明无论什么数据,用这个方法映射后都是线性可分的。(这里没用什么深奥的数学方法,非数学系的我也表示不会什么深奥的方法。。。。)

首先,如果他是线性可分的,那么必定存在一个超平面xTw+b=0x^{T}w+b=0可以数据集分开,我们只要证明无论什么样的数据,在应映射之后都可以找相应的到wwbb使两类分开。如果用感知机来表示,xTw+b=0x^{T}w+b=0的值和labellabellabellabel为数据的标签,值为1或-1,分别代表两类)同号。其实ww只要取labellabelbb取0就行了,如下所示:
label=(y1,y2,y3,...,y)Tlabel=(y_1,y_2,y_3,...,y_{\infty})^T
w=label,b=0w=label, b=0
X=(x1T,x2T,x3T,...,xT)T,xi(i)=1,xi(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×w=labelxX\times w=label,即所有x分类正确
既然求出了wwbb,则证明了一定线性可分。
当然上面只是一种极限的情况,实际使用时,如果要使任何数据线性可分,只要把RBF函数的σ\sigma改的足够小就行了。这或许也是RBF核函数在SVM中这么常用的原因了。

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