1.什么是SVM?
首先支持向量机不是一种机器,而是一种机器学习算法。是一种监督学习算法,用来解决分类问题的。支持向量又是啥意思?通俗的理解就是,分类器中最靠近决策边界(Logistic回归里面提到过决策边界的概念)的那些点,也就是对决策边界起决定性作用的点,而其他点对这条划分直线的最终位置的确定起不了作用的。这些点就叫做支持向量。
1.1 官方定义
在 maximum margin (最大间隔)上的这些点就叫做“支持向量”。不理解不要紧,我们上图。如图,“支持向量” 就是图中用紫色框框圈出来的点。
支持向量
再来看分类器的表达式,最后的表达式里只含有这些 “支持向量” 的信息,而与其他数据点无关:
1.2 线性可分数据
来看图:图中的两组数据,它们之间已经分的足够开了,因此很容易就可以在图中画出一条直线将两组数据点分开。在这种情况下,这组数据就被称为线性可分数据,这条直线就是决策边界。做二维空间里,凡是线性可分的模型的决策边界都是一条直线。如果是高维空间,决策边界是一个超平面,分布在超平面一侧的所有数据都属于某个类别,而分布在另一侧的所有数据则属于另一个类别。
线性可分数据
2. 间隔
其实我们可以找到无数条直线把图中的两类点分开,如图a。但是我们希望能找到一条最好的直线来构建分类器,使其分类结果鲁棒性最好。即如果数据点离决策边界越远,那么其最后的预测结果也就越可信。如图b中的黑色直线,即离他最近的那些点离他的距离尽可能远。既然这样,我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里所说的点到分隔面的距离就是间隔,如图b中的黄色区域,这个间隔就是最大间隔。我们希望间隔尽可能地大,这是因为如果我们犯错或者在有限数据上训练分类器的话,我们希望分类器尽可能健壮。支持向量就是离分隔超平面最近的那些点。
图a:可以找到无数条直线分开两类数据点
图b:黄色区域是最大间隔
2.1 怎么求最大间隔?
如图:任意在红色直线
上取两个点
和
,则有:
两式相减得到:
所以
是直线
的法向量
如图:在法向量
的方向上的直线与两条直线
和
的交点分别为
和
,则有:
将3个式子整理得到:
此时此刻我们得到了
这就是
最大间隔!
别忘了我们还有约束条件哦