前言
最近看了Andrew Ng的机器学习视频中的支持向量机,视频的内容比较浅显,没有深入解释支持向量机中的数学原理。但是对于一个比较执着于知道为什么的人,笔者还是去网上查找了有关支持向量机原理以及实现的相关资料。在查找的过程中,笔者发现支持向量机的内容还是蛮多的,于是笔者根据自己的理解,并且参考了一些相关资料,最终写下了支持向量机的四篇博客。
机器学习:支持向量机(SVM)与Python实现第(一)篇——此篇主要介绍了分类间隔,引入SVM。
机器学习:支持向量机(SVM)与Python实现第(二)篇——此篇主要介绍了使用拉格朗日乘子来简化SVM问题的优化。
机器学习:支持向量机(SVM)与Python实现第(三)篇——此篇主要介绍非线性分类(核函数)以及松弛变量。
机器学习:支持向量机(SVM)与Python实现第(四)篇——此篇主要介绍SMO算法并用python实现了简单的SVM分类器。
上一节经过我们的推导,最终把问题变成:
minγ,w,b 12∥w∥2s.t. y(i)(wTx(i)+b)≥1, i=1,...,m
接下来我们就要来看看如何来高效解决这个问题。
拉格朗日对偶性
首先我们先暂时放下SVM和最大间隔分类器,而来谈谈如何解决含有限制的优化问题。这种问题的一般形式是:
minw f(w)s.t. hi(w)=0, i=1,...,l
对于这种问题,一般我们使用拉格朗日乘子( 对拉格朗日乘子的理解请参考)来解决,即我们定义:
L(w,β)=f(w)+∑i=1lβihi(w)
其中,
βi
叫做拉格朗日乘子。
接下来我们对 L(w,β) 求偏导,并且令偏导数为0:
∂L∂wi=0; ∂L∂βi=0
这样就可以求解出w和
β
了。
上面列举的限制条件是等式的情况,有时候限制条件是不等式。考虑下面的原始优化问题:
minw f(w)s.t. gi(w)≤0, i=1,...,khi(w)=0, i=1,...,l (1)
为了求解出这个问题,我们可以定义下面的泛化拉格朗日函数:
L(w,α,β)=f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)
其中,
α和β
叫做拉格朗日乘子。
接下来详细推导一下KKT条件:
hi(w)=0⇒L(w,α,β)=f(w)+∑i=1kαigi(w)∵ αi≥0gi(w)≤0}⇒∑i=1kαigi(w)≤0∴ maxα L(w,α,β)=f(w) (2)∴ minw f(w)=minw