机器学习入门(第六天)——支持向量机(升维打击)

news2024/11/14 14:13:32

Support vector machines

知识树

Knowledge tree

苹果表示重点

间隔:使用了几何间隔,保证w b的度量,感知机则是函数间隔

间隔最大化思想:则是支持向量机的独有,这使得它找到最优超平面

核函数:面试当中可能会问到是否能写出其中的一个核函数

红豆绿豆的前世今生

前面章节讲到划分超平面,来区分红豆和绿豆

从上面可以看到,能找到很多的超平面,黄色的线,那哪条黄色的线才是最好的呢?当然是对角的黄色线,因为这条可以让红豆绿豆区分的最开,也就是线和豆的距离最远,即使区分新的豆(预测集),也能最好的区分开,因为可能豆有接近的情况。

如何找到最优的超平面

从上图可知,超平面A是最优的。因为它与两个类的距离都足够大。

结论:我们试图找到一个超平面,这个超平面可以使得与它最近的样本点的距离必须大于其他所有超平面划分时与最近的样本点的距离。

在SVM中,这叫间隔最大化。

即该超平面与最近的样本点的距离,都大于所有超平面离最近样本点的距离

此时我们可以说,我们找到了最优的超平面,但随着时代的变迁,红豆绿豆也发生了变化,比如下图的

它不再是左右分开,而是混在一起

单纯用线性无法解决,如果是非线性呢?

我们需要找到这么个圈的超平面,那么圈能是超平面呢?

如上图,原本二维空间的样本,因为线性不可分, 即需要投射到三维空间,那么在三维空间就能用超平面切分。

再将三维空间的超平面投射到二维空间,那么超平面在二维空间上就是曲线的,即非线性。

那么接下来,我们要考虑的是,怎么进行低维和高维之间的转换。

升维可分问题

  1. 当有人拿着棍子指着你时,你只能看到棍子的横截面,是一个点,它是一维的。我们无法将两个点区分开来。因为她们重叠了。

    右边红色线表示看的方向

  2. 当有人拿着棍子指着其它地方,我们能看到整个棍子,这时候是二维的。我们可以一把刀劈开,把红豆和绿豆区分开。所以,红豆和绿豆虽然在一维的时候不能分开,但在二维时线性可分了。

  3. 也可能二维不可分, 如下图

  4. 这时候我们可以把棍子看作三维中的棍子,有体积的。如果把棍子立在地上,很有可能红豆靠南侧,绿豆靠北侧,我们像劈柴一样从上至下即可劈开(分开),也一样是线性可分。

  5. 如果三维还不能线性可分,那就升到思维

总会从某一个维度开始,它变成线性可分了,即只要不断的增加维度(特征)总能区分开来

同时,我们发现高维中的超平面,映射到低维空间中时,可能会变成曲线或其它的划分形式。

这也就是为什么,在SVM中我们同样使用超平面来划分,SVM可以划分非线性的数据集。

它本质上仍然是线性超平面,不过是高维中的线性超平面。

那么升维一定会线性可分吗?

会不会升到无穷维了仍然线性不可分?

答案是不会的,首先要明白,我们的数据集一定是基于真实的某种分布,分为A类的样本和B类的一定在本质上有区别。只要有区别,就一定可以区分开来,一定在某个高维度上线性可分。

另外,总能上升到有个维度空间中线性可分,无限上升的同时有没有可能在N+1维度又不可分了?

不会,随着维度的上升,我们获得的信息越来越多。当第N维的数据已经足够划分时,更多的信息量并不会出现又不可分的情况。

总结

Summarization

  1. SVM使用间隔最大化思想构造最优超平面。

  2. 构造出来的超平面使得其与最近的点的距离最大。

  3. SVM也可划分非线性数据集。

  4. 它通过高维中的线性超平面再低维中的投影来完成非线性的划分。因此从直观上来讲,我们的模型必定有一个升维的操作。

  5. 这是总体的概念。

支持向量机

Support vector machines

函数间隔:

几何间隔:

这里使用的是几何间隔,前面讲到这里就不重复了

最大间隔分离超平面:

目前讲的是线性超平面

图中心,虚线到实线的距离我们称之为γ,我们要做的是最大化γ,使得这个超平面调整为γ的一个最大值,等价于找到了最优的超平面

