回顾

上一篇讲到了svm的对偶问题:

将svm的算法维度(w维度)由vc维变成了跟数据量N,但是这样真的就完全简化了么?在我们求Q这个矩阵时,需要先将x转化为z,然后再做内积,复杂度是d^2。在这一篇我们就要介绍一种可以简化这个步骤的方法~传说中的核函数

核函数

引入概念

假设我们要做的x到z的转换是一个二次转换:

然后我们做一下内积

化简化简,突然发现先转换为z空间再做内积的步骤可以直接转化为关于x的内积了。一下子将复杂度减少成了d~好神奇!
写成公式表示过程:

直接用一步来代替了原来的两步。

应用场景

在计算Q矩阵时,计算参数b时,还有进行test的时候都可以用到核函数来进行提速。
在这里我们也彻底摆脱了对于数据vc维的依赖,完全只是依赖输入数据的维度:

最后问题变成了这样:

核函数变形

我们可以把之前的二次核函数做一些变形:

这样变换之后会对应不一样的内积结果,同样的也对应了不同的几何性质:

这里可以看出用不同的γ,对应出不同的边界和支持向量
这个问题进一步扩展到更高次变换上:

Q对应了Q次的空间上的一种变换,当然Q越大,表述能力越强,但是也要小心更容易overfit。
所以这里可以想到最简单的核函数,线性核函数:

线性first是很好的习惯,有可能效果非常好:)

超级核函数

我们会想,有没有存在一种核函数,他可以表述无限大空间的变换呢?开心的告诉你~有的:

利用一个泰勒展开,就可以拆成一个无线维度的转换了,当然这个东西怎么被想出来的我也不知道~只能orz~
更概括的讲:

我们把这个种核函数叫做高斯核函数
当使用高斯核函数时:

预测结果是多个高斯函数的再支持向量上的线性组合。又被成为RBF kernel。
不同参数的高斯核函数:

当γ过大时会产生很强的overfit,所以就算无限维度核函数svm依然不能摆脱过拟合的大坑~