有些学习方法(如感知机)只须要找到任一线性分界面便可,而另外一些方法(如NB)则须要按照某个准则找到最优的线性分界面。对于SVM而言,它定义的准则是寻找一个离数据点最远的决策面。
html
SVM算法的数学原理相对比较复杂,可是思想比较简单,就是经过某种核函数,将数据在高维空间里寻找一个最优超平面,可以将两类数据分开。算法
从决策面到最近数据点的距离决定了分类器的间隔,这种构建方法意味着SVM的决策函数彻底由部分的数据子集所肯定,而且这些子集定义了分界面的位置。这些子集被称为支持向量(support vector)。
函数
例子:学习
要用一条直线,将下图中黑色的点和白色的点分开,很显然,图上的这条直线就是咱们要求的直线之一(能够有无数条这样的直线)。优化
令黑色的点 类= -1, 白色的点 类 = +1spa
sgn表示符号函数,当f(x) > 0的时候,sgn(f(x)) = +1, 当f(x) < 0的时候sgn(f(x)) = –1。htm
Classifier Boundary就是f(x),红色和蓝色的线(plus plane与minus plane)就是support vector所在的面,红色、蓝色线之间的间隙就是咱们要最大化的分类间的间隙。blog
当支持向量肯定下来的时候,分割函数就肯定下来了,两个问题是等价的。获得支持向量,还有一个做用是,让支持向量后方那些点就不用参与计算了。get
给出咱们要优化求解的表达式:博客
min ||w||^2,这个式子可让函数更平滑,之因此说更加平滑了,我认为是由于平方的做用使得w表示的特征更加明显从而更易区分,因此SVM是一种不太容易over-fitting的方法。
原问题,加上一些限制条件:
后面的s.t. 限制条件有多个,对应着样本的个数。
在求解上式最优解前,先来看看拉格朗日乘子法。
探讨不等式约束的极值问题求法,问题以下:
定义1:通常化的拉格朗日公式:
这里的α和β都是拉格朗日乘子,要求上式的最小值,先看看定义2.
定义2:
p表明primal原始的。
假设gi(w)>0或者hi(w)≠0,所以能够经过调整α和β来使得Θp(w)有最大值为无穷;而只有当知足约束gi(w)≤0 and hi(w)=0时,Θp(w)能够f(w)。以下图:
所以,咱们要求的min_w f(w) 能够转换为 min_w Θp(w) 。
要求解min_w Θp(w),首先是有2个参数w和α,其次先求关于α的最大值,考虑到α也是不等式约束,而后再在w上求最小值,难度比较大。那先看看定义3。
定义3:
D表明dual对偶,ΘD(w)将问题从原先的先求关于α的最大值再求关于w的最小值,转变为先求关于w的最小值再求关于α的最大值,
这个问题是原问题的对偶问题,相对于原问题只是更换了min和max的顺序,并且通常更换顺序的结果是
上式的相关证实,请参考:http://www.cnblogs.com/zhengyuhong/p/3590635.html 对该关系解释的很详细很清楚。
下面解释下二者在什么状况下是等价的,也就是知足KKT(Karush-Kuhn-Tucker, KKT condition)条件。
该条件以下:
因此,若是w, α, β知足上述的几个条件,那么他们就是原问题和对偶问题的解。
其中,公式(5)这个条件能够理解为若是α>0,那么gi(w)=0,也就是说w处于可行域(gi(w)≤0)的边界上,也就是所说的支持向量;若是α=0,那么gi(w)<0,也就是位于可行域的内部,也就不是所说的支持向量。
讲了这么多定义,回到SVM目标函数求最优解的问题上来。
原问题:
利用拉格朗日乘子法,转换为拉格朗日函数:
下面按照对偶问题的求解步骤进行:
对上式,没有β缘由是没有等式约束条件,首先求解L(w, b, α)最小值,只和w、b有关系,所以对w和b分别求偏导,获得:
第一个式子变换下获得:
将其代回到拉格朗日函数,并将其化简:
最后获得:
因为最后一项为0,简化为:
拉格朗日函数如今只包含α变量,而咱们求出了α也就获得了w和b。
接着,是极大化过程:
对于这个问题的求解,须要借助SMO(序列最小优化算法)等算法。
本文参考的博客:
http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html
理解SVM的三层境界:
http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495537.html
http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495689.html 帮助挺大的,讲的易懂
http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html
拉格朗日乘子和KKT条件: