最近在看oneclasssvm突然想到原来的svm还没洗完,打开西瓜书补充一下。
漫漫成长:拉格朗日乘子法与KKT条件详解zhuanlan.zhihu.com关于拉格朗日的详细例子可以看第二个链接。
关于拉格朗日和kkt条件可见上,很好的把拉格朗日和kkt与梯度下降法联系到一起方便理解,一般梯度下降法处理没有约束的优化问题,这也是大部分常见有监督机器学习算法使用的优化方法,无脑梯度下降呗,nn再配点启发式的改造。
如果有等式约束就用拉格朗日转化成无约束问题求解。
如果有不等式约束就拉格朗日+kkt然后想办法求解(我反正只知道svm的smo可以快速求解这个问题,要不然就用二次规划算法求)
from 西瓜书:
形式上svm和线性回归类似:
我们最终训练出来的svm的形式就是W*X+b,预测的时候把样本带入计算出W*X+b然后和正负1比较,大于1则属于样本1,小于-1则属于样本-1,否则就是落于间隔中无法判断。
直观来看:
两直线(或者超平面)的间隔为:
具体可参考高中数学公式,两直线的距离的计算公式推广到超平面也是一样的形式。这个间隔称为margin。我们的目的是找到最大margin的超平面对应的公式:
直观上这样最鲁棒,间隔最大最不容易对未知的样本错分。
然后我们把这个实际问题用数学公式抽象出来:
然后统一成最小化的形式:
这里W右上角多了个平方对最重要优化的结果没有影响,是为了后面的计算方便而加上的,这里改成次方,4次方。。。之类的都没有影响,因为||W||本身就是一个正数。
这样我们就得到了SVM的基本形。
针对这种形式我们没有办法直接使用梯度下降法,最优化式子里面x都没有。。。x出现在约束项里何从下手。这个时候拉格朗日乘子法就派上用场了。
使用拉格朗日乘子法将上面的公式转化为其所谓的对偶问题的形式:
将6.9带入原式可得:
这样就得到了原始问题的对偶问题形式了,我们只要求解出
注意到原始的问题的约束条件不是等式约束而是不等式约束,所以这里要引入kkt条件:
力学渣:浅谈最优化问题的KKT条件zhuanlan.zhihu.com