SVM系列第二讲--从线性分类器讲起
看过了上一节的故事,相信你对SVM已经有了一个直观的认识,故事中以二维平面上的点来介绍SVM算法,并且看到了可以直接用一条直线将数据点进行准确划分以及不能用一条直线将数据点进行准确划分的的情况,这两种情况我们分别称为线性可分和线性不可分。我们会从线性可分的情况开始讲起。
1、从线性分类器讲起
SVM的故事很长,我们直接入题吧。不过我不会一上来就介绍SVM,我会从线性分类器开始讲起。这里我们考虑的是一个二分类问题,数据点用x表示,每个数据点是一个n维向量,当然,在平面上,数据点是二维的。而类别用y来表示,可以定义两个类别分别为1和-1(当然0和1也可以,不过为了方便我们SVM的推导,我们选择了1和-1),一个线性分类器,就是想要在n维空间中找到一个超平面,将两类数据点准确的分隔开。这个超平面可以用如下的方程表示:
超平面方程
这里我们将超平面定义为一个向量相乘的形式,w为参数向量,x为n维数据点,二者都是定义为列向量形式,即w和x的维度均为(n*1),所以为了二者可以相乘得到一个数(即1*1维), 我们对w进行了转置。那么,有了这个分类超平面之后,我们希望不同类别的数据点分别位于其两侧。我们可以用f(x)来表示我们的分类超平面,那么显然令f(x)=0的点是分类超平面上的点,那么在超平面两侧的点,都会使f(x) <> 0,所以我们不妨假设类别为-1的点,其f(x) < 0,类别为1的点,其f(x) > 0。再次提示,我们这里从简单的线性可分情况入手,所以不存在用超平面无法将数据点准确分隔的情况。
下图是一个在二维空间中线性分类器的例子:
线性可分例子
如图所示,红蓝颜色的数据点分别表示两种不同的类别,红颜色的线表示一个可行的超平面,基于前面的假定,当有一个新的数据点到来时,带入超平面方程f(x)中,如果f(x)<0,我们认为该点属于类别-1,如果f(x)>0,我们认为该点属于类别1。但是如果f(x)=0,即该点是超平面上的点,就很难办了,因为根据此时的超平面方程,我们无法判断该点属于哪一类别。不仅是使f(x)=0,只要是f(x)的值足够小,我们都很难处理,因为我们在使用梯度下降或者是其他方法对损失函数进行优化时,实际上就是不断旋转我们的超平面,那么对离超平面很近的点,稍微的平面旋转就可能使他们的类别发生改变。因此,我们希望对于所有可行的超平面方程,能够找到一个较好的f(x),使得所有点的f(x)值都是很大的正数或者是很小的负数,这样我们就能更加确信它是属于其中某一类别的。
所以,可以简单的理解为,SVM是对线性分类器的一个改进,我们不仅要求超平面能够准确地将数据点进行分隔,同时我们想要使所有的点尽量都能够远离我们的超平面,即所有点的f(x)值都是很大的正数或者是很小的负数。