概述:在对支持向量机的学习和使用过程中,遇到了许许多多的问题,通过查阅各种资料,也是逐一攻克了遇到的问题。感悟颇多,写此博文的目的是想以一个学习者的身份从一个刚接触支持向量机的角度去记录模型推到过程中的种种困惑以及理解过程,以帮助更多人的更省时的了解和学习支持向量机;

本文主要记录和解决的问题:

  说明:每个问题所标的星级表示此问题的理解对后边推导过程的影响程度,也就是说理解不到位会使得自己越看越糊涂(仅供参考)

  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对偶)的更多相关文章

  1. hdu 1174:爆头(计算几何,三维叉积求点到线的距离)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  2. Java的多线程机制系列:(一)总述及基础概念

    前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...

  3. POJ1584 判断多边形是否为凸多边形,并判断点到直线的距离

    求点到直线的距离: double dis(point p1,point p2){   if(fabs(p1.x-p2.x)<exp)//相等的  {    return fabs(p2.x-pe ...

  4. ArcGIS 点到直线的距离

    /****点到直线的距离*** * 过点(x1,y1)和点(x2,y2)的直线方程为:KX -Y + (x2y1 - x1y2)/(x2-x1) = 0 * 设直线斜率为K = (y2-y1)/(x2 ...

  5. csuoj 1503: 点到圆弧的距离

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 1503: 点到圆弧的距离 时间限制: 1 Sec  内存限制: 128 MB  Speci ...

  6. 三国杀3v3心法——总述篇

    昔日,独孤求败前辈精研剑法,将其中奥妙化为独孤九剑,破尽天下武功.其中开篇总诀式提纲挈领,从宏观的层面阐述剑道,是领悟后面八式的基石,而之后各式则深入微观,可各破一类具体的武功.笔者亦曾苦心研究三国杀 ...

  7. Web应用程序系统的多用户权限控制设计及实现-总述【1】

    中大型的Web系统开发均需要权限的配置,基于多角色,多用户的操作权限管理是一个系统开发的基础.搭建好一套权限,用户,角色,页面一体的开发架构,可以用于后期业务的开发,同时也可用于不同业务的系统开发. ...

  8. Linux makefile教程之总述二[转]

    Makefile 总述——————— 一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或 ...

  9. Solr4.8.0源码分析(5)之查询流程分析总述

    Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilt ...

随机推荐

  1. CentOS7 源进源出

    echo 200 ct >> /etc/iproute2/rt_tablesecho 201 cu >> /etc/iproute2/rt_tables ip route ad ...

  2. WHY吃糖果 QDUOJ 二分嵌套

    WHY吃糖果 QDUOJ 二分嵌套 原题链接 解题思路参考链接 题意 给出一个\(n*n\)的矩阵,每个格子的权值为\(i*i+j*j+i*j+100000*(i-j)\),求该矩阵中第m小的权值为多 ...

  3. div绝对定位居中

    绝对定位absolute,left:50%,加上margin-left:-(宽度/2),可以实现绝对位置居中 .list{ width: 1200px; height: 300px; overflow ...

  4. 常用的 Python 标准库都有哪些?

    标准库:os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing进程,queue 队列. 第三方库:django 和 f ...

  5. 一条简单的 SQL 查询语句到底经历了什么?

    一.MySQL 基础架构   整体来说 MySQL 主要分为两个部分,一个部分是:Server 层,另一部分是:存储引擎层. 其中 Server 层包括有连接器.查询缓存.分析器.优化器.执行器等,存 ...

  6. 学习Golang语言(6):类型--切片

    学习Golang语言(1): Hello World 学习Golang语言(2): 变量 学习Golang语言(3):类型--布尔型和数值类型 学习Golang语言(4):类型--字符串 学习Gola ...

  7. JUNIT4 GroboUtils多线程测试

    阅读更多 利用JUNIT4,GroboUtils进行多线程测试 多线程编程和测试一直是比较难搞的事情,特别是多线程测试.只用充分的测试,才可以发现多线程编码的潜在BUG.下面就介绍一下我自己在测试多线 ...

  8. 华为云搭建windows+wordpress+xampp

    1.如何将本地文件上传至华为云ECS云服务器(Windows系统) 1.1 在本地电脑上,快捷键“WIN+R"打开“运行”中输入“mstsc”,点击确定 1.2  在“远程桌面连接”框点击“ ...

  9. 深入理解React组件传值(组合和继承)

    在文章之前,先把这句话读三遍 Props 和组合为你提供了清晰而安全地定制组件外观和行为的灵活方式.注意:组件可以接受任意 props,包括基本数据类型,React 元素以及函数. 来源于React中 ...

  10. Spring基础17——使用注解来配置Bean

    1.组件扫描 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定的注解的组件. 特定组件包括: —@Component:基本注解,标 ...