支持向量机:抽象难懂?看这里就明白了!

今天给大家分享的知识是关于支持向量机的内容,支持向量机算法是目前学习到的机器学习算法中最抽象、最难以理解的内容,不过支持向量机算法在实际使用过程中还是比较常见,无论是在医学研究还是经济研究中都能看到身影,所有,这一块内容还是非常重要的,而且很多面试中对这一部分的基础知识还是会考察,所以大家还是需要掌握理解。

支持向量机(support vector machines,SVM)是一种二类分类模型,但是和一般的二分类模型例如逻辑回归模型在分类结果上还是有区别,支持向量机的二分类是正类和负类的划分。其基本模型定义是在特征空间上的间隔最大的线性分类器,熟悉感知机的都知道,感知机只注重是否能够正确分类样本,因此,感知机模型是存在多个模型,支持向量机在正确分类样本的基础上还强调正确分类样本的可信度,要求分离超平面距离支持向量的距离最大。支持向量机模型由简单到复杂主要包括:线性可分支持向量机、线性支持向量机以及非线形支持向量机。当训练数据线形可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,从而也被称为硬间隔支持向量机;当训练数据近似线形可分时,通过软间隔最大化,学习一个线形的分类器,即线性支持向量机,又被称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

一、线性可分支持向量机

当我们有一个线性可分的数据集,我们肯定能够找得到一个甚至多个超平面讲数据集完全分类正确,如图中随时,在两类不同点之间,我们总是可以找到一个或者多个直线将两类点分开,这也是感知机的原理,只需要注重分类正确即可,但是支持向量机强调在在保证分类正确的基础上,我们还要要求距离分离超平面的点与超平面的间隔越大,越大表示在现有的分类下,分类正确的可信度越高,在这种情况下,我们只能求得唯一的超平面。

在线性可分训练数据集的情况下,通过间隔最大化得到的最优分离超平面我们假设为w^{*}\cdot x+b^{*}=0 对应的决策函数f(x) = sign(w^{*}\cdot x+b^{*})称为线性可分支持向量机。在讲解关于支持向量机相关的知识之前,我们先做一点准备和铺垫工作,关于函数间隔和几何间隔,一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度,在数据可分的情况下,同时我们已经得到能够将数据正确分类的超平面,对于距离超平面远的点,我们都不会对其分类正确性存疑,但是距离超平面近点点,我们会担心是不是被误分类,在w\cdot x+b = 0确定的情况下,|w\cdot x+b|能够相对地表示点x距离超平面的远近,而w\cdot x+b的符号与类标记y的符号是否一致能够表示分类是否正确,所有可以使用y(w\cdot x+b)来表示分类的正确性及确信度,这就是函数间隔的概念,记为\hat{\gamma _{i}} = y_{i}(w\cdot x_{i}+b),定义最小函数间隔为\hat{\gamma }=min\hat{\gamma _{i}},函数间隔可以表示分类预测的正确性话置信度,但是只要我们成比例低改变超平面的参数w和b,例如\lambda w\lambda b,超平面并没有变化,但是函数间隔却变成了之前的\lambda倍,从而,我们引入了几何间隔\gamma _{i}=y_{i}(\frac{w}{||w||}\cdot x_{i}+\frac{b}{||w||}),大家可以看出,几何间隔相当于在函数间隔上做了一个单位化的操作,最小几何间隔定义为\gamma =min\gamma _{i},从几何间隔和函数间隔的公式得出,他们关系如下:\gamma _{i}=\frac{\hat{\gamma _{i}}}{||w||},\gamma = \frac{\hat{\gamma }}{||w||}

在讲完上面的基础知识之后,我们正式讲解关于支持向量机的内容,支持向量机的核心就是最大化间隔,我们可以将其转换成约束最优化问题:

我们的主问题是最大化几何间隔\gamma,约束条件是所有的点几何间隔都必须大于等于\gamma,考虑函数间隔和几何间隔的关系,我们将其转换为:

函数间隔\hat{\gamma }的值并不会影响最优问题的解,当我们将w和b按比例改变,\hat{\gamma }也会按照相应的比例改变,因此,\hat{\gamma }的取值不会对最终结果产生影响,我们为了方便将其取值为1,同时由于最大化\frac{1}{||w||}和最小化\frac{1}{2}||w||^{2}等价,进一步地,我们求解的模型为:

这是一个凸优化问题,存在唯一解,我们最终可以得到一个最优的超平面 w^{*}\cdot x+b^{*}=0

总结一下,线性可分支持向量机算法如下:

尽管我们在上面提出了支持向量机的原始问题以及求解,但是实际并不好做,因此,我们引入对偶问题求解,将对偶问题引入有以下优点:一、算法求解会相对容易;二、可以引入核函数,进而推广到非线形分类问题。我们根据前面的目标函数和约束构建拉格朗日函数,如下:

L(w,b,a)=\frac{1}{2}||w||^{2}-\sum_{i=1}^{N}a_{i}y_{i}(w\cdot x_{i}+b)+\sum_{i=1}^{N}a_{i}

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:

为了得到对偶问题的解,我们需要先对目标函数求极小值,再求极大值,求minL(w,b,a),对 L(w,b,a)分别关于w,b求一阶导数并令其为0,得到如下结果:

这一块知识需要使用到矩阵求导到知识,大家如果需要自行学习,难度不大,根据等式结果我们得到

w=\sum_{i=1}^{N}a_{i}y_{i}x_{i} 

\sum_{i=1}^{N}a_{i}y_{i}=0 

将上面结果带入原拉格朗日函数,我们可以得到如下结果: 

再得到以上结果之后,我们再针对极小函数再求极大结果,如下:

最终我们可以得到对偶问题的最优解\alpha ^{*},根据我们之前的一阶求导公式我们可以得到

w^{*}=\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}

b^{*} = y_{j}-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x_{i}*x_{j}) 

分离超平面为:

 \sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x_{i}*x_{j})+b^{*} =0

分类决策函数为:

f(x) = sign(\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x_{i}*x_{j})+b^{*})

最后总结一下线性可分支持向量机的算法如下:

二、线性支持向量机

在我们上面讲述的线性可分支持向量机的基本要求是数据线性可分,即我们能够找到一个甚至多个超平面将数据完全分类正确,但是我们在实际过程中不一定能够满足这种严格的条件,总是会存在一些特异点,导致数据线性不可分,我们将这些特异点去掉之后,剩下的大部分样本点的组合是线性可分的。线性不可分意味着函数间隔不能大于等于1的约束条件,因此,我们就放松了这个约束,引入了一个松弛变量\varepsilon _{i}\geq 0,使得函数间隔加上松弛变量大于等于1,约束条件变为

y_{i}(w\cdot x_{i}+b)\geq 1-\varepsilon _{i} 

我们的目标函数针对每个松弛变量\varepsilon _{i},都会支付一个代价\varepsilon _{i},类似于lasso回归和Ridge回归限制模型复杂度的思想,从而,我们的目标函数变成了

\frac{1}{2}||w||^{2}+C\sum_{i=1}^{N}\varepsilon _{i}

这里,C>0称为惩罚参数,C值越大对误分类的惩罚增大,C值小时对误分类的惩罚减小。从我们的目标函数可以看出要使整个目标函数最小化,需要使得两部分内容都要小,前面部分尽量小使得我们的间隔尽量大,参考前面最大化间隔定义,后面部分尽量小要求误分类的点个数要尽量少。

因此我们完整的最优化问题为:

同样地,原始问题的最优解不好求,我们还是采用求解对偶问题得到最优解,构建拉格朗日函数为:

分别针对wb\varepsilon _{i}求一阶导数 

得到:

 将以上结果带入拉格朗日函数中得

再对\alpha求极大,即得到对偶问题:

 

最终我们的分离超平面为: 

 \sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x\cdot x_{i})+b^{*} =0

