前面两篇总结了线性支持向量机模型,总体来说,就是在样本输入空间下对每个维度进行线性组合之后使用符号函数判别最终的类别。第一个是理想情况下的线性可分SVM,这是第二个的近似线性可分SVM的基础。而且也是一种递进关系,是为了从数学抽象化的理想模型到现实情形的一种推广,但它们终究是一种线性模型,对于更复杂的现实情形有时候依然会难以描述,需要使用非线性模型去描述。
非线性SVM
由于现实问题的复杂性,导致训练的样本数据无法使用在输入空间χ=Rn(或其子集或其离散集合)下使用一个线性超平面进行分隔,对于给定的训练数据T={
(x1,y1),(x2,y2),...(xN,yN)},xi∈χ,yi∈{
−1,+1},i=1,2...N,如果在输入空间存在一个非线性的超曲面进行分隔,将不同标记类别的训练数据分开,那么就是非线性可分的问题。
上述两类数据可以使用一个非线性的曲面进行分隔,同时为了更好地模拟现实情形,依然使用软间隔,对个别的噪声数据做出“让步”。这样也是为了防止对有限的训练数据过拟合。
实际上,如果不考虑非线性模型的复杂度和实用性,任何复杂的数据都可以使用非线性的超曲面分隔。这也是非线性SVM在前面线性SVM的基础上进行的进一步推广,涵盖了任何现实问题的最终模型。同时,将输入空间的超平面也划分为广义的非线性超曲面,那么所有的SVM模型就是统一的形式了。
空间变换与核技巧
在输入空间χ下的非线性分类模型不易求解,如果可以使用线性方法求解那就与前面的线性SVM的求解殊途同归了,不仅解决了非线性SVM,同时可以沿用前面求解的经验。
空间变换
解决这个问题的办法就是进行非线性的空间变换
将输入空间的 x∈χ 变换为新的空间下的 ϕ(x)∈Ω ,是的在新的空间下,所有的数据是线性可分或者近似线性可分的。这样原空间非线性问题就变为了新空间的线性问题。
但是如果寻找这样的空间变换是非常困难的,仅仅对于二次型变换就已经非常困难了,如果需要变换到更高次或者非多项式的变换,那么基本上是无法求解,更重要的是现实问题涉及到成百上千的维度,越发使得不能显式求解这样的变换,那么就需要将解决这样的问题交给核技巧了。
核技巧
核技巧(kernel trick)就是解决上述空间变换问题引入的,本质上是一个数学上解决空间变换复杂问题的一个技巧(trick),不仅仅用在这里的非线性SVM应用中,同时可以推广用到任何需要解决这种空间变换问题的统计学习问题。
核技巧首先需要定义核函数K(x,z)
设输入空间χ到特征空间Ω存在一个变换函数
ϕ(x):χ→Ω
使得 ∀x,z∈χ ,函数