[SVM系列之一]白话支持向量机(SVM)

初识支持向量机(SVM)
我们来玩一个游戏:

首先在桌子上放两种颜色的球,它们似乎存在某种关系,那你能不能用一根木棒将两种颜色分开呢?要求:尽可能在桌面上放置更多的小球后仍然适用。

 
你大概会这么放吧:

 
为了测试你的答案是不是符合要求,我在桌上又放了更加多的蓝红小球,可以发现,一个红球被分错了位置:

 
支持向量机(SVM)可以白话为:试图找到一个木棍放置的最佳位置,使得木棍的两边有尽可能大的间隙。

 
如此一来,即使我放更多的红蓝小球,木棍仍然可以正确分开两种颜色:

 
看来我出的题目还是太简单了,下面我给你出个难点儿的问题:桌面上的小球按下图放置,你肯定不能直接用木棍分开两种颜色的小球了,要怎么办呢?

 
你可以用力拍桌子,使球飞到空中,然后快速用一张纸插到两种颜色的球之间。(只是为了便于理解,小孩子请勿模仿233333)

 
再从桌面的角度看这些小球,它们被完美地用一条曲线分开了。

 
我们可以定义几个高大上的名词,把这些小球叫做数据(data),把棍子叫做分类器(classifier),最大间隙trick叫做优化(optimization), 拍桌子叫做核化(kernelling), 那张纸叫做超平面(hyperplane)。

白话SVM原理
假设我们要通过一条线把实心圆圈和空心圆圈分为两类。
那么有无数多条线可以完成这个任务。
在SVM中,我们寻找一条最优的分界线使得它到两边的margin都最大。
在这种情况下边缘加粗的几个数据点就叫做Support Vector,这也是这个分类算法名字的来源。
如下图所示:

 
我们还可以将其扩展到任意nn维度空间上:

首先在11维到nn维空间中得到了一系列数据点
然后总能在n−1n−1维上找到一个最优超平面(hyperplane)

 
什么是支持向量机(SVM)?
下面阐述一下正经概念:

支持向量机(Support Vector Machine,简称SVM)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。

通俗来讲,它是一种二分类模型。它不是一种机器,而是一种机器学习算法。其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

后记:在本节,你仅需对SVM有个大致的了解,在本系列后续教程中,我们会更加深入讨论支持向量机的原理以及应用场景,并配合实验来加深理解。

 

点赞