如何将有限维的特征映射到无限维/支持向量机(3)

省略了很多公式和背景,不然要写好久。感兴趣的可以自己查阅相关背景书籍。

我们处理分类问题的常用方法一般是将特征向量映射到一个高维空间然后进行切分,但这种方法的分类能力受限于映射模型本身的VC维,那是否存在一个映射模型,它可以将特征映射到无限维度的空间(希尔伯特空间)?
sklearn的SVC分类器中默认的rbf核函数就是这样一种方法。

Gauss 径向基核函数(rbf)


有人有问,这不就是正态分布吗,小学奥数题都会用呀。确实,它的应用范围很广,这也间接说明了它本身的维度很广,那接下来我们会证明这个核函数有能力将特征向量逼近到无限维。

既然涉及到无限,毫无疑问,我们会使用到泰勒多项式。在这里,我们需要用到一个非常常用的泰勒展开:
为了好写,我们令,接下来,我们对高斯核函数进行分解:
接下来,我们将 进行泰勒展开:
当n趋近于无穷时,我们可以忽略余项,便得到:
K(x,x')=\sum_{i=0}^{n} \frac{2\gamma (xx')^n}{n!}e^{\gamma (x^2+x'^2)} = \sum_{i=0}^{n} \frac{2\gamma (xx')^n}{n!}e^{\gamma x^2} e^{\gamma x'^2}=\sum_{i=0}^{n} \sqrt\frac{2\gamma }{n!}x^n e^{\gamma x^2} \sqrt\frac{2\gamma }{n!} x'^ne^{\gamma x'^2}显然,该式可以转换为两个向量的内积形式,令

可以看到,核函数此时被分解成了特征函数上两个向量的内积,而这个特征函数具有无穷维度。
(限于篇幅, 本节省略了支持向量机公式推导、KKT条件说明拉格朗日对偶问题的证明以及核函数的推导证明,需要参考之前的章节)

无穷维度下的维度灾难问题

可能有人会问,维度越高,样本在特征空间中的分布越稀疏,那在无限维度中如何控制由于维度灾难导致的过拟合问题呢?
其实rbf核函数本身已经通过正则因子控制了过拟合的问题,如高斯核的以及惩罚系数 均可以起到正则化的作用,这也是支持向量机的基本思想,既最大化约束(最小化结构风险)下的最大化自由。

支持向量机的表现

支持向量机本身就是一个追求极致的算法,在小规模数据下,它的表现是要优于其他算法的,下图为处理一些简单数据集时SVM和多层神经网络的分类效果,可以发现,此时SVM的分类效果以及对数据特征本质的刻画描述是要优于神经网络的。



非线性支持向量机分类实现

  • 导入相关模块


  • 使用 make_moons 生成一组线性不可分数据,可以看到生成的数据集合非常像月牙。
  • 先定义一个简单的高斯核函数,这个高斯核只是为了看看先升维的效果


  • 绘制二维空间点映射到三维空间后的效果图



    可以看到,长得和以前不一样了,虽然感觉没什么用,但也还行吧。

  • 接下来sklearn 中 SVC 方法提供的 rbf 进行实验。



    可以看到,rbf处理非线性数据集的分类效果十分不错。

  • 接下来看看惩罚系数 变化时决策边界和支持向量的变化情况:



    可以看到,惩罚系数越小,正则化效果越好,分类线越平滑。惩罚系数越大,分类越严格,但同时也牺牲了一定的泛化能力,增大了局限性和过拟合的风险,尤其是惩罚系数增加到100000时,出现了一些奇怪的线条,说明模型对惩罚过于敏感,此时已经无法理性地处理离群数据点,过于强调对个别离群数据的解释,丢了西瓜捡芝麻。

你可能感兴趣的:(如何将有限维的特征映射到无限维/支持向量机(3))