在引入核函数之前我们先来回顾一下之前的一个问题,在前面我们提到过我们使用的训练数据都是线性可分的,那么如果数据不是线性可分的我们应该如何处理呢?我们先来看看我们的超平面函数:
将w代入f(x)之后得:
上面式子中<a, b>表示向量a和向量b的内积,表示第i个训练样本与当前待预测样本的内积。在前面的内容提到过,在超平面两侧的样本到超平面的几何间隔最大,我们可以认为在超平面两侧还有两个超平面如下图:
落在和
上的点,我们称为支持向量,而对于所有非支持向量的点对应的α参数均为0,我们可以通过上图可以看得出,能够真正影响超平面位置的点,或者说为了确立超平面位置而参考的点,其实就是位于超平面两侧的支持向量。也就是说只有那些离超平面比较近的点才会对超平面的位置有一定的影响,而非支持向量对超平面没有什么影响,这些非支持向量的位置如何并不会影响到超平面的确立。我们从数学上做一下简单的分析,先来看一下将目标函数乘上一个拉格朗日乘子的方式得到的目标函数:
在这里如果是一个支持向量,所以它到超平面的间隔为1,而如果xi是一个非支持向量,那么它到超平面的间隔大于1。所以有:
支持向量:
非支持向量:
对于非支持向量而言是大于0的,而
又是非负的,为了目标函数的最大满足最大化,所以
必须等于 0 。这就是非支持向量点的
必须是0的原因。
事实上对于大多数的数据来说,它们通常都不是线性可分的,也就是说我们无法找到一个超平面将这些数据分开。而支持向量机对这种线性不可分的情况通常将数据从n维映射到n+1维空间,利用高维度空间的超平面来解决原维度不可分的问题。我们先通过图形方式来对这个问题做一下简单的说明:
图A
显然,这样的数据,在二维的平面下显然无法找到一个一维的超平面(直线)将这两类数据分为两类,但我们可以把这些二维的数据映射到三维的空间里,并找到一个二维的超平面将数据开成两类。我们先把这些数据映射到三维空间内,如下图:
图B
显然,在二维空间内的线性不可分数据被映射到三维空间之后就方便处理了,我们可以找到这样的一个二维的超平面将这些数据分开:
图C
这个过程我们可以用更通俗的语言来描述:我们假定数据分布在一块透明的玻璃方砖的前后两个平面上,当我们平视玻璃的前面时,前后两个面的数据点都会投射到一个平面里,看到的就是图A,这时的数据是线性不可分的;接下来我们换一个角度来看这块玻璃方砖,我们从侧面看,于是我们就会看到图B,其实这些线性不可分的点是分布在玻璃方砖的前后两个面上;于是我们就可以找到一个平面从中间将玻璃方砖切为两半,将数据分为两类,即图C。
具体来说处理线性不可分情况的解决办法就是引入“核函数”,关于“核函数”的相关知识我们将在下一节来学习。
Copyright © 2015-2023 问渠网 辽ICP备15013245号