创作目的
我是机器学习初学者,目前正在上机器学习课,老师的SVM部分讲解的非常细致,我收获颇丰于是想自己记录一下SVM的详细内容以及推导过程方便自己以后复习。这一节主要针对拉格朗日乘子法以及其KKT条件还有强对偶、弱对偶问题进行总结和推导,希望在这一块有疑问的同学可以一起交流学习。萌新第一次写博客,很多地方表述不足希望大家指出。
1.SVM回顾
支持向量机(SVM)是目前最好的有监督分类方法之一,SVM分类器的基本型的推导很多书以及网上都有这里就不再介绍了,如果有时间以后可以补上。知乎上我找到一位作者总结的很到位感兴趣的读者可以去看看:支持向量机基本概念
SVM基本型基于两类最大化间隔的思想等价于下面这个优化问题:
(1) 式本身就是一个凸二次规划问题,凸函数以及凸二次规划的定义可以见链接:
凸二次规划问题可以直接用现成的优化计算包求解但这样计算较复杂,所以我们引入朗格朗日乘子法对其"对偶问题"进行更高效的求解。(1)的对偶问题为:
上式必须要满足KKT条件:
将KKT条件最后两项代入约束目标,这样原问题(1)就转换成了只有α的二次规划问题,一般采用SMO算法可以很快求解出近似解,SMO算法我将在下一次详细总结。
身边很多同学刚开始学SVM到这的时候就开始“黑人问号.jpg”了。什么是拉格朗日乘子?什么是对偶问题?为什么求min就转变成求max min了?KKT条件又是什么鬼?下面我一一进行解答。
2.拉格朗日乘子法
拉格朗日乘子法最开始是只针对等式约束优化问题提出的。对于一个等式约束优化问题:
引入一个自变量α,α可以取任意值,则(2)严格等价于:
现在来证明一下,我们把(3)式分满足(2)的约束条件和不满足两种情况讨论,即h(x)=0和h(x)≠0:
(4)与(3)等价,同时对于(4)由于α可以取任意值,当h(x)≠0时,αh(x)可以无限大,那么取最小值时永远不可能取到h(x)≠0的情况。那么(3)就严格等价于h(x)=0的情况,也就是(2)了,证毕。
但是SVM算法基本型是一个不等式约束优化,同样对于一个不等式约束:
它等价于(6),这里α加上了约束,不再可以取任意数而是取大于等于0的数: