支持向量机即Support Vector Machine,简称SVM。一听这个名字,就有眩晕的感觉。支持(Support)、向量(Vector)、机器(Machine),这三个毫无关联的词,硬生生地凑在了一起。从修辞的角度,这个合成词最终落脚到”Machine”上,还以为是一种牛X的机器呢?实际上,它是一种算法,是效果最好的分类算法之一。
SVM是最大间隔分类器,它能很好地处理线性可分的问题,并可推广到非线性问题。实际使用的时候,还需要考虑噪音的问题。
本文只是一篇学习笔记,主要参考了July、pluskid等人相关文章。将要点记录下来,促进自己的进步。
SVM是最大间隔分类器
既然SVM是用来分类的,咱就举个简单的例子,看看这个SVM有啥特点。如下图所示,有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,可以用一条直线将这两个数据分开,这样的直线可以有无数条。
绿线、粉红线、黑线都能将两类区分开。但是那种更好呢?感觉上黑线似乎更好些。粉红线和绿线都离样本太近。要是样本或分界线稍稍有些扰动,分类就可能出错。黑线好就好在离两类都有一个安全间隔(蓝线与黑线间的间隔),即使有些扰动,分类还是准确的。这个安全间隔,也就是“Margin”,当然我们觉得间隔越大分类越准确。
这种分类思想该作何理解呢,他和逻辑回归的分类有何区别呢?
当用逻辑回归的思想来处理分类问题时(将数据分成正负两类:正类y=1,负类y=0)。逻辑回归函数反映的是数据是正类的概率,当这个概率大于0.5时,预测这个数据是正类,反之,小于0.5时,预测这个数据是负类。它优化的目标是预测出错的概率越小越好。可以参看这里
SVM则不同,它要找出一条离两类都有一定安全间隔的分界线(专业点叫超平面)。优化的目标就是安全间隔越大越好。
因此,SVM也被叫做最大间隔分类器。
线性可分的情况
SVM是通过间隔来分类。我们怎么来定量地表达呢?先来看看线性可分的情况,分类函数
x 是特征向量,
先来看看函数间隔,用 γ^ 表示: γ^=y(wTx+b)=yf(x) 。 |f(x)| 值越大,也就是 yf(x) 越大,数据点离超平面越远,我们越能确信这个数据属于哪一类别,这是最直观的认识。
那这个是不是就完美表达了我们想要的间隔呢?看看这种情况,固定超平面,当 w ,

x 是超平面外的一点,它离超平面的距离是
这个 γ~ 是不受参数缩放影响的。于是,我们的SVM的目标函数就是
,当然它得满足一些条件,根据margin的含义