SVM处理非线性问题理解
(1)利用核函数
在现实任务中,原始样本空间也许并不存在一个能正确划分两类样本的超平面,那这个时候应该怎么办呢?我们的想法是仍然去找平面,但我们去更高的纬度里去找平面。在低维空间里一些线性不可分的数据集,到高维空间里面将会以更大的概率被线性分开。有人证明,在特征空间中随机的选取一些点,同时随机的将这些点分成两类,那么在越高维度的空间里进行这个操作,这些点能被线性分开的概率越大。如果说你在无限的维度里面进行这个操作,那么这些点能被线性分开的概率为1。
我们定义一个映射$\varphi$,将低维矢量$X$映射至高维去,即:
其中,$\varphi(X)$ 是更高维的矢量。那么我们应该如何选取这个$\varphi$呢,这应该是SVM最有创造力的部分之一:
$\varphi(X)$ 取无限维(当然不无限有时也能操作),但同时使用有限维的操作。
我们可以不用知道 $\varphi(X)$ 的显示表达,取而代之,如果对空间任意向量,我们知道一个低维的核函数
$K(X_1,X_2)=\varphi(X_1)^T\varphi(X_2)$,则仍然能通过SVM,计算$W^T\varphi(X)+b$ 的值,进而得出$X$所属的类别。
当然,什么样的函数可以作为核函数是有条件的,此处不作说明,有兴趣的同学可以参阅西瓜书支持向量机那一章。SVM最常用的核函数是如下2个:
(2)软间隔和正则化
在现实任务中,往往很难确定合适的核函数使得训练样本在特征空间中线性分开。即如果我们硬要求找一个平面将所有样本正确划分,那最终结果很可能是我们找不到这样一个平面,因为条件太苛刻了,退而求其次,我们降低要求。原先我们要求所有样本必须满足以下关系(硬间隔):
现在我们允许某些样本不满足上述约束,于是我们将约束条件改写为(软间隔):
同时为了使不满足约束的样本尽可能少,我们将优化目标改写为:
当然目标函数的改写不止这一种方式,可以通过尝试不同的改写方式,来达到不同的效果。其中
称作正则项。$\xi_i$称作松弛变量,用以表征该样本不满足约束的程度。$C$是事先设定的参数,根据经验来调试。从这个方面来看,SVM还是很好的,因为事先需要调试的参数并不算多。
总结
从以上来看,利用SVM处理非线性问题主要用到了两种方法:
- 到更高维度去找可以分类的超平面。
- 有限制地降低分类要求。
当然,这两种方法可以结合使用来达到更好的效果。