支持向量机,Support Vector Machine,简称SVM,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,学习策略便是间隔最大化,核心思想如下图所示
支持向量机(SVM)理解起来也并不复杂。众所周知萝莉有三好:身娇、腰柔、易推倒;御姐有三好:啤酒、洗澡、吃嫩草;SVM也有三好:间隔、对偶、核技巧。能够理解这三宝就能快速掌握支持向量机,配合代码就能进行仿真实验,熟练掌握机器学习不再是什么难事。下面我就从三好开始详细解读一下支持向量机。
1、间隔(Margin)
如上图所示,是一个典型的线性二分问题,可以很轻松的找到一条直线 y=w*x+b 来分开这两种不同的点。从图中红色点中随意找到一个点 X,它到达直线 y 的距离为 M ,垂点为 X’。距离 M 即为 间隔。根据高中数学所学的点到直线公式,可以推导出间隔M 的表达式,同理也可以推导出坐标原点 O 到直线 y 的距离。
下面给出具体的推导公式:
根据点到直线公式推导出了间隔 M 的表达式 。接下来在平面中找到一条线 w*x+b=0,从而可以很轻松的找到 w*x+b=1 和w*x+b=-1 这两条线,间隔 M 的表达式就可以写作
。如下图所示:
支持向量机的核心思想就是找到一个分类线,能够分开两种数据点,同时使得点到直线的最小距离最大化,也就是间隔最大化问题。在寻找分类线的过程中,不是每一个数据点都被用到,而是只有距离分类线最近的几个点被用到,而距离直线最近的几个点被称为 支持向量。如下图所示:
2、对偶
根据以上公式,把求解分类线问题转化成了求解最值的问题,也就是二次优化问题。利用拉格朗日数乘法,将以上公式带入展开。
从而就可以求解出直线 y=w*x+b 中的 w和b 这两个值,从而求解出分类直线 y 。
但是在实际问题中,数据点的分布往往会出现一些特殊情况,不会出现上面这种完全能够二分的理想状态,这时就需要引入一些松弛因子,松弛因子的作用就是允许存在一定的误差,举个例子,就像考试的时候,规定分数到达60分为及格,但是老师在计算成绩的时候引入了松弛因子,允许只要分数达到50分就算是及格。
引入松弛因子以后,求解的方法依然是拉格朗日数乘法,公式如下:
3、核技巧
如果单纯是线性二分问题,不用支持向量机也可以求解。而支持向量机要解决的是非线性二分问题。
核技巧是指通过引入一个核函数可以把n维低维非线性问题变成m维高维线性问题求解,只需进行n次乘积,再加和,最后整体求i次方即可,核函数的作用是将m维高维内积运算转化为n维低维空间核函数运算,减少了大量的计算。
核函数的类型有很多,常用的核函数包括Gaussian和Polynomial。
4、总结
最后再来总结一下SVM的三好:间隔、对偶、核技巧。