接上文SVM算法相关推导[一]
最大间隔分类器是一种在约束下求最大化的问题,对于这种问题用拉格朗日乘子法和KKT条件可以变化为求其相对简单的对欧问题。(传说中的SMO?)
对于拉个朗日乘子法和KKT条件的理解,优快云的博主lijil168介绍的不错。
https://blog.youkuaiyun.com/lijil168/article/details/69395023
lysuns的博客
http://www.cnblogs.com/lysuns/p/4626378.html
这里简要介绍
1.拉格朗日乘子法
假设有函数f, 在一堆约束h_i(w)=0的情况下求解f的最小值的情况下可以得到新的目标函数是原优化目标和约束的线性和
原问题
有一堆的函数 h_i(w)=0
这个公式求解可以用消元法或者拉格朗日法。消元法就是根据h_i(w)=0得到w的一个值带入原公式,再来求解。
亦可以用拉个朗日法:
那么拉格朗日乘子法定义的新目标函数为
求解的过程对w,b,beta的每一个元素针对上式求偏导, 并置为0这样就可以得到极值点
设
加入增加不等式约束, 比如g(w)<=0,
拉格朗日乘法可以扩展为
定义最大化函数,即求使L最大化的alpha, beta值:
我们会发现
和原始定义
等价
原因是这样的:
考虑优化问题
看这个Theta函数的定义知道(为啥?)
就得到了
2.对偶问题
对偶问题有个结论
对于我们的拉格朗日乘子,设对偶问题
解
根据max min的对偶性质有
3.KKT条件
摘自wiki, 在数学最优化理论里,KKT条件(Karush–Kuhn–Tucker conditions)是在满足一些有规则的条件下,一个非线性规划(Nonlinear Programming)问题能有最优化解法的一个必要和充分条件。这是一个广义化拉格朗日乘数的成果。
它有四个条件stationarity(平稳性),complementary slackness(补充松弛),primal feasibility(主约束),dual feasibility(对偶约束)。
Stationarity(平稳性):
对于最大化 f(x):
对于最小化f(x)
Primal feasibility(主约束)
Dual feasibility(对偶约束)
Complementary slackness(补充松弛)
4.SVM求解
在SVM算法的求解方法是先写出原始问题,然后写出对偶问题,然后求解对偶问题
需要
要满足的限制为KKT 条件
由这三个KKT条件显然可得
所一可以说 g(w)是活动约束(active constraint)
第一步,写出原始问题
考虑我们SVM的优化目标
只有不等式约束,没有等式约束。因此只有 alpha和g函数
约束改为g<=0的方式
将w,b都作为优化参数
可以知道
有根据KKT有
意味着如果 不为0 则 g=0 即
回忆我们定义的函数间隔
显然x,y的函数间隔为1
其他情况则必有
这里函数间隔为1的向量都是支持向量
现在我们的优化目标已经满足KKT条件,写出KKT乘子,其实是拉格朗日乘子的不等式约束的扩展
第二步,写出对偶问题
根据拉格朗日乘子定义,我们要求的原始问题是
就是等价与
对偶问题
最后要求的是
对Theta函数,我们令L对w导数为0来求出最小值
所以
我们令对b导数为0来求出最小值
将w带入L函数内,可以得到
展开各给子式
又有
带入L式子可以得到
回忆之前我们定义的对偶问题
如果
那么
所以对于问题
如果
那么
所以SVM的对偶问题实际上是求
求解这个问题得到 alpha, 然后又之前导数为0我们得到w
我们就可以得到b,两根支持线的中值
这样可以得到完整的预测函数
现在我们看下
如果特征维度很高,那么
技术很耗时,可以通过核函数
来高效计算