式子如下:

γ:表示几何间隔

s.t. 表示约束

yi:正负1。保证算出来的数始终是大于0的,如上图中“圈”表示+1的样本“×”表示负一的样本,那么某个“圈”是正数,乘以上方的yi(正数),正正得正,某个点“×”是负数,乘以下方的yi(负数),负负得正。

 

进行推导

2.求minL(w,b,α)对α的极大,即是对偶问题

3.求max转换成min:

接下来就是求解α的问题了,但是我们还得解决另外的一个问题

 

软间隔最大化

Maximum soft interval

目前的问题:

式子中间有xi核xj的点积

例如在手写数字数据集中,训练集有6万个样本,6万乘6万勉强能接受

但如果每个样本有784维,6万样本两两做点积,是非常慢的。如果x是更高的维度呢?

梳理一下:

  1. 由于公式的需要,我们需要计算xi和xj的点积

  2. 此外,我们需要将样本映射到高维去,加入映射函数ø(x),那么ø(xi)和ø(xj)的维度数目进一步扩大,它们的点积会让运算变得极其复杂

  3. 我们希望存在一个函数K(xi,yi)=ø(xi)×ø(xj),但函数K的计算方式更简单。也就是说,我们将样本通过函数升维得到ø(xi)和ø(xj),接下来要计算它们的点积,能不能有个简单的计算公式,计算出来的结果和ø(xi)×ø(xj)一样?那样我们就不用再去算ø(xi)和ø(xj)的结果了,直接用简单方式计算不是更好吗?

这个简便方式,就是核函数

在SVM中,我们通常使用高斯核:

在计算x和z的点积时,直接用这个公式替代就好了

序列最小最优化算法(SMO)

Sequetial minimal optimization

之前我们还剩下α求解,我们用SMO

我们最后求解出来的α,一定是让整个结果满足KKT条件的。如果不满足,那一定不是最优解。

所以我们可以不断地调整α的值,直到所有α都满足KKT条件,这是我们一定能得到最优解。

怎么调整呢?——用SMO

假设整个式子中有N个α(α1,α2,α3,...,αN),先固定其它α,找α1,先让α1满足KKT条件。但如果固定除α1以外的所有α,等于也固定了α1.

整理如下:

总结

Summary

  1. SVM首先从最大间隔出发,设计了可构造最优超平面的线性模型。

  2. 考虑到存在噪音或有部分点让人很为难,添加了软间隔。变成了具有软间隔功能的线性模型。

  3. 通过对数据的升维,使得模型变成了非线性。可以用于非线性数据集。

  4. 升维后无穷维的点积运算难以实现,引入了核函数简化运算。

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

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

相关文章

什么是软阈值,硬阈值,软聚类,硬聚类!!软和硬指的是什么呢?详细解释看这里!!!

文章目录 一、软阈值和硬阈值的基本概念和区别二、软聚类和硬聚类的详细概念和区别 一、软阈值和硬阈值的基本概念和区别 在我所研究的领域中,经常出现小波降噪,就拿小波降噪举例子吧!! 在信号处理中,小波降噪是一种…

解析编程中的技术迷题:常见挑战与应对策略

前言 在数字化时代的浪潮中,编程已经成为了一项至关重要的技能。无论是在软件开发、数据分析、人工智能还是互联网领域,编程都扮演着不可或缺的角色。作为一种创造性的活动,编程不仅仅是代码的书写,更是一种解决问题和创新的思维方…

数据结构(六):堆介绍及面试常考算法

一、堆介绍 1、定义 堆是一种图的树形结构,被用于实现“优先队列”(priority queues)。优先队列是一种数据结构,可以自由添加数据,但取出数据时要从最小值开始按顺序取出。在堆的树形结构中,各个顶点被称…

web:ics-05(本地文件包含漏洞、preg_replace函数/e漏洞、php伪协议读取文件)

题目 打开页面显示如下 只有这个页面能打开 显示如下 用dirsearch扫一下 查看了一下,发现没什么用 查看页面源代码 返回了,写入的参数,猜测可能有文件包含漏洞 用php伪协议读取文件 构造payload ?pagephp://filter/readconvert.base64-en…

java源码-流程控制

