序言:

       有人说, 支持向量机是整个机器学习中最复杂的算法;

       还有人说,如果支持向量机没学好,机器学习就白学了。

       从今天开始,我将开始该算法的学习,看看需要花多久才能掌握它。

童话故事:

关于SVM,流传着一个关于天使与魔鬼的故事。

传说魔鬼和天使玩了一个游戏,魔鬼在桌上放了两种颜色的球,如图3.1所示。魔鬼让天使用一根木棍将它们分开。这对天使来说,似乎太容易了。天使毫不犹豫的找根棍子一摆,便完成了任务,如图3.2所示。魔鬼又加入了更多的球。随着球的增多,似乎有的球不能再被原来的木棍正确分开,如图3.3所示。

支持向量机(SVM)算法(一)支持向量机(SVM)算法(一)支持向量机(SVM)算法(一)

SVM实际上是在为天使找到木棒的最佳放置位置,使得两边的球都离分隔它们的木棒足够远,如图3.4所示。依照SVM为天使选择的木棒位置,魔鬼即使按刚才的方式继续加入新球,木棒也能很好地将两类不同的球分开,如图3.5所示。

支持向量机(SVM)算法(一)支持向量机(SVM)算法(一)

看到天使已经很好地解决了用木棒线性分球的问题,魔鬼又给了天使一个新的挑战,如图3.6所示。按照这种球的摆法,世界上貌似没有一根木棒可以将它们完美分开。但天使毕竟有圣力,他一拍桌子,便让这些球飞到了空中,然后凭借圣力抓起一张纸片,插在了两类球的中间,如图3.7所示。从魔鬼的视角看这些球,像是被一条曲线完美的切开了,如图3.8所示。

支持向量机(SVM)算法(一)支持向量机(SVM)算法(一)支持向量机(SVM)算法(一)

后来,数据科学家们把这些球称为“数据”,把木棍称为“分隔面”,找到最大间隔的木棒位置的过程称为“优化”,拍桌子让球飞到空中的圣力叫“核映射”,在空中分隔球的纸片称为“分隔超平面”。这便是SVM的童话故事。

SVM概论:

在高维的特征空间中,用于切割分类的平面被称为“分隔超平面”,如果是在2维的空间中,分隔超平面退化成一条线。因此,就会引出一个推论:样本点在二维特征空间中,分隔超平面是一维的(退化成直线);在三维的特征空间中时分隔平面变成两维;如果是维度为n的更高维特征空间,分隔超平面将会是n-1维。有时候,分隔超平面也被叫做决策边界。

在分隔超平面的两侧,数据被分隔两方,这种场景就像被银河相隔的牛郎与织女。 分隔在两侧的数据分属两个分类,所以截止目前可以认为SVM是一个二分类算法。

看一下下图A框,如果我们要找一条决策边界来区分两类数据,会有B、C、D三种分法,哪种才是合适的呢?

支持向量机(SVM)算法(一)

从三个分类图中可以直观看出,D图的直线是最好的,因为它对未知样本数据进行正确分类的适应性更好。在机器学习中,我们称之为泛化性能更好。但我们如何找分隔超平面呢?

事实上,我们希望找出那些离分隔超平面距离最近的样本点,并确保它们离超平面的距离最远。这里的距离被称为“间隔(margin)”。请注意,这里把这些距离称之为“间隔”其实不太准确,实际上,这里的距离只是真正的SVM中的间隔的一半,后面还会继续说到真正的间隔。

间隔的最大化能确保我们的分类器有最佳的泛化性能,如D图中所画的决策边界那样。而那些距离分隔超平面最近的样本点,我们称之为“支持向量(support vector)”。为什么称之为“向量”呢?是因为这些点在高维空间中,是由高维数据组成。

我们的目标要最大化支持向量到决策边界的距离,因此需要寻找这个问题的求解方法。

数学定义与公式:

