SVM存在的意义
要了解SVM存在的意义,首先从下面一个简单的二维数据集例子开始。
上面是一个线性可分的数据集。所谓线性可分,就是可以用一条直线将两类数据点完全分开。在图中,我们用圈圈表示负类,用加号表示正类。假设现在要用一条直线将正类和负类完全分开,显然会有无穷多个解,有无限多条直线可以完全分开正类和负类。
下图显示了其中一条可以完全区分两类的直线
图中的Decision Boundary既是决策边界,在决策边界右边的点被分类为正类,在决策边界左边的点被分类为负类。既然有无穷多的直线可以区分训练集的两类,那么是否有一个标准能够度量决策边界的优劣,从而在无穷多个直线当中选择一个最好的作为决策边缘,区分未知的点呢?答案是肯定的,这也是SVM存在的意义。SVM可以用来度量决策边界的优劣,下面我们将介绍SVM(支持向量机)对决策边界的度量规则,从而选出SVM认为的最好的决策边界。
SVM规则
这里我们还是以刚刚的决策边界为例子。在这幅图里,我们增加了一条与决策边界垂直,与最近的数据点相连的线段。这条线段的长度,我们称之为Margin。换句话说,Margin就是所有数据点到决策边界的最短距离。
SVM规定,在决策边界能够完全正确划分正负类的前提下,Margin的值越大越好。SVM算法目的就是要找出找出满足这两个条件的直线。因此SVM也称为Large-Margin算法。
Margin值越大越好的原因
下面我们用另一个Margin值比较小的决策边界作为例子,对比说明Margin值较大的好处。
假设现在用此决策边界预测图中绿色点的类别,很明显该点位于决策边界的左边,该点应该被分为负类。但是,在收集数据的时候,可能会存在误差。假设在数据收集的时候,某一误差使得绿色的点从原来的位置移动到了红色点的位置,即x1特征由于误差从0.2变成0.4。此时,红色点落在了决策边界的右边,决策边界判定这个点为正类,因此分类错误。
现在我们重新看回之前一个较大Margin的决策边界例子。
我们对同样的情况进行分析,即绿色点由于误差,使其位置从原来的位置移动到了红色点的位置。这个时候,红色点依然在决策边界的左边,决策边界判定这个点为负类点,此时对该点分类正确。
从上面两个例子可以看出,越大的Margin对误差的容忍度就越好。这能一定程度减小过拟合的问题。所以SVM规定,Margin值越大,决策边界越优,能够容忍更大的测量误差。
为什么要命名为支持向量机
很多人必定对支持向量机这个名字感到很疑惑。要知道支持向量机的命名缘由,首先要弄清楚什么是支持向量。下面我们还是以原来的例子说明这个问题。
在坐标里的每一个点都由多个维度组成,任何一个点都可以写成多维向量的形式,维度的值是每个特征对应的值。因此每一个点也可以称作是一个向量。图中的虚线是两条边缘,两条边缘得到的方式是让两条平行于决策边界的线向两侧平行移动,直到任意一条边缘与图中任意一个点有交集的时候,停止移动。
在支持向量机算法中,我们最终需要得到的是在能百分百区分正负类的前提下,得到一条拥有最大Margin的直线。Margin的值就是其中一条边缘到决策边界的距离。
我们很容易看出,Margin的大小仅仅和落在两条虚线上的数据点有关系,直线之外的点不管怎么变化,Margin的值都不会改变。这个算法仅仅需要落在两条虚线上的点的支持,其它点(图中虚化的点)可以不存在。因此我们可以把落在虚线上的点称为支持点。前面我们提到,一个点也可以称为一个向量,因此,我们或许可以把落在虚线上的点称为支持向量。
然而,落在虚线上的点仅仅能称作支持向量候选(Support Vector Candidate), 支持向量候选和支持向量的区别在后续的章节会有说明。SVM算法其实就是靠支持向量来计算最大Margin的一个算法,因此将其命名为支持向量机。
总结
在这一章简单介绍了SVM的存在意义。在后续的章节里,将会用几何以及高等数学的知识,推理SVM的计算过程,得到一个最佳的决策边界。在本章节里,只是介绍了线性SVM,所谓线性SVM就是用SVM解决线性可分的数据集问题。对于线性不分的情况,SVM也会有相应的方法解决,在后续的章节里也会有详细的推导。