核技巧、核函数

真正接触核方法应该是在 SVM ,正常情况下,感知机算法和支持向量机都是默认数据是线性可分的,这类问题叫做线性分类问题。当数据线性不可分的时候,但高维可分(这个不理解可以多看看书),我们仍然想用线性分类的方法去解决,这个时候就需要用非线性变换将非线性问题转换成线性问题。

于是,我们得到求解非线性分类问题的一个思路:
1. 用一个非线性变换,将数据特征从原空间映射到一个新的空间,这里的原空间是低维的输入空间(欧式空间或离散集合),新的空间是高维的特征空间(希尔伯特空间,完备的内积空间)
2. 在新的空间上使用线性分类算法求解。

机器学习中的核技巧_数据                                     机器学习中的核技巧_线性分类_02

核函数的定义:
Φ(x)是非线性变换的映射函数,则核函数 K(x,z)=Φ(x)⋅Φ(z),定义为两个映射的内积。

一般特征空间是高维或者无穷维的,因此很难去定义一个特征空间以及输入空间到这个特征空间的映射,核技巧的想法是,在学习和预测中只定义核函数 K(x,z),而不显式地定义特征空间和映射,简化计算难度。

为什么是内积的形式呢,我的理解是一方面,在 SVM 或者感知机的对偶性只涉及到 xi⋅xj,另一方面,分类和回归任务可以分为两类:一类是参数学习,另一类是基于实例的学习,区别就在于在预测阶段基于实例的学习还会用到训练数据;针对基于实例的学习,内积关注的是判定两点之间的相似程度。

运用核函数等价于经过映射函数 Φ(x)将输入空间的内积 xi⋅xj 变换为特征空间的内积 Φ(x)⋅Φ(z),当映射函数是非线性函数时,学习到的模型就是非线性模型。

总的来说,在核函数 K(x,z)给定的条件下,可以利用解线性分类问题的方法求解非线性分类问题,学习是隐式地在特征空间进行,不需要显式地定义特征空间和映射,这样的技巧叫做核技巧。在实际应用中,往往依赖领域知识直接选择核函数。

如何选择核函数

首先,常用的核函数有:线性核函数、多项式核函数、(高斯)RBF径向基核函数。在 SVM 中,选择线性核函数和径向基核函数时,需要对数据进行归一化处理。一般性建议,高维数据(数据维度大,是或者可以视为线性可分)的情况下,选择线性核函数,不行换特征,再不行换高斯核。维度少的时候,如果可以的话提取特征使用线性核函数,不行再换高斯核函数,因为线性核函数最简单最快,高斯核复杂而慢,但是除了速度之外的性能一般都可以达到或优于线性核的效果。多项式核的参数比高斯核的多,参数越多模型越复杂;高斯核的输出值域在 0-1之间,计算方便;多项式核的输出值域在 0-inf 在某些情况下有更好的表现。