在正式寻找答案之前,有必要再次熟悉一些相关的数学概念,否则可能就看不下去了。

1、普通平面的一般式方程:支持向量机(SVM)算法(一)

这个公式容易理解,在三维空间中,三个点才能唯一确定一个平面,因此需要三个变量支持向量机(SVM)算法(一),外加一个常量d,表示该平面到坐标原点的距离。而且系数支持向量机(SVM)算法(一)不能同时为0。如果存在同时为0的情况,该平面会被压缩成一条线或一个点。

如果令w=(支持向量机(SVM)算法(一)), x=(支持向量机(SVM)算法(一)),该平面公式如果转化为向量形式,就会变成两个向量的点积形式:

支持向量机(SVM)算法(一)

2、法向量

法向量是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。由于空间内有无数个直线垂直于已知平面,因此一个平面都存在无数个法向量(包括两个单位法向量。单位法向量就是模长为1的法向量)。三维平面的法向量是垂直于该平面的三维向量,用方程支持向量机(SVM)算法(一)表示的平面,向量支持向量机(SVM)算法(一)就是其法向量。

3、超平面的方程:

n维空间中的超平面由下面的方程确定:支持向量机(SVM)算法(一)

w与x都是n维列向量,支持向量机(SVM)算法(一)为平面上的点,支持向量机(SVM)算法(一)为平面的法向量。b是一个位移项, 代表平面与原点之间的距离。请注意其中w,x均是列向量,加上转置变成行向量。

4、向量的模

向量的模指的是忽略方向,该向量的长度。有点类似绝对值这样的概念,如|-2|=2, |2|=2,只跟长度有关。

给定一个向量x=(支持向量机(SVM)算法(一)),则该向量的模|x| = 支持向量机(SVM)算法(一)

5、向量的点积(内积)

给定两个向量x=(支持向量机(SVM)算法(一))和w=(支持向量机(SVM)算法(一)),其内积是:支持向量机(SVM)算法(一)

6、L2范数

L2范数是指向量中各元素的平方和然后开根。其定义如下:

支持向量机(SVM)算法(一)

7、点到超平面的距离:

给定一个平面支持向量机(SVM)算法(一),和平面外一点支持向量机(SVM)算法(一),现在计算二者间距离d。如图:

支持向量机(SVM)算法(一)

取平面内任意一点支持向量机(SVM)算法(一),连接支持向量机(SVM)算法(一)成为一个向量,过P做平面的法向量支持向量机(SVM)算法(一)。从图可知,Q到平面的距离就是支持向量机(SVM)算法(一)在法向量支持向量机(SVM)算法(一)上的投影长度,所以:

d = 支持向量机(SVM)算法(一)

   = 支持向量机(SVM)算法(一)         (乘以再除以相同的值最终值不变)

因为支持向量机(SVM)算法(一),所以上式等价于:

   = 支持向量机(SVM)算法(一)                         (分子部分正好是两个向量的点积)

因为支持向量机(SVM)算法(一),且支持向量机(SVM)算法(一),使用向量点积公式和向量模计算公式,继续计算:

   = 支持向量机(SVM)算法(一)

   = 支持向量机(SVM)算法(一)

因为支持向量机(SVM)算法(一)点在平面内,所以满足支持向量机(SVM)算法(一),那么支持向量机(SVM)算法(一),代入上式可得:

   =  支持向量机(SVM)算法(一)

为了保证结果必须不为负数,符合距离的物理意义,所以给分子取绝对值,可得:

   = 支持向量机(SVM)算法(一)

到此,我们就获得了点到平面的距离公式。

如果结合L2范数,以及超平面的向量公式,该公式还有另一种向量化的方程式:

支持向量机(SVM)算法(一)支持向量机(SVM)算法(一),则

上面的距离计算公式就可以转化为:

支持向量机(SVM)算法(一)

注意,为了书写方便,一般情况下L2范数的下标2会被省略掉。

 

相关文章: