第9.1节 支持向量机思想
各位朋友大家好,欢迎来到月来客栈,我是掌柜空字符。
本期推送内容如下,如果本期内容对你有所帮助,欢迎点赞、转发支持掌柜!
在前面几章中,笔者已经陆续介绍了多种分类算法模型,相信各位读者对于机器学习也算有了一定的了解。在接下来的这一章中,笔者将开始逐步介绍本书中的最后一个分类模型——支持向量机。支持向量机(Support Vector Machine, SVM)可以算得上是机器学习算法中最为经典的模型。之所以称为经典,是因为支持向量机的背后有着完美的数学推导与证明。当然,也正是因为这个原因使学习SVM有着较高的门槛,因此,在接下来的内容中,笔者将会尽可能以最通俗的表达来介绍SVM中的相关原理。
9.1 SVM思想
什么是支持向量机呢?初学者刚接触到这个算法时基本上会被这个名字所困扰,到底什么叫“向量机”,听起来总觉得怪怪的,因此首先需要明白的是,支持向量机其实和“机”一点关系也没有,算法的关键在于“支持向量”。如图9-1所示,此图为4种不同模型对同一个数据集分类后的决策边界图。可以看到尽管每个模型都能准确地将数据集分成两类,但是从各自的决策边界到两边样本点的距离来看却有着很大的区别。
为了能更加清楚地进行观察,下面将4个决策边界放到一张图中,如图9-2所示。
如图9-2所示,图中左边从上到下分别为模型(d)、(a)、(b)、(c)在数据集上的决策边界。可以发现模型(c)的泛化能力应该是最差的,因为从数据的分布位置来看真实的决策面应该是一条左高右低倾斜的直线。其次是模型(b)的泛化能力,因为从图9-2可以看出模型(b)的决策面太过于偏向方块形的样本点。
因为评估分类决策面优劣的一个原则就是,当没有明确的先验知识告诉我们决策面应该偏向于哪边时,最好的做法应该是居于中间位置,也就是类似于模型(a)和模型(d)的决策面。那么模型(a)和模型(d)究竟哪个更胜一筹呢?进一步,可以将(a)和(d)这两个模型各自到两侧样本点距离可视化,如图9-3所示。
从图9-3中一眼便可以看出,模型(d)的决策面要更居于“中间”(事实上确实在中间),而模型(a)的决策面也略微偏向于方块形的样本点,因此在这4个模型中,模型(d)的泛化能力通常情况下是最强的。此时有读者可能会问,假如把模型(a)中的决策面向上平移一点,使其也居于两条虚线之间,那么此时应该选择哪个模型呢?答案当然依旧是模型(d),原因在于模型(d)的决策面还满足另外一个条件,即到两条虚线的距离最大。换句话讲,模型(d)中两条虚线之间的距离要大于模型(a)中两条虚线之间的距离。
讲到这里,相信各位读者已经猜到,模型(d)对应的就是支持向量机模型,同时虚线上的两个样本点被称为支持向量。可以发现,最终对决策面起决定性作用的也只有这两个样本点,说得通俗点就是仅根据这两个点就能训练得到模型(d)。
因此,这里可以得出的结论就是,通过支持向量机我们便能得到一个最优超平面,该超平面满足到左右两侧最近样本点的间隔相同,并且离左右最近样本点的间隔最大。不过又该如何来找到这个超平面呢?