分类决策函数为:

 f(x) = sign(\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}(x\cdot x_{i})+b^{*} )

总结一下,线性支持向量机算法如下:

 三、非线形支持向量机

对于线性分类问题,线性分类支持向量机是一种非常有有效的方法但是,有时分类问题不是线性的,例如下图所示,我们在原始的二维空间中无法找到一条直线进行分类,但是我们可以将数据中映射到三维或者更高维的空间,从而,在高纬空间中找到一个可以分类的超平面,实现这个操作我们需要使用到核技巧,至于核技巧是什么我们不过多讲述,可以实现将数据映射到高纬领域,同时可以在低纬空间进行运算。

当引入核函数之后,我们的对偶问题变成了:

 我们同样可以得到一个分离超平面:

\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}K(x_{i},x_{j})+b=0

得到决策函数:

 f(x) = sign(\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}K(x_{i},x_{j})+b)

总结一下非线性支持向量机算法:以上就是支持向量机算法相关的内容,如果大家对其他算法或者机器学习相关知识感兴趣的,请关注我们的公众号“明天科技屋”,优质文章和资源第一时间呈送,希望大家多多关注支持点赞👍!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.4网安学习第四阶段第四周回顾(个人学习记录使用)

本周重点 ①Linux系统提权 ②Linux权限维持 ③Windows 提权 ④Windows权限维持 ⑤SSRF利用 ⑥内网环境 ⑦内网扫描 ⑧漏洞利用 ⑨内网代理 ⑩获取主机控制权其他方案 ⑩①vuln靶场 ⑩②CS代理与ICMP隧道 本周主要内容 ①Linux系统提权 系统提权是成功入侵系统之…

[数据概念|方案实操]清华数据大讲堂1-海南数据基础设施建设思考与实践

“ 全国最大自贸区在数据要素市场改革中都做了什么?” 如鼹鼠哥上一篇文章所介绍,4月17日,在清华公管学院,由杭州数据局局长 徐青山 给大家做了题为《数据要素市场化配置改革杭州实践与思考》的报告,鼹鼠哥自己的一点感…

暗区突围pc端资格发放了吗 暗区突围pc测试资格怎么获取

暗区突围pc端资格发放了吗 暗区突围pc测试资格怎么获取 暗区突围是一款很火爆的第一人称射击网游,现在终于要上线PC端啦!小伙伴们是不是已经迫不及待想要体验电脑上的硬核射击快感了?暗区突围pc端资格已经陆续发放,想要参与PC端…

Excel办公之if函数-是非之争

IF函数是Excel中功能强大的函数,可以帮助用户根据逻辑条件判断并返回不同的值,广泛应用于数据分析、数据处理、报表制作等场景,是日常办公中必不可少的工具。 语法: IF(logical_test, value_if_true, value_if_false) 其中&…

晶振负载对系统有什么影响?

电子系统中,晶振(晶体振荡器)是确保系统各部分同步工作的关键组件。然而,晶振的性能受到其负载电容大小的显著影响。本文将详细探讨晶振负载电容对系统性能的影响,并给出相应的解决方案。 一、晶振负载电容的作用 晶…

药物代谢动力学学习笔记

一、基本概念 二、经典房室模型 三、非线性药物代谢动力学 四、非房室模型 五、药代动力学与药效动力学 六、生物等效性评价 七、生物样品分析方法 基本概念 生物样品:生物机体的全血、血浆、血清、粪便、尿液或其他组织的样品 特异性,specificity&…

服务器关机前未退出xampp导出MySQL无法启动

背景解决 五一放假,服务器关机了,但是关机前没有正常关闭数据库服务,导致数据库无法启动! 查看错误日志如下 从报错信息可以看出是MySQL这个服务相关文件出现问题了,解决思路:重新安装xampp 重新安装xam…

IT 项目管理介绍和资料汇总

IT项目管理到底是什么?是对组织承担的任何信息技术项目的成功监督。IT项目经理负责规划、预算、执行、领导、故障排除和维护这些项目。IT项目经理可能会做的事情包括: 1、硬件安装 2、软件、网站和应用程序开发 3、网络和云计算解决方案的升级和/或推出…

