核函数能够帮助我们解决三个问题:
第一,有了核函数之后,我们无需去担心 究竟应该是什么样,因为非线性
SVM中的核函数都是正定核函数(positive defifinite kernel functions)
,他们都满足美世定律
(Mercer's theorem),确保了高维空间中任意两个向量的点积一定可以被低维空间中的这两个向量的某种计算来表示(多数时候是点积的某种变换)。
第二,使用核函数计算低维度中的向量关系比计算原本的要简单太多了。
第三,因为计算是在原始空间中进行,所以避免了维度诅咒的问题。
选用不同的核函数,就可以解决不同数据分布下的寻找超平面问题。在
SVC
中,这个功能由参数
“kernel”和一系列与核函数相关的参数来进行控制。之前的代码中我们一直使用这个参数并输入
"linear",但却没有给大家详细讲解,也是因为如果不先理解核函数本身,很难说明这个参数到底在做什么。参数
“kernel"
在
sklearn中可选以下几种选项:
可以看出,除了选项
"linear"
之外,其他核函数都可以处理非线性问题。多项式核函数有次数
d
,当
d
为
1的时候它就是再处理线性问题,当
d
为更高次项的时候它就是在处