核函数 kernel function

机器学习算法中,不论是感知机还是支持向量机,在面对非线性问题时,往往都会用到一个名为“核函数”的技巧。

非线性分类的问题

在某些情况下,无法用直线(线性模型)将正负实例正确分开
如果能用\(R^n\)中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题
核函数的作用是通过非线性变换(映射)将原空间线性不可分的问题转化为高维空间中线性可分的问题

设原空间\(\mathcal X \subseteq R^2, x=(x^{(1)},x^{(2)})^T \in \mathcal X\)

定义从原空间到新空间的变换(映射)

\[z=\phi(x)=x=((x^{(1)})^2,(x^{(2)})^2)^T \]

新空间为\(\mathcal Z \subseteq R^2, z=(z^{(1)},z^{(2)})^T \in \mathcal Z\)

那么原空间的椭圆

\[w_1(x^{(1)})^2+w_2(x^{(2)})^2+b=0 \]

变成了新空间中的直线

\[w_1z^{(1)}+w_2z^{(2)}+b=0 \]

核函数的定义

核函数等价于两个向量映射之后的内积

例子

容易验证得到

\[K(x,z)=\phi(x)\cdot \phi(z)=(x\cdot z)^2 \]

好处

所以可以看出利用核函数,高维的运算结果等于低维空间里的运算结果

低维空间和高维空间居然通过核函数巧妙的联通起来了,这样做最大的优点是避免了维度灾难,也就是说高维空间中的运算计算量很大呈指数级别复杂度,难以解决;低维空间中的运算计算量很小但是两者的最终结果是一致的

现实生活中有很多非线性非常强的特征 而核方法能够捕捉它们。核技巧(kernel trick)的作用,一句话概括的话,就是降低计算的复杂度

Reference

[1] 《统计学习方法》李航

posted @ 2021-10-31 13:58  梦想家肾小球  阅读(206)  评论(0编辑  收藏  举报