SVM目前被认为是最好的现成的分类器,SVM整个原理的推导过程也很是复杂啊,其中涉及到很多概念,如:凸优化问题、拉格朗日乘子法、对偶问题,slater条件、KKT条件还有复杂的SMO算法!相信有很多研究过SVM的小伙伴们为了弄懂它们也是查阅了各种资料,着实费了不少功夫!本文便针对SVM涉及到的这些复杂概念进行总结,希望为大家更好地理解SVM奠定基础。

一、凸集和凸函数

在讲解凸优化问题之前我们先来了解一下凸集和凸函数的概念

凸集:在点集拓扑学与欧几里得空间中,凸集是一个点集,其中每两点之间的直线上的点都落在该点集中。千言万语不如一张图来的明白,请看下图:

凸函数:一个定义在向量空间的凸子集C(区间)上的实值函数f,如果在其定义域C上的任意两点x,y以及t∈[0,1]有:


则该函数为凸函数!凸函数另一个判别方式是:如果一个凸函数是一个二阶可微函数,则它的二阶导数是非负的。上图:

下面引自维基百科:

注意:中国大陆数学界某些机构关于函数凹凸性定义和国外的定义是相反的。Convex Function在某些中国大陆的数学书中指凹函数。Concave Function指凸函数。但在中国大陆涉及经济学的很多书中,凹凸性的提法和其他国家的提法是一致的,也就是和数学教材是反的。举个例子,同济大学高等数学教材对函数的凹凸性定义与本条目相反,本条目的凹凸性是指其上方图是凹集或凸集,而同济大学高等数学教材则是指其下方图是凹集或凸集,两者定义正好相反。 另外,也有些教材会把凸定义为上凸,凹定义为下凸。碰到的时候应该以教材中的那些定义为准。

在机器学习领域大多数是采用上文中所描述的凸函数和凹函数的定义,下文中凸函数的定义也采用上文描述的那种!

二、凸优化问题

凸优化:凸优化是指一种比较特殊的优化,是指求取最小值的目标函数为凸函数的一类优化问题。其中,目标函数为凸函数且定义域为凸集的优化问题称为无约束凸优化问题。而目标函数和不等式约束函数均为凸函数,等式约束函数为仿射函数,并且定义域为凸集的优化问题为约束优化问题。

上面是来自百度百科定义,下面我们对其总结,将其公式化!

凸优化性质: 
1、目的是求取目标函数的最小值; 
2、目标函数和不等式约束函数都是凸函数,定义域是凸集; 
3、若存在等式约束函数,则等式约束函数为仿射函数; 
4、对于凸优化问题具有良好的性质,局部最优解便是全局最优解。

一个凸优化问题用公式描述为:


所以其目标函数f(x)以及不等式约束条件g(x)便是凸函数,而等式约束条件h(x)是仿射函数。

大家可能要问:何为仿射函数!!!

仿射函数:即是deg(h(x))=1的函数,常数项为0的仿射函数称为线性函数。

其中符号 deg() 表示多项式h(x)的次数<将函数看成多项式而已>

三、拉格朗日乘子法

拉格朗日乘子法的作用:求函数f(x1,x2…)在g(x1,x2…)=0的约束条件下的极值。

拉格朗日乘子法的操作过程: 
(1)定义新函数:


(2)利用偏导方式列出以下方程: 

(3)求解出x,y,σ的值带入F(x,y,σ)便是目标函数的极值。

四、对偶问题,slater条件,KKT条件

这里我们来谈一谈SVM中必须需要明白的对偶问题,要说对偶问题,则需要从凸优化问题开始说起。假设我们现在来求解上面的那个凸优化问题的最优解:

观察上面的最优化问题,便是在一定的约束条件下求解函数的极值,我们上面已经说过拉格朗日乘子法啦,所以这里便用到了。

使用拉格朗日乘子法针对上面的最优化问题有:

需要明确:其中α≥0、β任意,均为拉格朗日乘子,i=1,2,…,p且j=1,2,…,q

如果按照我们上面谈到的拉格朗日乘子法的思路,则应该让L(x,α,β)对x以及参数α和β进行求导,然后得出结果带入原始便可求出我们需要的最优解。

