支持向量机(一)----总述(点到平面的距离,Lagrange函数,Lagrange对偶)
概述:在对支持向量机的学习和使用过程中,遇到了许许多多的问题,通过查阅各种资料,也是逐一攻克了遇到的问题。感悟颇多,写此博文的目的是想以一个学习者的身份从一个刚接触支持向量机的角度去记录模型推到过程中的种种困惑以及理解过程,以帮助更多人的更省时的了解和学习支持向量机;
本文主要记录和解决的问题:
说明:每个问题所标的星级表示此问题的理解对后边推导过程的影响程度,也就是说理解不到位会使得自己越看越糊涂(仅供参考)
1.我自己学习和推到支持向量机的过程路线
2.三维空间中点到直线的距离的计算,以及分离超平面的方程(5颗星)
3.Lagrange乘子法的原理(5颗星)
4.对偶算法原理(5颗星)
下边就上述的每一个问题进行整理
1. 下图是我对支持向量机的整个知识体系所涉及到的相应的知识的一个整理,图中同时也描述了各支持向量机之间的关系。

2. 三维空间中点到直线的距离的计算
2.1 点到平面的距离

2.2 分离超平面方程

3. Lagrange乘子法原理
Lagrange乘子法的作用主要是用来解决条件极值问题的一种方法;
条件极值的概念:对自变量除定义域限制外,还有其他条件限制。举例:例如求f(x,y)在条件g(x,y)= 0下的条件极值,称f(x,y)为目标函数,方程g(x,y)=0为约束条件,变量x,y为决策变量;
如下图所示,假设g(x,y)=0的图像如下图所示,f(x,y)的等高线沿着x方向增大,有图示做直观分析,由A点到B点f(x,y)的值逐渐减小,由B点到C点f(x,y)的值逐渐增大。很显然在B点时f(x,y)取得了最小值,分析一下B点处g(x,y)=0所表示的曲线和f(x,y)等高线的关系。在B点处g(x,y)=0所表示的曲线和f(x,y)在B处的等高线必然是相切的。为了理解这样相切的关系,我们可以假设一只蚂蚁正在验证g(x,y)=0所表示的曲线的A处爬向C处,假如在B点f(x,y)的等高线穿过了B点,则到B点时蚂蚁还未爬到白色曲线的最底端,也就说明继续往底部爬最能找到别的等高线与曲线最低点相切。既然相切,那说明在B出等高线和g(x,y)所表示的曲线有公共切线,所以如下图f(x,y)在B点(假设B点的左边为(x0,y0))的法向量nf 和g(x,y)=0在B处的法向量共线(方向可能相同也可能不同),而曲线在B点处的梯度向量即为法向量,由此就可知他们的梯度向量共线。由此便可得到如下方程:

透过求解上述方程组,我们就可以求解出条件极值问题的极值点
,下边我们构造一个与上述问题等价的函数

其在
取得极值的条件为
,和上述(1)(2)(3)完全等价,经过上述的构造和处理,就将一个条件极值问题转化成了一般极值问题

4. 对偶算法原理
4.0 概述
为什么要引入对偶算法?
可以这样理解,我们要求解一个问题,比如说要求解一个函数的极值,假如这个问题自身简单并且容易求解,我们就直接求解便可,可是现在我们遇到了一个无法直接求解或者直接求解会非常麻烦,我们就有采用变换形式,构造等一系列的手段使得我们要求解的问题变得简单并且易于求解。而对偶算法就是我们面对一个比较复杂并且难以求解的问题时的一种解决该问题的方法或者说手段,具体思路概述如下图:现我们要求解4.1中的条件极值问题,我们构造出4.2中的Lagrange函数将条件极值问题转换成为非条件极值问题,观察形式以后我们还是觉得求解复杂,这边有了4.3中的对偶函数,我们可以通过求解对偶函数来得到原问题的解。这便是我们求解问题的一种思路。这样我们总会将一个复杂问题逐渐简化直到能够求解。具体介绍见入下各段落。
4.1 初始问题
标准形式的优化问题,数学表达如下:

上述问题中的
中自变量
,而其定义域D为满足m个不等式约束和p个等式约束的x构成的集合的交集,并且假设此优化问题的最优值为 
4.2 将初始问题转化成为Lagrange函数求极值
上式就是求解在满足条件
和条件
时的
的极小值,注意上式与问题3的不同点,约束条件既有等式约束,也有不等式约束,并且数量并不唯一。在问题3的描述中我们已经知道我们可以将条件极值问题等价的转换成为一个Lagrange函数求极值的问题。那么对于上述优化问题的求解我们同样可以构建出如下的拉格朗日函数求极值的问题

注意这里的不等式约束有m个,等式约束有p个,
为第i个不等式约束对应的Lagrange乘子为第i个等式约束对应的Lagrange乘子;
4.3 引入Lagrange函数的对偶函数
现在我们的目标就是求解
函数的极值点
,近而就可以求出上述问题的极小值
(前提为上述问题存在极小值),如果我们徒手计算的话,显然通过求导我们要列出一个含有居多方程的方程组,而我们也知道利用梯度下降法让计算机帮助我们求导,可是梯度下降法也是有局限性的,对于没有条件限制的极值问题,它不失为一种好的办法。
有一种解决办法它的思想是这样的:假如我们能够找到一个函数,这个函数如果满足其极大值是我们要求解的目标函数的极小值(并且这个函数的极大值求解起来比我们求解原问题更方便快捷)我们的问题就得解了,这便引入了Lagrange函数的对偶函数,即为Lagrange函数关于x取得的最小值,即对有:

