机器学习——支持向量机学习

2023-11-03

支持向量机(Support Vector Machine, SVM)不仅具有坚实的统计学理论基础,还可以很好地应用于高维数据、避免维度灾难问题,已经成为一种倍受关注的机器学习分类技术。

为了解释SVM的基本思想,我们首先介绍一下最大边缘超平面(Maximal Margin Hyperplane)

给定训练数据集,线性分类器最基本的想法是:在样本空间中寻找一个超平面,将不同类别的样本分开。

每个超平面B,都对应着一对平行的超平面:bi1,和bi2,

它们之间的间隔称为超平面的边缘(margin)

图中,超平面B的边缘明显大于B的边缘。因此,在这个例子中,B就是训练样本的最大边缘超平面

直觉上,决策边界的边缘较小,决策边界任何轻微的扰动都可能对分类结果产生较大的影响。也就是说,具有较大边缘的决策边界比那些具有较小边缘的决策边界具有更好的泛化误差。

因此,根据结构风险最小化原理,需要设计最大化决策边界的边缘的线性分类器,以确保最坏情况下的泛化误差最小。线性支持向量机(linear SVM)就是这样的分类器。

距离决策边界最近的训练样本点使得上式中的等号成立,因此被称为“支持向量”(support vector)。两个异类支持向量到决策边界的距离之和被称为决策边界的“边缘”(margin),刚好等于超平面bi1和bi2之间的间隔。

由于目标函数是二次的,并且约束条件在参数w和b上是线性的,因此线性支持向量机的学习问题是一个凸二次优化问题,可以直接用现成的优化计算包求解,或者用更高效的拉格朗日乘子法求解

KKT条件表明,除非训练样本满足9if(;) =1,否则必有拉格朗日乘子Q =0。那些a > 0的训练样本,

即 gJ;f (;)= 1的训练样本都落在最大边缘的边界6;和b;2上,都是支持向量。

可见,最终支持向量机模型的参数和b仅仅依赖于这些支持向量

由于对偶优化问题是一个二次规划问题,可使用通用的二次规划算法来求解;

然而,该问题的规模正比于训练样本的数目,对于大型数据集,会造成很大的开销。为了避开这个障碍,人们通过利用问题本身的特性,提出了很多高效的算法,比如:SMO序列最小化优化算法

线性SVM假定训练样本是线性可分的,即存在一个线性的决策边界能将所有的训练样本正确分类。

然而在实际应用中,在原始的样本空问内也许并不存在这样的决策边界。

对于这样的问题,可将样本从原始空问映射到一个更高维的特征空间,使得样本在映射后的特征空间内线性可分。例如在下图中,如果将原始的二维空间映射到一个合适的三维空间,就能找到一个合适的划分超平面。幸运的是,如果原始空间是有限维,即属性数目有限,那么一定存在一个更高维的特征空间使得样本线性可分。

那么,合适的核函数是否一定存在呢?什么样的函数才能做核函数呢?

根据Mercer定理,只要一个对称函数所对应的核矩阵半正定,那么它就能作为核函数来使用

于是,核函数的选择成为非线性SVM的最大变数,若核函数选择不合适,就意味着将样本映射到了一个不合适的特征空间,从而很可能导致非线性SVM性能不佳。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习——支持向量机学习 的相关文章

