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

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

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

  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. 数据结构系列之2-3树的插入、查找、删除和遍历完整版代码实现(dart语言实现)

    弄懂了二叉树以后,再来看2-3树.网上.书上看了一堆文章和讲解,大部分是概念,很少有代码实现,尤其是删除操作的代码实现.当然,因为2-3树的特性,插入和删除都是比较复杂的,因此经过思考,独创了删除时分 ...

  2. Linux常用命令基础

    linux 常用指令 基础命令 宿主目录 目录结构 文件管理 目录管理 用户管理 别名管理 压缩包管理 网络设置 shell技巧 帮助方法 /表示根目录 ~表示家目录 软件的安装(光盘中的软件呢): ...

  3. Java——LinkedList底层源码分析

    1.简介 LinkedList 是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢.另外,他还提供了 List 接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈 ...

  4. Dp test solution

    Dp test solution 按照难易程度排序题解: Problem B Problem Description Tarzan 现在想要知道,区间 [L,R] 内有多少数是优美的.我们定义一个数是 ...

  5. [LeetCode] 203. 移除链表元素

    题目链接:https://leetcode-cn.com/problems/remove-linked-list-elements/ 题目描述: 删除链表中等于给定值 val 的所有节点. 示例: 输 ...

  6. bootstrap中的横的列

    col-md-6都是可以嵌套的,所以12列都是虚拟的 所以bootstrap是怎么完成的?都是通过绝对的像素值吗?还是自动计算出了本区域的像素数,然后设置的? 看样子应该是后者,所以整个bootstr ...

  7. 剑指offer-栈的压入、弹出序列-栈和队列-python

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  8. Response笔记

    # 今日内容          1. HTTP协议:响应消息     2. Response对象     3. ServletContext对象 ## HTTP协议:     1. 请求消息:客户端发 ...

  9. Python 余弦相似度与皮尔逊相关系数 计算

    夹角余弦(Cosine) 也可以叫余弦相似度. 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异. (1)在二维空间中向量A(x1,y1)与向量B(x2,y2 ...

  10. Django之AJAX请求

    ---恢复内容开始--- 一.choices字段  1.实列  前端代码 <div class='container'> <div class="row"> ...