对于上述4.2中的Lagrange函数如果其关于x无极小值(即无下确界),则上述对偶函数的取值就为。这里我们假设我们的Lagrange函数关于x存在极小值点(即下确界);回顾一下我们的初衷,我们是为了方便求解Lagrange函数的极小值而引入Lagrange对偶函数并通过求解Larange对偶函数的极大值来得到Lagrange函数的极小值的。那我们就必须对Lagrange对偶函数即
做限制使得
的极大值正好是Lagrange函数的极小值;要使得
恒成立,就需
,为什么呢?我们由4.1中优化问题定义式知
,
,故若
,
的后两项之和必然小于等于0,所以此时
是恒成立的。而等号成立的条件为
后两项之和正好为0,即
;
对的补充说明:这里我们可能要提问,我们并不需要每一个lambda都大于零啊,我们只需要保证
整体小于0就可,也就是说在众多的lambda中我们可以允许有一部分lambda是大于0,显然这样想并没有错,而在这里我们要求每一个,只是做了更为严格的要求,并不会对我们原问题的结果产生影响。
4.4 对偶函数的解与初始问题的解完全等价的条件(即KKT条件)
再次回顾我们求解4.1中初始问题的思路:如下图所示我们是在通过不断的转化将一个原本求解复杂的问题逐步转换成为一个相对容易求解的问题,在这个过程中我们考虑满足什么样的条件才能使得最终Lagrange对偶函数的极大值即为我们原问题的极小值

设对偶函数取得极大值的点为(λ*,ν*),设原问题(4.1)取得极小值的点为(x*,f0(x*))

上述式(1)等号成立的条件为:4.2中的Lagrange函数对关于x求偏导方程为0的解为x*,即:

上述式(2)等号成立的条件为:

我们在4.3中已经得出结论,故式4成立等价于下述式5:

综上所述,要使得原问题的极小值(最优值)恰好是对偶函数的极大值则需满足下述条件即KKT条件:

支持向量机(一)----总述(点到平面的距离,Lagrange函数,Lagrange对偶)的更多相关文章
- hdu 1174:爆头(计算几何,三维叉积求点到线的距离)
爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- Java的多线程机制系列:(一)总述及基础概念
前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...
- POJ1584 判断多边形是否为凸多边形,并判断点到直线的距离
求点到直线的距离: double dis(point p1,point p2){ if(fabs(p1.x-p2.x)<exp)//相等的 { return fabs(p2.x-pe ...
- ArcGIS 点到直线的距离
/****点到直线的距离*** * 过点(x1,y1)和点(x2,y2)的直线方程为:KX -Y + (x2y1 - x1y2)/(x2-x1) = 0 * 设直线斜率为K = (y2-y1)/(x2 ...
- csuoj 1503: 点到圆弧的距离
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 1503: 点到圆弧的距离 时间限制: 1 Sec 内存限制: 128 MB Speci ...
- 三国杀3v3心法——总述篇
昔日,独孤求败前辈精研剑法,将其中奥妙化为独孤九剑,破尽天下武功.其中开篇总诀式提纲挈领,从宏观的层面阐述剑道,是领悟后面八式的基石,而之后各式则深入微观,可各破一类具体的武功.笔者亦曾苦心研究三国杀 ...
- Web应用程序系统的多用户权限控制设计及实现-总述【1】
中大型的Web系统开发均需要权限的配置,基于多角色,多用户的操作权限管理是一个系统开发的基础.搭建好一套权限,用户,角色,页面一体的开发架构,可以用于后期业务的开发,同时也可用于不同业务的系统开发. ...
- Linux makefile教程之总述二[转]
Makefile 总述——————— 一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或 ...
- Solr4.8.0源码分析(5)之查询流程分析总述
Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilt ...
随机推荐
- LSTM用于MNIST手写数字图片分类
按照惯例,先放代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 ...
- Command line is too long. Shorten command line for testMLDome1 or also for Application default configuration
在.idea文件夹中,更改workspace.xml文件 加这段语句: <property name="dynamic.classpath" value="true ...
- switch条件变量的取值类型
switch条件变量的取值类型主要有以下六种: 1)JDK1.5(不含JDK1.5)之前只能是byte.short.int.char类型,不能是float.double.long.boolean类型. ...
- Sequential game
Sequential game Problem Description Sequential detector is a very important device in Hardware exper ...
- CF682C Alyona and the Tree
题意翻译 题目描述 给你一棵树,边与节点都有权值,根节点为1,现不停删除叶子节点形成新树,问最少删掉几个点,能使得最后剩下的树内,∀v与其子树内∀u间边权的和小于点u权值 输入输出格式 输入格式: 第 ...
- linux获取外网ip
引言:目前获取ip的方法中,ifconfig和ip获取函数得到的都是内网ip.有时候需要获取外网ip,目前通用的做法,是向外部服务器发送请求,解析外部服务器响应,从而得到的自己的外网ip.linux下 ...
- 51nod 1963 树上Nim
这题还真就是树上玩 Nim... 相关知识点就是阶梯博弈,具体可以康这里 →_→ PS:手动搜索阶梯博弈 然后这题就转化为了多路径的阶梯博弈,这样的话咱定义根节点深度为 0,然后把所有奇数深度点的权值 ...
- 2、Java调用C语言(JNative法)
这个方法也是挺麻烦的…… 一.下载JNative.jar,把它放在你jdk下的\jre\lib\ext目录下 二.在 F:\MinGW\JNative 新建 Test.java: public cla ...
- Zookeeper入门概要
ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现.ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集 ...
- git基本命令和仓库操作
首先git是什么?git是github上的一个代码托管工具,是一款代码版本管理工具,github上的代码是基于git来进行托管的.github是全球的开源社区.Git 保存的不是文件的变化或者差异,而 ...