造微入妙的核技巧

227 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

支持向量机中最有意思的在于它的核函数技巧。 尽管原本在原始的表达式中,我们是需要求出向量的点积,然后考虑到可以通过变换将数据映射到高维的空间中,使其实现线性可分的目标。

然而由于SVM 最终只需要向量的点积。在这个条件下,我们进行坐标变换,得到相当于是把 xixjx_i \cdot x_j转换成了 T(xi)T(xj)T(x_i) \cdot T(x_j), 注意到最终一定需要做点积,所以一个这样的想法诞生了: 实现一个函数,其结果等效于将坐标变换到高维空间再做点积的结果。

也就是一个函数实现两步操作。等价于实现目标 K(xi,xj)=T(xi)T(xj)K(x_i,x_j) = T(x_i) \cdot T(x_j)

在这一步之后,又诞生了一个直接将输入的矩阵映射到点积结果。从实现上来说相当于时把中间的变换过程隐含了。 这个方法叫做所谓的核技巧。

依据这个原理,现在有一下一些常用的核函数

  • 线性
  • 多项式
  • 高斯核函数
  • 拉普拉斯核函数
  • sigmoid

其中线性及多项式核函数可以认为是映射到了确定的维度,只不过是相当于多步操作合并,将变换隐藏了。

而后几个核函数涉及到了指数,这是什么概念呢?

可以从这样一个角度去看待,由泰勒公式exe^x可以展开成它的麦克劳林级数,那么这样一来他就相当于是无穷阶幂函数相加。也就是说,它相当于把坐标映射到了无穷维空间中。

这是一种非常巧妙的方法,它避免了实际上做变换,甚至通过这种手段某种意义上实现了到无穷维的转化 。这使得相当多情况下,svm都可以在比较合适的核函数下收获不错的成绩。

这样的缺点是什么呢?

以高斯核函数为例,尽管它相当于隐式的转换到了无穷维,然而每一项的系数却没法变动。实际上是有一定的局限性的,同理其他函数也有这个问题。

为了一定程度上降低该影响,我们将可以尝试将不同的核函数组合使用。