简介
支持向量机可能是最流行和最受关注的机器学习算法之一。
超平面是分割输入变量空间的线。在SVM中,通过选择一个超平面,并根据输入变量空间中的类(类0或类1),来最好地分离输入变量空间中的点。
在二维中,你可以把它想象成一条直线,并假设所有的输入点都可以被这条直线分开。支持向量机学习算法通过超平面的方法,找出使得类间达到最佳分离的系数。
超平面与最近的数据点之间的距离称为边距,能够将两个类分离得最好的或最优的超平面是具有最大边距的那条线,它是由几个关键点决定的,这些点与定义超平面和构造分类器直接相关,被称为支持向量。
SVM可能是最强大的开箱即用分类器之一,非常值得在您的数据集中进行这样的尝试。
支持向量机,一种监督学习方法,因其英文名为Support Vector Machine,故一般简称SVM。
通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
支持向量机建构一个或多个高维(甚至是无限多维)的超平面来分类数据点,这个超平面即为分类边界。 直观来说,好的分类边界要距离最近的训练数据点越远越好,因为这样可以减低分类器的泛化误差。
在支持向量机中,分类边界与最近的训练数据点之间的距离称为间隔(margin); 支持向量机的目标即为找出间隔最大的超平面来作为分类边界。
支持向量机的支持向量指的就是那些与分类边界距离最近的训练数据点。 从支持向量机的最佳化问题可以推导出一个重要的性质:支持向量机的分类边界可以被那些支持向量决定,而与其他数据点无关。 这也是它们被称为“支持向量”的原因。
注:一个机器学习模型的泛化误差(Generalization error),是一个描述学生机器在从样品数据中学习之后,离教师机器之间的差距的函数。使用这个名字是因为这个函数表明一个机器的推理能力,即从样品数据中推导出的规则能够适用于新的数据的能力。
优点
- 1、可以解决小样本情况下的机器学习问题。
- 2、可以提高泛化性能。
- 3、可以解决高维问题。
- 4、可以解决非线性问题。
- 5、可以避免神经网络结构选择和局部极小点问题。
缺点
- 1、对缺失数据敏感。
- 2、对非线性问题没有通用解决方案,必须谨慎选择Kernel function来处理。
支持向量机(SVM)的由来
首先我们先来看一个3维的平面方程:Ax+By+Cz+D=0
这就是我们中学所学的,从这个方程我们可以推导出二维空间的一条直线:Ax+By+D=0
那么,依次类推,更高维的空间叫做一个超平面:
x代表的是一个向量,接下来我们看下二维空间的几何表示:
SVM的目标是找到一个超平面,这个超平面能够很好的解决二分类问题,所以先找到各个分类的样本点离这个超平面最近的点,使得这个点到超平面的距离最大化,最近的点就是虚线所画的。由以上超平面公式计算得出大于1的就属于打叉分类,如果小于0的属于圆圈分类。
这些点能够很好地确定一个超平面,而且在几何空间中表示的也是一个向量,那么就把这些能够用来确定超平面的向量称为支持向量(直接支持超平面的生成),于是该算法就叫做支持向量机(SVM)了。
如何找到超平面
函数间隔
在超平面wx+b=0确定的情况下,|wx+b|能够表示点x到距离超平面的远近,而通过观察wx+b的符号与类标记y的符号是否一致可判断分类是否正确,所以,可以用(y(w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。定义函数间隔(用
但是这个函数间隔有个问题,就是我成倍的增加w和b的值,则函数值也会跟着成倍增加,但这个超平面没有改变。所以有函数间隔还不够,需要一个几何间隔。
几何间隔
我们把w做一个约束条件,假定对于一个点 x ,令其垂直投影到超平面上的对应点为 x0 ,w 是垂直于超平面的一个向量,为样本x到超平面的距离,如下图所示:
根据平面几何知识,有
最大间隔分类器
对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下图中的Gap的一半。
后续问题
至此,SVM的第一层已经了解了,就是求最大的几何间隔,对于那些只关心怎么用SVM的朋友便已足够,不必再更进一层深究其更深的原理。
SVM要深入的话有很多内容需要讲到,比如:线性不可分问题、核函数、SMO算法等。