机器学习教程 之 支持向量机:模型篇2–支持向量的拉格朗日对偶
支持向量机是机器学习领域里最强的几种分类器之一,被广泛的运用于各种分类回归问题,如果不考虑集成学习算法以及近几年出现的深度学习算法,支持向量机的性能可以说是在学习领域具有统治地位,在一些中小型的数据集上它的性能甚至能够超过一些深度学习网络。其基本原理相当简单,但是模型的求解和优化却十分复杂,很难描述清楚,这里我会一步一步,尽我所能分章节的将它总结完善
模型篇
· 支持向量机:模型篇1–支持向量与间隔
· 支持向量机:模型篇2–支持向量的拉格朗日对偶
· 支持向量机:模型篇3–对偶问题的求解: SMO算法
· 支持向量机:模型篇4–核函数与非线性优化
· 支持向量机:模型篇5–向量机的软间隔拓展
代码篇
· 支持向量机:代码篇1-基于CVXPT优化函数求解
· 支持向量机:代码篇2-基于SMO算法求解
支持向量的拉格朗日对偶
在模型篇1中,我们给出了支持向量机最朴素的模型,现在将它重新写出如下:
当写出这个模型以后,我们可以发现这个目标函数是一个二次的,约束条件是线性的,所以它是一个凸的二次规划问题。对于这个问题,有很多的二次规划函数包可以解决,但是对于这个问题的求解我们往往是通过求解它的拉格朗日对偶问题来获得最优解,主要原因有以下两点
· 对偶问题可以得到更高效的求解
· 对偶问题可以方便的引入核函数,从而可以将支持向量机由线性推广到非线性
在开始模型的对偶转化之前,读者们需要了解什么是拉格朗日对偶,请花费10分钟了解我的另一篇博文之后再接着往下学习
人工智能里的数学修炼 | 约束问题的优化求解:拉格朗日乘子法、KKT条件与对偶问题
在了解了上面这篇博文之后,我们只需要根据文章里的套路来就可以了
首先将原模型通过拉格朗日乘子法,添加算子
再写出该模型的极小极大形式
这里的
很容易理解的,我们有
现在我们的目的很明确,就是通过求解对偶问题的极大值来求得原问题的极小值,但是
本文在最后会给出该问题具体的KKT形式,现在,先让我们尝试将对偶问题转化为更易求解的形式
(1)首先固定住
(2) 将求导结果待回对偶式
关于这一公式的具体推导过程是相当复杂的,如下图所示:
最后,就可以得到
(3)经过带入化简之后,得到的式子里已经没有了
(4) 最后,我们可以给出我们化简后的对偶优化目标以及它的相关约束
上式应该满足KKT条件的约束,KKT条件为
这样,我们就完成了从支持向量机的原始模型到对偶模型以及对偶模型化简的全部推导。这里要提及一个点是,从上述的KKT条件中,我们可以看出,对于任意的一个样本
拉格朗日对偶的重要意义在于将对