支持向量机(SVM)是机器学习算法之一,是二分类算法。给定一组训练样本集,如图,样本数据集是二维的,分散在平面上,需要找到一条直线将数据集分割开。可以分开的直线有很多,我们要找到其中泛化能力最好,鲁棒性最强的直线。这是在平面上的点,如果是在三维空间中,则需要找到一个平面;如果是超过三维以上的维数,则需要找到一个超平面。

超平面的表达式为:

原理举例:wT取(w1,w2),x取(x1,x2)T, 则原式得 w1x1+w2x2+b=0 与传统直线 Ax+By+c=0 方程式
相同,由二维三维空间推到更高维平面的一般式即为上式。
W:为平面法向量,决定了超平面的方向
b: 决定了超平面距原点的距离
法向量与样本属性的个数、超空间维数相同。在超空间中我们要求的参数就是决定超平面的W和b值。

在超空间中任意一点x到超平面的距离为:

我们可以由特殊到一般的理解一下这个式子,如果在二维空间即平面上,点到直线的距离为:

式子中A,B,C是直线的参数也就是W,x0和y0是x的坐标,这样r式是不是就好理解了,这个距离是几何距离,也就是人眼直观看到的距离。几何距离只有大小没有方向,因为式子是被套上绝对值的,将绝对值摘掉,现在我们就人为规定,样本数据中到超平面的距离为正的点为+1类的样本点,就是这类点给它打个标签+1,到超平面的距离为负的点标签为-1,为什么不是+2,-2其实都可以,取1是为了后续方便计算;

现在假设这个超平面能够将样本正确分类,只不过这个超平面的wb值我们不知道,这正是我们要求的,但是这个平面是一定存在的,有:

将几何距离r式中的分子绝对值和分母拿掉以后(因为都为正)剩下的wT+b是能够判断出样本为+1还是-1类别的部分,定义函数距离(很重要)为:

函数距离就是样本类别乘wT+b。因为正样本类别为+1,且wT+b也为正;负样本类别为-1且wT+b为负。所以函数距离只有大小没有方向。
函数距离就相当于几何距离的分子部分,在所有样本中每一个点都有一个函数距离和一个几何距离,几何距离是可观测到的直接的距离,函数距离具有如下性质:一个点到超平面的函数距离取决于这个超平面的法向量和b值,同一个超平面可以有多组w和b值,但每组值成比例。w和b值不同,点的函数距离也不同。
三维空间举例:
现有两个平面2x+3y+4z+2=0 与 4x+6y+8z+4=0
有点:x(1,1,1)
则点到平面的函数距离分别为:11,22。 但平面实质为一个平面,只有w和b值不同,也就是说我们可以通过放缩w和b值,来控制函数距离!!!

重点:支持向量机数学模型原理,其实就是通过控制函数距离来求得最大几何距离。也就是函数距离为约束条件,几何距离为目标函数。具体往下看:
通过放缩w和b,让两类中某一类点距超平面的函数距离分别为1(离超平面的距离相等,为1方便后续计算)。
W和b值未知,但总存在一组值满足上述。如图:

中间最粗的平面为我们要求的超平面,两边的虚线为支撑平面,支撑平面上的点就是支持向量,通过放缩超平面的w和b值,使支持向量到超平面的函数距离为1,支持向量是距超平面最近的点,所以其他向量点到超平面的函数距离一定大于等于1。其实这时候就可以建立最初的模型了,为:


解释一下这个模型,首先先不看目标函数,先看约束条件,约束添加表达的是所有样本点到超平面的距离要大于等于1,在支撑平面上的为1,其他的大于1,根据约束条件其实可以得到无数个平面,如下面两个:

但是,在这些平面中我们需要的是泛华能力最好,鲁棒性最强的那一个,也就是最宽的那一个(margin最大),这时候就需要通过定义目标函数来求得,宽度最大也就是几何距离最大,几何距离的分子是函数距离,而两个支撑平面的函数距离我们定义完了是2,所以才有了上面的数学模型。

总的来说,就是通过函数距离作为约束条件得到无数个能把样本正确分开的平面,然后通过目标函数在这些平面中找最宽的!
把上面的数学模型转化为:

把求最大转变为求最小,即把模型转化为凸函数,其实到这里已经是优化问题了,凸函数是比较容易找到最优解的,因为局部极值就等于全局极值。至于为什么加个二分之一的系数,加个平方,都是为了后续解模型时求导方便。这个模型即为支持向量机的基本型,后面涉及到的软间隔,支持向量回归都从这个形式出发。
所建立的模型为凸二次规划(局部极值的全局极值、目标函数为二次约束条件为一次)。能直接用现成的优化计算包求解,但是可以有更高效的办法。利用拉格朗日乘子法,将两个参数的优化问题转化为一个参数的优化问题,进而求解模型。
对所建立的模型使用拉格朗日乘子法,将约束条件转化为目标函数,即对每条约束添加拉格朗日乘子 ɑi>0。得到如下拉格朗日函数。



对于等式约束可以直接使用拉格朗日乘子法求极值,对于不等式约束要满足KKT条件约束进行求解,模型对应的KKT条件为:

将w公式代入原函数有:

上面最后的那个式子可以看到已经不含w和b值了,就只有拉格朗日乘子。利用SMO算法将每个样本数据的乘子解出来,观察约束条件

总有

前者意味着向量点根本不会在求和中出现,后者意味着向量在支撑平面上,是一个支撑向量,训练完成后大部分样本都不需要保留。也就是训练完后大部分拉格朗日乘子都为零,只有在支撑平面上的样本的拉格朗日乘子不为0。
至此,已经对支持向量机有一个基本认识,以上数学推理为支持向量机的硬间隔。记住这个模型:

支持向量机的软间隔、核函数方法、支持向量回归都是在这个模型的基础上的。上面讲的是样本完全线性可分,但是实际中,不可分的情况多谢,如果是线性不可分的如:

需要把数据映射到更高维空间,这时候用到核函数
如果数据有噪声如:

那么用到的是支持向量机的软间隔
如果你不是分类数据而是要有监督的预测数据,那么就是支持向量回归。

软间隔、核函数、支持向量回归我会以后写出来。

支持向量机原理(超详细)相关推荐

  1. 计算机网络之交换机的工作原理---超详细解析,谁都看得懂!!

    在了解交换机的工作原理之前,我们先要了解几个概念. 一.相关概念  1.OSI七层模型是哪七层? 自上而下分别是: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 交换机工作在数据链路层, ...

  2. 支持向量机(SVM)----超详细原理分析讲解

    文章目录 支持向量机(SVM) 直观的本质理解 几个基础概念 决策超平面的求解(SVM模型的推导) 最大硬间隔的寻找与公式构建 拉格朗日乘数法的应用 使用对偶问题求解 一个小例子(求解决策超平面与决策 ...

  3. 支持向量机(SVM)优化算法原理超详细证明过程,几何的角度证明互补松弛条件

    本文将初学者在硬间隔优化这一部分会遇到的问题基本都进行了说明和推导,包括为什么要取max以及互补松弛条件到底是什么,支持向量到底体现在哪里. 但是本文并没有引入说明支持向量的优化问题是怎么引出的.这里 ...

  4. 【算法】动态规划+“背包九讲”原理超详细讲解+常见dp问题(9种)总结

    目录 一.动态规划(DP) 二.背包九讲 (1)完全背包 P1616 疯狂的采药(完全背包) (2)01背包 滚动数组 一维数组 P1048 采药(01背包) 01背包表格图示 (3)多重背包 整数拆 ...

  5. iic总线从机仲裁_IIC协议底层原理超详细解析!示波器,逻辑分析仪多图预警

    1. 协议基础 1.1.     协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发.主要是用来方便微控制 ...

  6. 增量式编码器工作原理超详细图解

    旋转编码器是由光栅盘(又叫分度码盘)和光电检测装置(又叫接收器)组成.光栅盘是在一定直径的圆板上等分地开通若干个长方形孔.由于光栅盘与电机同轴,电机旋转时,光栅盘与电机同速旋转,发光二极管垂直照射光栅 ...

  7. JVM原理-超详细总结

    JVM概念 JVM是java的核心和基础在java编译器和os平台之间的虚拟处理器.它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序.java编译 ...

  8. Kafka原理--超详细(学习笔记)

    一.概念理解 ​ Kafka 是最初由Linkedin 公司开发,**是一个分布式.支持分区的(patition).多副本的(replica).**基于zookeeper协调的分布式消息系统,它的最大 ...

  9. SPI原理超详细讲解---值得一看

    文章目录 什么是SPI SPI主从模式 SPI信号线 SPI设备选择 SPI数据发送接收 SPI通信的四种模式 SPI的通信协议 SPI的三种模式 SPI原理图连接 STM32中SPI初始化配置 什么 ...

  10. 【GAMES-202实时渲染】1、软阴影01(Shadow Mapping、Peter Panning、PCSS原理超详细)

    Lecture3 Real-Time shadows1 1 Shadow Mapping回顾 2 Shadow Mapping缺点及解决方案 2.1 自遮挡现象 解决方案1 定义一个bias 解决方案 ...

最新文章

  1. 获取节点及元素的代码
  2. 分治习题--九章算法培训课第三章笔记
  3. usaco2.1.2(frac1)
  4. Qt Creator如何恢复默认布局
  5. Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——习题7-12
  6. 毕业即失业?你到底在焦虑什么
  7. 勒索病毒入侵中国, Splunk建议网络立即进行区分和隔离设置
  8. python 检测端口是否被占用
  9. repo + gerrit
  10. 190723每日一句 学会调整你的心态
  11. 如何区分两列中不同数据_快速找出Excel表格中两列数据不同内容的3种方法!
  12. 网络流(二) 最大流算法的实现
  13. 前端高级——Node的变迁
  14. MFC CFile输出文本文件乱码
  15. class path resource [bean1.xml] cannot be opened because it does not exist
  16. 青岛如何线上提取青岛公积金
  17. Redis源码篇(1)——底层数据结构与对象
  18. HBuilder 打包 iOS 客户端会产生广告标识符的问题
  19. 东南亚(Lazada shoppe)自养号测评如何解决收货地址及ip问题详解
  20. 如何成为真正的数据架构师

热门文章

  1. 群联固态硬盘修复工具_固态硬盘有三大要素,那么你的固态硬盘买对了吗?
  2. tablepc是什么平板电脑_平板电脑 Tablet PC
  3. 百度网盘客户端使用的一些小窍门
  4. 内存屏障 - MemoryBarrier
  5. 里诺合同管理合同上传步骤_客户关系管理:合同
  6. 杭电、POJ、ZOJ ACM刷题顺序和题目分类详解
  7. 支持所有浏览器的右键菜单
  8. 【湖南集训 4.2】正12面体
  9. 思考题4:掷骰子游戏
  10. 沧州中考计算机考试时间,2019年沧州中考考试时间安排,沧州中考考试科目时间安排表...