小结 | 支持向量机 (SVM)

news2025/1/14 1:18:05

一.基本原理

SVM是一种二分类模型

基本思想:在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是线性模型,加了之后才会升级为一个非线性模型)

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机
  • 当训练样本近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机
  • 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机

二.优缺点

优点

  • 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优
  • 不仅适用于线性问题还适用于非线性问题(核技巧)
  • 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”
  • 理论基础比较完善

缺点

  • 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数),因此SVM不适用于超大数据集(SMO算法将可以缓解这个问题)
  • 只适用于二分类问题(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)
  • 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务

三.适用场景

  • 在很多数据集上都有优秀的表现。相对来说,SVM尽量保持与样本间距离的性质导致它抗攻击的能力更强。和随机森林一样,这也是一个拿到数据就可以先尝试一下的算法
  • 小样本,不要求数据分布,主要用于二分类问题

四.常见面试题

1. SVM与感知机的区别?

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强

2.为什么SVM要引入核函数?

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分

引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只需要知道其核函数

3.如何选择核函数?

  • 当特征维数超过样本数(文本分类问题通常是这种情况),使用线性核
  • 当特征维数比较小,样本数中等时,使用RBF核
  • 当特征维数比较小,样本数特别大时,SVM通常不如深度神经网络
  • 线性核:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果很理想
  • RBF核:主要用于线性不可分的情形。参数多,分类效果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。个人体会是使用libsvm,默认参数,RBF核比线性核效果稍差,通过进行大量参数的尝试,一般能找到比线性核更好的效果
  • 到底该采用哪种核,要根据具体问题,有的数据是线性可分的,有的不可分,需要多尝试不同核不同参数。如果特征提取的好,包含的信息量足够大,很多问题都是线性可分的。当然,如果有足够的时间去寻找RBF核参数,应该能达到更好的效果

4.为什么SVM对噪声及缺失数据敏感?

  • 当噪声出现的过多的话,或者当噪声出现并成为支持向量的时候,噪声对模型的影响是巨大的
  • 这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理确实值得策略。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能重要,缺失特征数将影响训练结果的好坏

5.SVM目标函数和约束怎么得来的?

6.SVM为什么采用间隔最大化?

  • 当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开
  • 感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个
  • 线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强
  • 然后应该借此阐述,几何间隔,函数间隔,及从函数间隔—>求解最小化1/2 ||w||^2 时的w和b。即线性可分支持向量机学习算法—最大间隔法的由来

7.为什么要将求解SVM的原始问题转换为其对偶问题?

  • 是对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)
  • 自然引入核函数,进而推广到非线性分类问题

8.SVM中参数C的理解

把这个参数C理解为调节优化方向中两个指标(间隔大小,分类准确度)偏好的权重。soft-margin SVM针对hard-margin SVM容易出现的过度拟合问题,适当放宽了margin的大小,容忍一些分类错误(violation),把这些样本当做噪声处理,本质上是间隔大小和噪声容忍度的一种trade-off,至于具体怎么trade-off,对哪个指标要求更高,那就体现在C这个参数上了

9.SVM是否适合大规模数据? 

10.kernel在SVM扮演什么角色?

11.SVM属于神经网络的范畴吗?

把这个参数C理解为调节优化方向中两个指标(间隔大小,分类准确度)偏好的权重。soft-margin SVM针对hard-margin SVM容易出现的过度拟合问题,适当放宽了margin的大小,容忍一些分类错误(violation),把这些样本当做噪声处理,本质上是间隔大小和噪声容忍度的一种trade-off,至于具体怎么trade-off,对哪个指标要求更高,那就体现在C这个参数上了

12.不平衡样本会对SVM的结果产生影响吗?怎么解决?

不平衡样本会对结果产生影响,超平面会靠近样本少的类别。原因是:使用的是软间隔分类,而如果所有的类别都使用同样的惩罚系数,则由于优化目标里面最小化惩罚量,所以靠近少数样本时,其惩罚量会小一些

解决方法为:

  • 对正例和负例赋予不同的C值,例如正例远少于负例,则正例的C值取得较大,这种方法的缺点是可能会偏离原始数据的概率分布
  • 对训练集的数据进行预处理即对数量少的样本以某种策略进行采样,增加其数量或者减少数量多的样本,典型的方法为:随机插入法,缺点是可能出现过拟合,较好的是SMOTE,其缺点是只能应用在具体的特征空间中,不适合处理那些无法用特征向量表示的问题,当然增加样本也意味着训练时间可能增加
  • 基于核函数的不平衡数据处理

13.SVM如何处理多分类问题?

直接法:直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面,看似简单但是计算量却非常大

间接法:对训练器进行组合,其中比较典型的是一对一和一对多

  • 一对多:就是对每个类都训练出一个分类器,由于SVM是二分类,所以将此二分类器的两类设定为目标类为一类,其余类为另外一类。这样针对K个类可以训练出K个分类器,当有一个新的样本来的时候,用这K个分类器来测试,哪个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不好,偏差比较高
  • 一对一:针对任意两个类训练出一个分类器,如果有K类,一共训练出C(2,K)个分类器,这样当有一个新的样本要来的时候,用这C(2,K)个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类

14.libSVM和libLinear有什么区别?

  • libSVM是一套完整的SVM模型实现。用户可以在libSVM中使用核函数来训练非线性的分类器,当然也能使用更基础的线性SVM。而libLinear是一个针对线性分类场景而设计的工具包,除了支持线性的SVM外,还可以支持线性的逻辑回归等模型,但是无法通过定义核函数方式实现非线性的分类器
  • 由于支持核函数的扩展,libSVM理论上具有比libLinear更强的分类能力,能够处理更为复杂的问题。但是很多人因此就只使用libSVM,甚至最简单的线性分类器都使用libSVM来训练和预测,这也是不可取的。因为libLinear设计的初衷就是为了提高线性分类的效率,其优化算法与libSVM中的优化算法有着根本的区别。虽然在进行线性分类时libSVM和libLinear都可以达到类似的结果,但是libLinear无论是在训练上还是预测上,都比libSVM高效的多
  • 受限于算法,libSVM往往在样本量过万之后速度就比较慢了,如果样本量再上升一个数量级,那么通常的机器已经无法处理了。但使用libLinear则完全不需要有这方面的担忧,即便是百万千万级别的数据,libLinear也可以轻松搞定,因为libLinear本身就是为了解决较大规模样本的模型训练而设计的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MybatisPlus详解 | DQLDML快速开发... | 系统性学习 | 无知的我费曼笔记

无知的我正在复盘MybatisPlus,顺便上传笔记。。。 下图是我总结的 MP 知识的初级思维导图,后续会不断补充 文章目录1 MyBatisPlus入门案例与简介1.1 入门案例回顾SpringBoot整合Mybatis的开发过程:步骤1:创建数据库及表步骤2:创建SpringBoot工程步骤…

二苯并环辛炔-聚乙二醇-生物素DBCO-PEG-Biotin简介 DBCO-PEG-Biotin衍生物可以在没有金属催化剂(铜离子)作用下发生点击化学反应

中文名:二苯并环辛炔-聚乙二醇-生物素,生物素-聚乙二醇环辛炔 英文名:DBCO-PEG-Biotin,Biotin-PEG-DBCO 溶剂:溶于大部分有机溶剂,如:DCM、DMF、DMSO、THF等等,在水中有很好的溶解性…

变分自编码器VAE的数学原理

变分自编码器(VAE)是一种应用广泛的无监督学习方法,它的应用包括图像生成、表示学习和降维等。虽然在网络架构上经常与Auto-Encoder联系在一起,但VAE的理论基础和数学公式是截然不同的。本文将讨论是什么让VAE如此不同,并解释VAE如何连接“变…

【JVS低代码】一分钟学会如何快速创建应用

应用中心功能介绍 在JVS角色中有“应用管理员”的角色,如果赋予该角色,则用户为应用管理员,应用管理员有进入应用配置中心的权限。 创建空白应用: 从模板创建应用: 应用中心入口 具备应用管理员权限的用户&#xff…

嵌入式软件开发为什么需要DevOps?

DevOps提出至今已逾十年,作为热门概念,DevOps近年来频频出现于各大技术社区和媒体文章中,备受行业大咖追捧。作为新一代持续集成/持续开发(CI/CD)的方法论,DevOps正被快速引入嵌入式软件开发领域中。 为什…

【C++】类和对象(C++门槛)

