支持向量机是机器学习领域里最强的几种分类器之一,被广泛的运用于各种分类回归问题,如果不考虑集成学习算法以及近几年出现的深度学习算法,支持向量机的性能可以说是在学习领域具有统治地位,在一些中小型的数据集上它的性能甚至能够超过一些深度学习网络。其基本原理相当简单,但是模型的求解和优化却十分复杂,很难描述清楚,这里我会一步一步,尽我所能分章节的将它总结完善
##模型篇
· 支持向量机:模型篇1–支持向量与间隔
· 支持向量机:模型篇2–支持向量的拉格朗日对偶
· 支持向量机:模型篇3–对偶问题的求解: SMO算法
· 支持向量机:模型篇4–核函数与非线性优化
· 支持向量机:模型篇5–向量机的软间隔拓展
##代码篇
· 支持向量机:代码篇1-基于CVXPT优化函数求解
· 支持向量机:代码篇2-基于SMO算法求解
支持向量的拉格朗日对偶
在模型篇1中,我们给出了支持向量机最朴素的模型,现在将它重新写出如下:
当写出这个模型以后,我们可以发现这个目标函数是一个二次的,约束条件是线性的,所以它是一个凸的二次规划问题。对于这个问题,有很多的二次规划函数包可以解决,但是对于这个问题的求解我们往往是通过求解它的拉格朗日对偶问题来获得最优解,主要原因有以下两点
· 对偶问题可以得到更高效的求解
· 对偶问题可以方便的引入核函数,从而可以将支持向量机由线性推广到非线性
在开始模型的对偶转化之前,读者们需要了解什么是拉格朗日对偶,请花费10分钟了解我的另一篇博文之后再接着往下学习
人工智能里的数学修炼 | 约束问题的优化求解:拉格朗日乘子法、KKT条件与对偶问题
在了解了上面这篇博文之后,我们只需要根据文章里的套路来就可以了
首先将原模型通过拉格朗日乘子法,添加算子
a
i
>
0
a_{i}>0
ai>0记为
再写出该模型的极小极大形式
这里的 p ∗ p^{*} p∗ 表示的是这个问题的最优值,它与最初的问题是等价的。现在,我们将式子中的最小和最大的位置换一下,得到对偶问题
很容易理解的,我们有 p ∗ ⩾ d ∗ p^{*} \geqslant d^{*} p∗⩾d∗ ,即极大值的极小值大于极小值的极大值,这在上面那篇博文中有严格证明
现在我们的目的很明确,就是 通过求解对偶问题的极大值来求得原问题的极小值,但是 p ∗ ⩾ d ∗ p^{*} \geqslant d^{*} p∗⩾d∗ , 即对偶的极大值和原问题的极小值不一定相等,是大于等于的关系,那么什么时候取到相等关系呢?显然的,那就是当原问题为凸优化问题并且满足KKT条件的时候!
本文在最后会给出该问题具体的KKT形式,现在,先让我们尝试将对偶问题转化为更易求解的形式
(1)首先固定住 a a a 分别对 w , b w,b w,b 求偏导,并令导数为0
(2) 将求导结果待回对偶式 L L L ,可以得
关于这一公式的具体推导过程是相当复杂的,如下图所示:
最后,就可以得到
(3)经过带入化简之后,得到的式子里已经没有了
w
,
b
w,b
w,b ,现在的问题是变化
a
i
a_{i}
ai 以求式子的极大值。在我们求解出
a
i
a_{i}
ai 后是可以通过上面求导的式子重新解出
w
,
b
w,b
w,b 得到我们需要的超平面
f
(
x
)
f(x)
f(x),即
(4) 最后,我们可以给出我们化简后的对偶优化目标以及它的相关约束
上式应该满足KKT条件的约束,KKT条件为
这样,我们就完成了从支持向量机的原始模型到对偶模型以及对偶模型化简的全部推导。这里要提及一个点是,从上述的KKT条件中,我们可以看出,对于任意的一个样本 ( x i , y i ) (x_{i},y_{i}) (xi,yi) ,总有 a i = 0 a_{i} = 0 ai=0 或 y i f ( x i ) = 1 y_{i}f(x_{i}) = 1 yif(xi)=1。即, 若 a i = 0 a_{i} = 0 ai=0,则该样本不会出现在超平面 $f(x) $ 的参数 w w w 的计算中,不会对超平面的计算产生任何影响;若 a i > 0 a_{i} > 0 ai>0 ,则必有 y i f ( x i ) = 1 y_{i}f(x_{i}) = 1 yif(xi)=1,所以该样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个充要性质: 训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关
拉格朗日对偶的重要意义在于将对 w w w 的计算提前并消除了 w w w ,将优化函数变为了关于拉格朗日乘子的二次规划问题。关于对偶优化目标的求解我们将会在下一篇博文中给出解答
更多资源下载
微信搜索“老和山算法指南”获取更多下载链接与技术交流群
有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。