Python轴承故障诊断 (18)基于CNN-TCN-Attention的创新诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 …

H5页面跳转去微信的客服页面不需要添加客服就可以直接聊天

我并没有添加客服的微信。但是页面直接跳转了进来。可以直接聊天。 首先你公司要有个企业微信。然后登陆公司的企业微信。搜索框找到应用里面的企业客服 然后你就看到了客服账号的接入连接。代码上直接写个 <div οnclick"window.location.href接入链接粘贴到这里&q…

关闭前端统一请求库设计与落地

前言 对于一个前端工程师而言&#xff0c;每天都在面对的较多的需求场景就是调用后端的接口&#xff0c;但是因为众所周知的原因&#xff0c;前端目前已经有无数种调用接口的方式&#xff0c;例如&#xff1a;之前有基于 XHR、Axios、Fetch 进行封装的工具&#xff0c;大家都试…

有没有电脑桌面监控软件|十大电脑屏幕监控软件超全盘点!

当然&#xff0c;目前市场上有许多电脑桌面监控软件可供选择&#xff0c;它们各有特色&#xff0c;旨在满足不同企业和个人对于远程监控、安全管理、提高工作效率等方面的需求。以下是根据近期资料整理的十大电脑屏幕监控软件盘点&#xff0c;包括它们的一些特点和优势&#xf…

Web3:下一代互联网的科技进化

随着科技的不断演进&#xff0c;互联网已经成为了我们生活中不可或缺的一部分。而在Web3时代&#xff0c;我们将会见证互联网进化的下一个阶段。本文将探讨Web3作为下一代互联网的科技进化&#xff0c;以及它所带来的重要变革和影响。 传统互联网的局限性 传统互联网存在诸多…

如何从零开始学习数据结构?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「数据结构的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;数据结构 算法&#xff1d;程…

MySQL日志机制【undo log、redo log、binlog 】

前言 SQL执行流程图文分析&#xff1a;从连接到执行的全貌_一条 sql 执行的全流程?-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞20次&#xff0c;收藏12次。本文探讨 MySQL 执行一条 SQL 查询语句的详细流程&#xff0c;从连接器开始&#xff0c;逐步介绍了查询缓存、解析 S…

xmind的13个快捷方式

1.新建导图 CtrlshiftN 2.编辑文字 空格键 3.插入图片 Ctrli 4. 插入主题 Enter键 5. 插入主题之前 ShiftEnter键 6. 插入子主题 Tab键 7. 放大导图 “Ctrl”“” 8. 缩小导图 “Ctrl”“-” 9. 复制 CtrlInsert 10. 粘贴 Shift Insert 11. 剪切 ShiftDelete 12. 截图 F7 13. 保…

【Pytorch】5.DataLoder的使用

什么是DataLoader 个人理解是&#xff0c;如果Dataset的所有数据相当于一副扑克牌&#xff0c;DataLoader就相当于从扑克牌中抽取几张&#xff0c;我们可以规定一次抽取的张数&#xff0c;或者以什么规则进行抽取 DataLoader的使用 查阅官网的文档&#xff0c;主要有这几个参数…

Unity Shader中获取像素点深度信息

1.顶点着色器中对深度进行计算 v2f vert(appdata v) {v2f o;o.pos UnityObjectToClipPos(v.vertex);o.uv TRANSFORM_TEX(v.uv, _MainTex);o.depth (o.pos.z / o.pos.w 1.0) * 0.5; // Normalize depth to [0, 1]return o; }但是达不到预期&#xff0c;最后返回的值一直大于…

SpringMVC响应数据

三、SpringMVC响应数据 3.1 handler方法分析 理解handler方法的作用和组成&#xff1a; /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为handler* TODO: handler需要使用RequestMapping/GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!* TODO: ha…

数据挖掘实战-基于深度学习RNN+CNN的能源价格预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…