唯有奋力奔跑,才能方得始终。 文章目录一、struct > class(类 方法/成员函数 属性/成员变量)1.自定义类型 struct 和 class 的区别2.类放在内存中的什么存储区?3.类中函数的两种定义方式3.1 声明和定义分离(增强代码可读性,…

docker 搭建 Nuget 服务器,CentOS,宝塔面板

docker 搭建 Nuget 服务器,CentOS,宝塔面板创建容器挂载目录给目录指定写入权限创建并运行 Nuget 服务创建Nuget包项目属性修改包版本号预生成事件执行重新生成手动上传vs菜单命令上传 记得上传在前修改版本号添加外部工具添加自定义命令项目文件夹下面新建 push.cm…

stable diffuison论文阅读

论文链接:High-Resolution Image Synthesis with Latent Diffusion Models 文章目录摘要引言普及高分辨率图像合成向潜空间出发相关工作图像合成的生成模型两阶段法图像合成方法感知图像压缩隐空间扩散模型扩散模型隐空间表征的生成模型条件机制实验感知压缩权衡基于…

【发表案例】计算机科学类SCI,仅1个月零6天录用,涵盖软件、信息、数据云计算、网络、建模等研究方向

【期刊简介】IF:0.5-1.0,JCR4区,中科院4区 【版面情况】SCI 在检,正刊 【征稿领域】计算机科学和控制系统相关问题的广泛领域,包括:软硬件工程;管理系统工程;信息系统和数据库;嵌入…

GPS(rinex格式)数据解析详细解读

RINEX格式现如今已成为GPS测量应用中的标准数据格式,目前应用最为广泛、最普遍的是RINEX格式的第2个版本,该版本能够用于包括静态和动态GPS测量在内的不同观测模式数据。在该版本中定义了6种不同类型的数据文件,分别用于存放不同类型的数据&a…

【经典设计】构建业务架构的3大视图

​ 在软件设计过程中,架构设计、功能设计和数据设计是三个不同层次的设计工作。而业务架构是系统整体规划中重要的基础工作,通常用业务架构图来表达业务架构。 业务架构定义了企业的治理结构、业务能力、业务流程、业务数据。业务能力说明企业做什么&a…

I/O指令和I/O地址译码

目录 掌握 I/O指令和I/O地址译码 独立编址(标准的I/O寻址方式) 8086/8088采用 特点 统一编址(存储器映像I/O寻址方式又称存储器对应I/O寻址方式) 特点 优点 缺点 输入输出指令 输入指令 输出指令 I/O接口的端口地址译…

rtt 线程管理

1.线程管理的定义 在日常生活中,我们要完成一个大任务,一般会将它分解成多个简单、容易解决的小问题,小问题逐个被解决,大问题也就随之解决了。在多线程操作系统中,也同样需要开发人员把一个复杂的应用分解成多个小的、…

第二证券|这个板块全线上涨,机构看好板块估值修复空间!

本周部分个股获杠杆资金逆市买入,医药生物股最受资金喜爱。 职业教育股早盘领涨两市 12月23日早盘,职业教育板块强势走高,概念指数上涨3.89%。其间全通教育20cm涨停,凯文教育、陕西金叶10%涨停,世纪鼎利、天舟文化早盘…

web前端-javascript-初识 RegExp 正则表达式(说明,创建的语法,正则的test方法,邮箱正则)

初识 RegExp 正则表达式 1. 说明 正则表达式用于定义一些字符串的规则计算机可以根据正则表达式,来检查一个字符串是否符合规则 或者将字符串中更符合规则为的内容提取出来 2. 创建正则语法 var 变量 new RegExp(“正则表达式”,“匹配模式”);使用typeof检查…

LeetCode 93 双周赛

2496. 数组中字符串的最大值 一个由字母和数字组成的字符串的 值 定义如下: 如果字符串 只 包含数字,那么值为该字符串在 10 进制下的所表示的数字。否则,值为字符串的 长度 。 给你一个字符串数组 strs ,每个字符串都只由字母…

【服务器数据恢复】Storwize系列存储raid5数据恢复案例

服务器故障: 某品牌Storwize系列存储中raid5阵列有一块硬盘出现故障离线,热备盘启用替换离线盘,开始同步数据。这时与离线盘同一组Mdisk中的另一块磁盘故障离线,热备盘同步失败,这组Mdisk失效,整个通用卷无…

阿里灵杰:与开发者一起推动AI创新落地

对于人工智能领域而言,“AIGC”无疑是贯穿2022年的热点。12月16日,Science杂志发布了2022年度科学十大突破,AIGC赫然在列。以文生图,对话机器人等AI创新应用的落地,引发一轮又一轮的全民狂欢热潮。AI技术蓬勃发展&…

全国职业院校技能大赛中职组网络安全竞赛—[中科磐云](总结经验分享)

全国职业院校技能大赛中职组网络安全竞赛—[中科磐云](总结经验分享)通过本项目竞赛,使中职学生能熟练运用网络信息安全技术对网络、操作系统、应用、服务器等目标进行信息和数据安全防护与渗透,具有分析、处理现场安全问题的能力…

DBCO-PEG-FITC二苯基环辛炔-聚乙二醇-异硫氰基荧光素说明;DBCO用于无铜点击化学。在没有铜催化剂的情况下,与叠氮化合物的反应迅速。

DBCO-PEG-FITC二苯基环辛炔-聚乙二醇-异硫氰基荧光素 FITC-DBCO荧光标记点击试剂 中文名称:荧光素-聚乙二醇-二苯基环辛炔 英文名称:DBCO-PEG-FITC 简 称:DBCO-PEG-FITC 性 状:液体/固体白色或淡黄色粉末,取决于分…