支持向量机SVM(Support Vector Machine)是一种分类器,之所以称为‘机’是因为它会产生一个二值决策结果,即它是一种决策机。SVM支持线性分类、非线性分类以及回归问题(SVR),并且通过OVR或OVO的方式可以将SVM应用在多分类领域。在不考虑集成学习算法、特定的数据集等情况时,SVM可以认为是最优秀的分类算法。
SVM的主要思想是:
(1)构建最优分割超平面(separating hyper-plane)对数据集进行分类。在实际应用中这样的超平面可能存在多个,SVM的目的在于让离超平面比较近的点尽量远离这个超平面,这样得到的模型的分类效果好、健壮性强。
(2)使用核函数将低维线性不可分的样本转化为高维特征空间线性可分,即升维和线性化。
SVM优点:泛化错误率低,结果易解释,计算开销不是很大;
SVM缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题。
线性可分SVM
在样本空间中,分割超平面用线性方程表示为:
其中w为法向量,决定超平面的方向;b为位移项/截距,决定了超平面与原点的距离。
假设超平面能将样本正确分类,有:
一般将支持向量到分割超平面的函数距离设置为1:
由距离公式可求出支持向量到超平面的距离,以及两个异类支持向量到超平面的间隔:
其中||w||2为w的L2范数,
为了求得γ的最大值,同时满足不等式条件,可将问题转化为其等价形式:
有约束的最优化问题
最优化问题一般是指对某一个函数而言,求解其在指定作用域上的全局最小/极小值问题,一般分为三种情况:
1、无约束问题
求解方法:梯度下降法、牛顿法、坐标轴下降法等。
2、等式约束问题
求解方法:消元法或Lagrange乘子法,后者等价于将原来的有约束问题转换为更多参数的无约束问题。
;其中 λi≠0,为Lagrange乘子
然后令Lagrange函数L对各个变量求偏导,解出这n+l个方程后可求函数极值:
3、不等式约束问题
求解方法:KTT条件,是泛拉格朗日乘子法的一种形式,主要应用于不等式约束的情况下优化函数的求解。
;λj≠0,μk≥0
KKT(Karush-Kuhn-Tucher)条件
(1)Lagrange取得可行解的充要条件
(2)初始的约束条件
(3)将不等式约束转换后的一个约束,称为松弛互补条件
(4)Lagrange乘子约束条件
(5)不等式约束需要满足的条件
可行解x必须在约束区域g(x)<0和g(x)=0取得,当可行解x在g(x)<0的区域中时,此时直接极小化f(x)即可(令μ=0消去约束);当可行解x在g(x)=0的边界上的时候,此时等价于等式约束问题的求解。
对于参数μ的取值,在等式约束问题中,约束函数和目标函数的梯度只要满足平行即可求解;而在不等式约束问题中,若μ≠0,则说明可行解在约束区域的边界上,这时可行解应尽可能地靠近无约束情况下的解,所以在约束边界上,目标函数的负梯度方向应该远离约束区域朝向无约束区域时的解,此时约束函数的梯度方向与目标函数的负梯度方向应相同,从而得到μ>0。
原始问题与对偶问题
参考百度百科、文库和博客
https://wenku.baidu.com/view/a56f965e14791711cc7917c0.html
https://www.cnblogs.com/xxrxxr/p/7536131.html
在优化问题中,目标函数f(x)存在多种形式,如果目标函数和约束条件都为变量x的线性函数,则称问题为线性规划。每个线性规划问题都伴随着另一个线性规划的问题,称为对偶问题。在原始(primal)和对偶(dual)两个线性规划中求解任何一个时,会自动地给出另一个的最优解,当对偶问题比原始问题约束较少时,求解对偶问题比求解原始问题要方便的多。
原始问题 | 对偶问题 |
max z=CX | min w=Yb |
s.t. AX≤b | s.t. YA≥C |
X≥0 | Y≥0 |
弱对偶定理
若原始问题和对偶问题分别有可行解X(0)、Y(0),则恒有CX(0)≤Y(0)b。推论:原始问题的任一可行解的目标函数值是其对偶问题目标函数值的下界;反之对偶问题的任一可行解的目标函数值是其原始问题目标函数值的上界。
强对偶定理
若原始问题和对偶问题中有一个有最优解,则另一个问题也必然存在最优解,且两个问题的目标函数值相等。
最优性定理
若原始问题和对偶问题分别有可行解X(0)、Y(0),若CX(0)=Y(0)b时,则X(0)、Y(0)分别各自问题的最优解。
最优解存在定理
若原始问题和对偶问题同时存在可行解,则它们必然都存在最优解。这是因为最大化问题LP的目标函数值有上界,一定有最优解;最小化问题DP的目标函数值有下界,也一定有最优解。
无界定理
若原始问题(或对偶问题)有可行解且目标函数值无界,则其对偶问题(或原始问题)无可行解。
互补松弛定理
若原始问题和对偶问题分别有可行解X(0)、Y(0),原始问题的松弛变量和对偶问题的剩余变量分别为XS、YS,则X(0)、Y(0)是最优解的充要条件是:Y(0)XS=0,YSX(0)=0。
松弛变量:若线性规划模型的约束条件全是小于类型,那么可以通过标准化过程引入m个非负的松弛变量,便于在更大的可行域内求解。若为零,则收敛到原有状态;若大于零,则约束松弛。
当约束条件为“≤”(或“≥”)类型的线性规划问题时,可在不等式左边加上(或减去)一个非负的新变量,即可化为等式,这个新增的非负变量称为松弛变量(或剩余变量)。
原始问题与对偶问题的关系有:
(1)对偶问题的对偶是原始问题;
(2)原始问题和对偶问题的约束不等式的符号方向相反;
(3)无论原始问题是否为凸,对偶问题都是凸优化问题;
(4)对偶问题可以给出原始问题的一个上/下界;
(5)当满足一定条件时,原始问题和对偶问题的解是等价的
对于函数L(x,λ,μ),如果将x固定,那么L就是关于λ,μ的一个函数;如果将λ,μ固定,那么L就是关于x的一个函数,定义原始问题:
;λj≠0,μk≥0
根据x的不同取值范围可得:
(1)当x不满足之前规定的约束条件时,即对于某个j,hj(x)≠0,那么可以通过改变对应的使得L(x,λ,μ)达到+∞;或者对于某个k,gk(x)>0,那么可以改变对应的使得L(x,λ,μ)达到+∞。因此当x不满足某个约束条件时,θP(x)的最大值是+∞。
(2)当x满足在约束条件的范围内时,hj(x)=0,gk(x)≤0,所以此时θP(x)的最大值是f(x)。
因此可以定义一个与原始问题等价的新问题:
原始问题、以及原始问题的最优值为p*表示为:
原始问题的对偶问题就是交换极小和极大的顺序,对偶问题、以及对偶问题的最优值d*表示为:
由弱对偶定理可知,对于任意的x,λ,μ可知,对偶问题的最优解d*小于等于原始问题的最优解p*:
当f(x)和gk(x)是连续可微的凸函数,hj(x)是仿射函数,且不等式约束gk(x)是严格可行的(即存在x对于所有的k都有gk(x)<0);那么x*,λ*,μ*既是原始问题也是对偶问题的最优解的充要条件是:x*,λ*,μ*满足KKT条件。
继续推导线性可分SVM算法
转换为无约束的Lagrange函数:
引入Lagrange乘子后,优化目标函数变为:
将该优化目标转换为等价的对偶问题来求解,从而优化目标函数变为:
对于该优化目标函数,可以先求优化目标函数关于w和b的极小值,然后再求关于Lagrange乘子α的极大值。
由互补松弛定理可知,支持向量满足等式:
KKT条件为:
将求解出来的w和求和式带入优化函数L中,消去w和b后可得:
线性可分SVM算法流程
设m个线性可分的样本数据{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},y→{-1,+1}
构造约束优化问题:
使用SMO算法求出最优解α*;
找出所有的支持向量集合S,支持向量对应的αj>0:
更新参数w*,b*的值,求b*时等号两边同时乘以支持向量的类标签:
可知w*,b*只依赖于αj>0的样本点,即支持向量;其他样本点对w*,b*没有影响。
构建最终的分类器:
线性可分SVM总结
数据线性可分;
由SVM的基本形式写出它的Lagrange函数,并转化为对偶问题;
满足KKT条件→对偶问题和原始问题的最优解相等;
纯线性可分的SVM模型对于异常数据的预测可能不会太准,因此考虑使用核函数或软间隔模型。