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

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.mfbz.cn/a/205118.html

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

相关文章

搭建测试平台开发(一):Django基本配置与项目创建

一、安装Django最新版本 1 pip install django二、创建Django项目 首先进入要存放项目的目录,再执行创建项目的命令 1 django-admin startproject testplatform三、Django项目目录详解 1 testplatform 2 ├── testplatform  # 项目的容器 3 │ ├── …

系统频繁崩溃,如何考虑系统的稳定性和可扩展性?

最近网传互联网应用信息系统频繁崩溃,语雀崩完淘宝崩,淘宝崩完滴滴崩,随着业务的发展和技术的进步,对于信息系统的要求也越来越高。信息应用系统为了满足不断增长的用户和业务需求,提高系统的稳定性和扩展性至关重要。…

Java SpringBoot Controller常见写法

文章目录 环境Controller调用脚本运行结果总结 环境 系统: windows 11 工具: java, idea, git bash Controller 接口常见有以下几种方式 其中: Tobj 调用脚本 我的是windows 系统,使用 git bash 窗口运行, 用 cmd 或者 power shell 会有问题 curl …

交叉编译 和 软硬链接 的初识(面试重点)

目录 交叉编译的初认识Q&A Q1: 编译是什么? Q2: 交叉编译是什么? Q3: 为什么要交叉编译 Q3.1:树莓派相对于C51大得多,可以集成编译器比如gcc,那么树莓派就不需要交叉编译了吗? Q4: 什么是宿主机和…

STM32---时钟树

写在前面:一个 MCU 越复杂,时钟系统也会相应地变得复杂,如 STM32F1 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就 可以解决一切。对于 STM32F1 系列的芯片,其有多个时钟源,构成了一个庞大的是时…

一个软件测试练手项目——学生信息管理系统测试,卷起来啊

免费分享一个练手项目,学生信息管理系统,获取方式在文末 1.引言 1.1项目目的 软件测试是为了在软件投入生产性运行之前,尽可能多地发现软件的错误。该项目的目的是给学习软件测试的朋友练手用 1.2 项目背景 随着学校的规模不断扩大&…

技巧-GPU显存和利用率如何提高和batch_size/num_works等参数的实验测试

目录 简介实验测试显存占用问题GPU占用率波动问题num_work不是越大越好 总结 本专栏为深度学习的一些技巧,方法和实验测试,偏向于实际应用,后续不断更新,感兴趣童鞋可关,方便后续推送 简介 在PyTorch中使用多个GPU进行模型训练时,各个参数和指标之间存在一定的关系…

安防视频监控/磁盘阵列/集中云存储平台EasyCVR设备录像保活不生效原因是什么?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

18、串口通信

串口介绍 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机,单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围&…

Linux基础操作三:Linux操作命令-目录文件操作

1、关机和重启 关机shutdown -h now 立刻关机shutdown -h 5 5分钟后关机poweroff 立刻关机 重启shutdown -r now 立刻重启shutdown -r 5 5分钟后重启reboot 立刻重启 2、帮助 --help命令shutdown --help:…

MySQL表的查询、更新、删除

查询 全列查询 指定列查询 查询字段并添加自定义表达式 自定义表达式重命名 查询指定列并去重 select distinct 列名 from 表名 where条件 查询列数据为null的 null与 (空串)是不同的! 附:一般null不参与查询。 查询列数据不为null的 查询某列数据指定…

【JUC】十九、volatile与内存屏障

文章目录 1、volatile的两大特性2、volatile的四大内存屏障3、分类4、happens-before之volatile变量重排规则5、读写屏障插入策略 1、volatile的两大特性 被volatile修饰的变量有两大特点: 可见性有序性 关于volatile的可见性,也即volatile的内存语义…

线性回归 调试方法

调试方法 特征缩放 对于某些不具有比较性的样本特征 x i x_i xi​ (比如对其他的x来说 x i x_i xi​ 相当大或者相当小),梯度下降的过程可能会非常漫长,并且可能来回波动才能最后收敛到全局的最小值。 在这样的情况下&#xff…

8年经验之谈 —— Redis的性能测试与优化!

Redis作为一种高性能的Key-Value数据库,一直受到众多开发者和企业的青睐。然而,在高并发、大数据存储的应用场景中,如何测试并优化Redis的性能,成为了问题。本文将从测试与优化两个方面来讲解如何达到最优的Redis性能。 一、性能…

Android Studio Giraffe版本遇到的问题

背景 上周固态硬盘挂了,恢复数据之后,重新换了新的固态安装了Win11系统,之前安装的是Android Studio 4.x的版本,这次也是趁着新的系统安装新的Android开发工具。 版本如下: 但是打开以前的Android旧项目时&#xff…

Selenium定位元素的方法css和xpath的区别!

selenium是一种自动化测试工具,它可以通过不同的定位方式来识别网页上的元素,如id、name、class、tag、link text、partial link text、css和xpath。 css和xpath是两种常用的定位方式,它们都可以通过元素的属性或者层级关系来定位元素&#…

Python 自动化测试全攻略:五种自动化测试模型实战详解!

随着移动互联网的发展,软件研发模型逐步完善,软件交付质量越来越受到软件公司的重视,软件测试技术特别是自动化测试技术开始在软件系统研发过程中发挥着越来越重要的作用。 与传统的手工测试技术相比,自动化测试具备了良好的可操…

考试复习

选择20道 填空10道 判断10道 简答4-5道 编程题2道 一、选择题 1.js中更改一个input框的值&#xff1a; <input ida type"text" value"123456"> 通过a.value改变他的值 方法&#xff1a; 在script标签中通过id获得该输入框对象&#xff0c;然…

从0到字节跳动30W年薪,我在测试行业“混”的第5个年头····

一些碎碎念 什么都做了&#xff0c;和什么都没做其实是一样的&#xff0c;走出“瞎忙活”的安乐窝&#xff0c;才是避开弯路的最佳路径。希望我的经历能帮助到有需要的朋友。 在测试行业已经混了5个年头了&#xff0c;以前经常听到开发对我说&#xff0c;天天的点点点有意思没…

探索前端设计的新境界——介绍IVueUI工具助力Vue页面设计

在快速发展的前端领域&#xff0c;Vue.js作为一款渐进式JavaScript框架&#xff0c;一直备受开发者喜爱。然而&#xff0c;在Vue前端开发的旅程中&#xff0c;页面设计常常是一个不可避免的挑战。今天&#xff0c;我要向大家介绍一款令Vue前端开发者受益匪浅的工具——www.ivue…
最新文章