随机推荐

  • 祝您健康:抢救脑溢血患者的神奇秘方:针刺十宣穴,涌泉穴

    中风 脑出血 的抢救方法 中风 脑血管意外 是临床常见的急性病症 特别是对于中老人 更是致死致残的高发病 脑溢血抢救放血急救法是对中风最有效的一种急救方法 如能正确掌握和及时施救 将能很大程度地减少中风对人体的伤害 我想 对于每个血压有点高
  • 关于软件测试

    目录 一 了解软件测试 二 软件测试和软件开发的区别 三 一个优秀的软件测试人员需要具备的素质 一 了解软件测试 其实在早期是没有软件测试这个行业的 刚开始都是程序员自己进行调试 寻找其中的一系列问题 慢慢的人们发现测试在整个项目研发阶段都
  • centos7开启网卡命令_CentOS7 开启网卡,设置开机启用网卡

    默认centos和redhat7都是不启用有线网卡的 要么手动开启 要么安装时直接启用 安装时启用网卡和指定IP最省事 一 临时启用网卡 关机或重启后 网络不会自动开启 1 使用命令 ip addr 查看网卡的IP 1 ip addr 2
  • R语言DMwR报错问题

    使用包DMwR的SOMTE函数报错 Error in factor newCases a levels 1 nlevels data a labels levels data invalid labels length 0 should b
  • python绘制星空(菜鸟级)

    设计知识点 使用turtle绘图库与random库产生一个范围随机数完成绘制 编译环境 anaconda spyder 比较通俗 就不搞注释了 懒得写 废话不多说 直接上代码 绘制星空 import turtle as t random a
  • linux命令--umask

    一 umask介绍 在linux系统中 我们创建一个新的文件或者目录的时候 这些新的文件或目录都会有默认的访问权限 umask命令与文件和目录的默认访问权限有关 若用户创建一个文件 则文件的默认访问权限为 rw rw rw 创建目录的默认权
  • Jquery Ajax解决跨域请求session丢失的问题

    后端代码 ajax请求的跨域允许 resp setHeader Access Control Allow Credentials true 是否支持cookie跨域 resp setHeader Access Control Allow O
  • linux部署java项目

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 linux部署java项目步骤 一 部署jdk 1 下载jdk 官网下载比较慢
  • 毕业设计-基于大数据的电影爬取与可视化分析系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • apache beam_如何使用apache beam pub sub和sql为在线商店建立实时数据管道

    apache beam It is fascinating to see how malleable our data is becoming Nowadays we have tools to convert highly nested
  • 西瓜书_学习任务_更新至9.5号

    任务1 西瓜书3 1 3 2 3 3 章节学习 描述对数几率回归算法的过程 任务2 详细解释逻辑回归模型中每个超参的意义 任务3 西瓜书3 3节的扩展内容 softmax回归和3 6节学习 任务4 理解sklearn包中LogisticRe
  • Apache JMeter 5.5 下载安装以及设置中文教程

    Apache JMeter 5 5 下载安装以及设置中文教程 JMeter 下载Apache JMeter 5 5 配置环境变量 查看配置JDK 配置JMeter环境变量 运行JMeter 配置中文版 一次性 永久设置正文 JMeter 下
  • Qt 读写xxx.ini配置文件

    1 配置文件 ini 请注意 我们所讨论的是项目中的配置文件 它是整个项目共用的 所以它要有一个项目使用的文件名 其后缀是 ini 例如 端口配置 ini ini文件格式 INI文件由节 键 值组成 节 section 参数 键 值 nam
  • 卷积神经网络手写体识别

    CNN 背景 卷积 LeNet网络结构 C1 S2 C3 S4 C5 F6 输出 数据集 代码及运行结果 测试 CNN 1995年 Yann LeCun 与Yoshua Bengio 提出了convolutional neural netw
  • 编程每日一题_C程序设计_i++ 与 ++i

    描述 区分 i 与 i 之间差异 代码示例1 include
  • Leetcode1402.做菜顺序——逆序贪心

    文章目录 引入 题解 引入 在本周的双周赛中 有了这么一道题 一个厨师收集了他 n 道菜的满意程度 satisfaction 这个厨师做出每道菜的时间都是 1 单位时间 一道菜的 喜爱时间 系数定义为烹饪这道菜以及之前每道菜所花费的时间乘以
  • javascript 判读字符串是否为数字

    javascript在通过parseIn或parseFloat将字符串转化为数字的过程中 如果字符串中包含有非数字 那么将会返回NaN 参考下面代码 parseInt Hello 10 return NAN parseInt 110 10
  • 算法模型部署- Docker

    一 什么是docker Docker是一个虚拟环境容器 可以将你本地开发开发环境 代码 配置文件等一并打包到一个容器中 然后发布到任意平台 部署到你想部署到的任意服务器中 二 模型部署为什么要使用docker 假设将本地项目部署到服务器中
  • mysql-字段设置Default值问题

    1 表中的shState字段设置了默认值0 可是新增的时候没有起作用 可能是因为Not Null没有打勾引起的 2 勾选后还是不行 新增报错 3 百度了下 原来是要设置int这种数值类型才会起作用 字符型不行 4 所以改成int类型 测试O
  • 机器学习——支持向量机学习

    支持向量机 Support Vector Machine SVM 不仅具有坚实的统计学理论基础 还可以很好地应用于高维数据 避免维度灾难问题 已经成为一种倍受关注的机器学习分类技术 为了解释SVM的基本思想 我们首先介绍一下最大边缘超平面