但需要注意两点: 
(1)这里参数α和β总共p+q个,如果全部求偏导工作量太大,不现实; 
(2)并且大家有没有想过,这个问题可能根本就没有最优解这种情况存在。

针对上面情况,我们便引出了换一种思路,那就是利用对偶问题,也就是将原问题转化成其对偶问题进行求解。

下面和大家先说一下对偶问题的基本思想,然后我们再继续从上面的问题出发,推导其对偶问题,进行求解。

对偶问题的性质:无论原命题的形式如何,对偶问题都是一个凸优化问题,还记得凸优化问题的好处吧,那就是局部最优解就是全局最优解,并且容易求解,所以我们将问题转化为其对偶问题就简化了问题的求解思路。

上面我们利用拉格朗日乘子法得到了如下式子:

现在我们自定义一个函数如下:

分析上面的自定义函数有:


对上面的式子进行分析: 
(1)式说明,当目标函数的约束条件都满足时,则自定义的函数便是上面需要求解的 目标函数f(x)  ,(2)则是只要目标函数的约束条件只有一个不满足,则自定义的函数便等于无穷大!

所以我们便可以认为自定义的函数θ(x) 是对原理优化问题中的约束条件进行了吸收,是原来的约束优化问题变为无约束优化问题(相对于原来变量x 无约束了),即我们可以将最初的优化问题写成:


上式便是我们需要优化的  原问题  
原问题的  对偶问题  便是: 

下面我们假设假命题为P,对偶问题为Q!当然对偶问题已经不等价于原问题了,但是二者是存在一定联系的,下面我们来讲解二者的联系,以及如何通过求解对偶问题来得到原问题的最优解!

这里我们令:


所以有: P<=Q 
解释:大家想一下,函数L中最大值中最小的一个总比最小值中最大的那一个要大,也就是对偶问题提供了原问题最优值的一个下界。

但是大家想,我们是想通过对偶问题求解原问题的最优解,所以只有当二者相等时即P=Q,才可能将原问题转化成对偶问题进行求解。当然,当满足一定条件的情况下,便有P=Q。而这个条件便是 slater条件和KTT条件。

slater条件:

slater条件官方正规定义:存在x,使得不等式约束g(x)<=0严格成立。 
slater条件性质: slater条件是原问题P可以等价于对偶问题Q的一个充分条件,该条件确保了鞍点的存在。

KKT条件:

大家已经知道slater条件已经确保了鞍点的存在,但是鞍点不一定就是最优解啊,所以KKT条件的作用便体现出来了。 
KKT条件便是确保鞍点便是原函数最优解的充分条件,当然对于我们前面举得那个例子,当原问题是凸优化问题时,则KKT条件便是鞍点便是最优解的充要条件。

KKT条件描述为一下三个条件:

1、

2、

3、

解释:第一个约束条件表明:最优点x必须满足所有等式及不等式限制条件, 也就是说最优点必须是一个可行解, 这一点自然是毋庸置疑的; 
第二个约束条件表明:在最优点x, ∇f必须是∇gi和∇hj的线性組合; 
第三个约束条件表明:拉格朗日乘子不等式的一些限制,对于不等式的拉格朗日乘子限制条件有方向性, 所以每一个α都必须大于或等于零, 而等式限制条件没有方向性,只是β不等于0。

这样对于slater条件和KKT条件都十分清楚了吧,并且也知道了他们的作用!这样我们最初的求解凸优化问题便转化为求解其对偶问题。当前我们的优化目标便是:

因此我们先让L函数对x求导然后最小化,得出一个优化函数,然后在让这个优化函数对α,β求导,求出参数α,β!这样再待会原问题中,便可得到最优解,而下面我们要将的 SMO算法(序列最小化算法),正是用于求解参数α,β的!关于SMO算法数学推导十分复杂,我将在后继博客中对于详细阐述其数学推导过程!!!

文中如有什么问题,欢迎大家提问和指正!