1、Java流程控制 主要涉及三大流程控制:顺序、分支、循环 如下图: 1)流程2 存在对用户名和密码的校验,是否为空,存在分支控制 2)流程3 用户名和密码在数据库是否存在,存在分支控制 3&#xff0…

深入了解Java8新特性-日期时间API之TemporalAdjusters与TemporalAdjuster

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概10000多字,预计阅读时间长需要10分钟。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&…

Linux基础操作二:Linux系统介绍

1、系统启动过程 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。运行 init。系统初始化。建立终端 。用户登录系统。 1.1、内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中…

六、shell编程

详见 《shell编程超详细入门教程》

enum枚举类 - Java

枚举类 一、引入二、介绍三、实现方式1、 自定义类实现枚举小结 2、 enum关键字实现枚举 四、使用enum注意事项五、练习六、enum常用方法七、练习八、enum和接口 一、引入 要求创建季节(Season)对象,请设计并完成。 传统方法: public class Enumerati…

【秒懂JDK,JRE,JVM的关系】

🌠作者:TheMythWS. 🎇座右铭:不走心的努力都是在敷衍自己,让自己所做的选择,熠熠发光。 ​ JDK与JRE与JVM的关系 先用一张图来直观感受JDK JRE JVM之间的关系: JDK与JRE的关系 先说JDK和JRE…

绩效考核管理项目|记录2

给界面添加筛选条件并且把搜索功能实现 这段代码写入搜索方法里面就能实现功能。 private void bingdgv(){//筛选项:用户名、职位代码、是否辞职string userName txtUserName.Text.Trim();int baseTypeId (int)base_cbx.SelectedValue;bool isStop isdel_ckb.Che…

Loki安装部署

Loki安装部署 1、Loki介绍 Loki 是受 Prometheus 启发由 Grafana Labs 团队开源的水平可扩展,高度可用的多租户日志聚合系统。开发语 言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为索引,而不是对全文进行检索&…

人工智能“排头兵”,探访福州多地 AI 智算实践

生成式 AI 在 2023 年再次引爆 IT 技术发展,福建作为数字中国的重要策源地,也是国家数字经济创新发展试验区,在人工智能方面拥有良好的产业基础和人才优势,同时近期出台的《福建省促进人工智能产业发展十条措施》,为福…

基于web的舞蹈选课管理系统设计与实现

基于web的舞蹈选课管理系统的设计与实现 摘 要 现如今,学生网上选课越来越便利,但是大多数在线下教育机构工作的教务人员,在进行教务管理的时候,并没有完全采用信息化管理。随着选择线下教育机构的人数不断增加,人工…

jQuery和JavaScript的区别

一、比较原生js和jQuery的区别 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title…

np.random.uniform() 采样得到的是一个高维立方体,而不是球体,为什么?

在代码中&#xff0c;采样是通过以下方式完成的&#xff1a; samples self.center np.random.uniform(-self.radius, self.radius, (num_samples, len(self.center))) 这里&#xff0c;np.random.uniform函数在每个维度独立地生成了一个介于-self.radius和self.radius之间的…

沉默是金,寡言为贵

​ 佛说&#xff1a;“人受一句话&#xff0c;佛受一柱香。”佛教的十善&#xff0c;其中有关口德就占了四样&#xff1a;恶口、妄语、两舌、绮语&#xff0c;可见口德是很重要的。言为心声&#xff0c;能说出真心的话&#xff0c;必然好听&#xff1b;假如说话言不由衷&#x…

Vue路由跳转页面刷新

案例使用映射路由 百度的时候各种操作就是没有注意keepAlive&#xff0c;发现那个为缓存开启之后前端有个小后台Vue生命周期函数失效。同一个页面刷新时这个keep Alive需要关闭。

热部署怎么部署

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言操作流程&#xff1a;在这里插入图片描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a832d83c091742eda9d9325931a89df4.png) 这里的跟上面的…

vue3+vite 批量引入局部组件及使用

目录结构 批量引入组件 例如&#xff1a;src/views/oss/components/customComponents.ts import { ref, defineAsyncComponent, markRaw } from vue;const modules import.meta.glob(./*.vue);//这告诉 TypeScript&#xff0c;components.value 是一个键为字符串、值为 define…