【机器学习-西瓜书】六、支持向量机(SVM):最大间隔;对偶问题;KKT条件

来源:互联网 发布:java助理工程师要求 编辑:程序博客网 时间:2024/05/17 01:34

推荐阅读:对偶问题,KKT条件

关键词:最大间隔;支持向量;对偶问题;KKT条件;SMO算法

6.1 间隔与支持向量

关键词:最大间隔;支持向量
支持向量机(Support Vector Machine,SVM)是常见的二分类器,与逻辑回归不同,SVM 寻找的是使得间隔最大的那一个超平面作为分类器。间隔是什么意思?就是两个异类支持向量(Support Vector)到超平面的距离之和。什么是支持向量呢?就是距离超平面最近的那几个训练样本。如下图,圈出来的那三个样本就是支持向量。 间隔就是两条虚线的距离。这里写图片描述

超平面可用线性方程:wTx+b 来表示,如图中红色的线,w即超平面的法向量,空间中任意一点x到超平面的距离为r=wTx+bw ,两个异类支持向量到超平面的距离之和为:r=2w
那么我们的目标方程是什么呢?我们的目标就是最大化间隔r=2w ,并且还要分类正确,假设正样本标签为yi=+1,负样本标签为yi=1 ,那么我们的目标方程如下: 这里写图片描述
等价于:
这里写图片描述
这个公式就称之为 支持向量机的基本型

6.2 对偶问题

关键词:对偶问题;KKT条件;SMO算法

SVM的基本型是一个凸二次规划(convex quadratic programming)问题,可直接求解,但是可以使用拉格朗日乘子法可得到其“对偶问题”(dual problem),对偶问题更方便于求解,其形式如下:
这里写图片描述
怎么使用拉格朗日乘子法将原问题转换到其对偶问题的呢? 首先,对原问题的约束(也就是对每个训练样本所产生的约束)添加拉格朗日乘子 αi0,则原问题的拉格朗日函数可写为:
L(w,b,α)=12w2+mi=1αi(1yi(wTx+b))
再对w和b分别求偏导,再置0可得: Lw=wmi=1αiyixi=0w=mi=1αiyixi
Lb=mi=1αiyi=0mi=1αiyi=0
,将这两个式子带入L(w,b,α)=12w2+mi=1αi(1yi(wTx+b)), 即可得到:
这里写图片描述

关键词:KKT条件。
KKT(Karush-Kuhn-Tucker)条件是一种方法,什么方法呢?就是处理含有不等式约束的优化问题的方法。对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式约束,可以应用KKT条件去求取。
对于含有不等式约束的优化问题, 把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a, b, x)= f(x) + a*g(x)+b*h(x)。其中,h(x)为等式约束,g(x)为不等数约束,KKT条件是说最优值必须满足以下条件:
1. L(a, b, x)对x求导为零;
2. h(x) =0;
3. a*g(x) = 0;
求取这三个等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。
(根据自己思路总结一下,仅做参考。求解SVM基本型不太方便,于是乎求解其对偶问题,对偶问题是一个不等式约束问题,求不等式约束问题采用KKT条件,KKT条件中有一个条件很有意思,就是 a*g(x)=0,要么拉格朗日乘子为0,要么g(x)=0,g(x)=0,表示样本是支持向量,也就是只有支持向量才使得g(x)=0,而a=0的样本就不需要了)
解这个对偶问题的一个著名方法是SMO算法
推荐博客,理解拉格朗日乘子法和KKT条件(http://blog.csdn.net/xianlingmao/article/details/7919597)

阅读全文
0 0