支持向量机(SVM)必备知识(KKT、slater、对偶)相关推荐

  1. 支持向量机SVM(一)原始函数与对偶函数

    此篇文章对支持向量机推导过程进行详解,仅作为本人纪录一遍对SVM的复习过程. 所有公式已做手动推导,为了美观(字丑),将选择贴出周老先生西瓜书的一些结论和李航统计机器学习和南瓜书推导过程. 该系列其他 ...

  2. 【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      强烈推荐阅读(http://www.cnblogs.com/jerrylead/archiv ...

  3. svm多分类_人工智能科普|机器学习重点知识——支持向量机SVM

    作为模式识别或者机器学习的爱好者,同学们一定听说过支持向量机这个概念,这可是一个,在机器学习中避不开的重要问题. 其实关于这个知识点,有一则很通俗有趣的传说: 很久以前,一个村庄里住着一位退隐的大侠, ...

  4. 最小二乘法支持向量机一般用在什么场合_人工智能科普|机器学习重点知识——支持向量机SVM...

    作为模式识别或者机器学习的爱好者,同学们一定听说过支持向量机这个概念,这可是一个,在机器学习中避不开的重要问题. 其实关于这个知识点,有一则很通俗有趣的传说: 很久以前,一个村庄里住着一位退隐的大侠, ...

  5. 支持向量机(SVM)基本原理

    SVM 看了很多关于SVM的博客,但是常常只能保存书签之后看,有时候有的博客就突然没了,这里就作为搬运工总结一下之后自己看吧.主要内容来自于: 支持向量机通俗导论(理解SVM的三层境界) 分类标准的起 ...

  6. 支持向量机SVM(Support Vector Machine)是一个有监督的学习模型

    前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清 ...

  7. 使用支持向量机进行光学字符识别_从零推导支持向量机 (SVM)

    雷锋网 AI 科技评论按,本文作者张皓,目前为南京大学计算机系机器学习与数据挖掘所(LAMDA)硕士生,研究方向为计算机视觉和机器学习,特别是视觉识别和深度学习. 个人主页:http://lamda. ...

  8. 机器学习算法之支持向量机 SVM

    距离知识 点到直线/平面的距离公式: 1.假定点p(x0,y0),平面方程为f(x,y)=Ax+By+C,那么点p到平面f(x)的距离为: 2.从三维空间扩展到多维空间中,如果存在一个超平面f(X)= ...

  9. python机器学习案例系列教程——支持向量机SVM、核函数

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 线性函数.线性回归.线性分类 参考:http://blog.csdn.net/luanpeng825485697/article/de ...

最新文章

  1. matlab rank函数报错,Matlab signrank函数(Wilcoxon signed rank test)中的矛盾结果[重复]
  2. 某程序员求助:因考虑不周,签字确认后又拒了虾皮offer,被hr告知进入黑名单,永不录用!以后还能进虾皮吗?...
  3. Java8 HashMap源码分析
  4. tableView的单选问题
  5. Windbg调试内核驱动方法
  6. 自学编程需要注意什么?
  7. Java Number Math 类
  8. windows2008配置来
  9. Spark高级操作之json复杂和嵌套数据结构的操作
  10. ansible安装和基本使用
  11. 自制计算器(C语言的简单实现)(可多次使用)
  12. 云计算平台是什么意思?可以划分为哪三类?
  13. IDEA 炫酷编辑器主题大全,真的好看
  14. 超漂亮的前台页面模板——html+css+js+框架
  15. 塔顶分凝器全凝器区别_(单选)在相同的回流比和塔顶蒸汽组成下,采用分凝器+全凝器的二元连续精馏塔与仅采用全凝器的塔相比,()...
  16. ROS机器人操作系统教学与应用的思考
  17. 关于form 上传文件时的小问题
  18. 程序员的专属吐槽会,你能听懂几个梗?
  19. 如何利用 SOTER ,1 个版本内完成指纹支付开发?
  20. h5使用script type=“text/html“构建模板,动态改变模板内容

热门文章

  1. Python traceback 模块, 打印异常信息
  2. 对于高并发短连接造成Cannot assign requested address解决方法
  3. gitlab自带的Nginx与原Nginx冲突的解决方案
  4. Mac上Chrome浏览器跨域解决方案
  5. Bugzilla使用手册及解决方案
  6. Hibernate:hbm2ddl.auto =在生产中更新?
  7. Visual Studio代码中的多个游标[关闭]
  8. 对于数组,为什么会出现a [5] == 5 [a]?
  9. FCC 成都社区·前端周刊 第 6 期
  10. 将二叉搜索树转换为有序的双向链表