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

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.mzph.cn/news/187152.shtml

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

相关文章

防火墙补充NAT

目录 1.iptables保存规则 2.自定义链 3.NAT NAT的实现分为下面类型&#xff1a; SNAT实验操作 DNAT实验操作 1.iptables保存规则 永久保存方法一&#xff1a; iptables -save > /data/iptables_rule //输出重定向备份 iptables -restore < /data/iptables_r…

Windows安装Kafka3.6,单机

Kafka版本&#xff1a;kafka_2.13-3.6.0 Windows10系统 安装与配置 下载 kafka_2.13-3.6.0.tgz 下载并解压Kafka 3.6.0的压缩包到你选择的目录。 Kafka3.6.0下载链接https://kafka.apache.org/downloads 说明&#xff1a;Kafka3.6内置了Zookeeper&#xff0c;使用内置的Zo…

Ps:用好钢笔工具

使用钢笔工具时&#xff0c;应随时注意鼠标指针的形状。 ◆ ◆ ◆ 基本操作方法 1、绘制闭合路径 路径绘制结束时回到起点即可创建闭合路径。 2、绘制开放路径 想结束绘制时&#xff0c;按住 Ctrl 键点击画布空白处&#xff0c;或者&#xff0c;直接按 Esc 键&#xff0c;即可…

传统算法: Pygame 实现快速排序

使用 Pygame 模块实现了快速排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过快速排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序选择一个基准元素(pivot),将数组分成两部分,…

腾讯云手动下发指令到设备-用于设备调试

打开腾讯云API Explorer&#xff0c;Publish Msg https://console.cloud.tencent.com/api/explorer?Productiotcloud&Version2021-04-08&ActionPublishMessagehttps://console.cloud.tencent.com/api/explorer?Productiotcloud&Version2021-04-08&ActionPub…

C#图像处理OpenCV开发指南(CVStar,04)——图片像素访问与多种局部放大效果的实现代码

​​​​​​​ 使用本文代码需要预先设置一点开发环境&#xff0c;请阅读另外一篇博文&#xff1a; C#图像处理OpenCV开发指南&#xff08;CVStar&#xff0c;03&#xff09;——基于.NET 6的图像处理桌面程序开发实践第一步https://blog.csdn.net/beijinghorn/article/deta…

RocketMQ-RocketMQ快速实战及集群原理

一、MQ简介 ​ MQ&#xff1a;MessageQueue&#xff0c;消息队列。是在互联网中使用非常广泛的一系列服务中间件。 这个词可以分两个部分来看&#xff0c;一是Message&#xff1a;消息。消息是在不同进程之间传递的数据。这些进程可以部署在同一台机器上&#xff0c;也可以分布…

element-ui表格滚动效果,el-table滚动条样式重置

项目首页需要展示一个表格滚动区域&#xff0c;特此来记录一下 HTML <div class"table-box" mouseenter"mouseenter" mouseleave"mouseleave"><el-table :data"tableList" border height"400px" v-loading"…

web前端开发简介及门槛、学习路线

1. 什么是web&#xff1f; Web是 world wide web,万维网,广域网,互联网 Web可以理解是网站 2. 什么网站和网页&#xff1f; 网站是由多个网页和其他文件组成的 3. 什么是web的前端和后端&#xff1f; 4.网页的组成&#xff1a; html: 在网页中真实存在的,例如: 文本,输入…

编程之外,生活的美好航程

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

回顾Django的第二天

1.http 1.1http请求协议与响应协议 1.1.1简介 http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身…

使用JAVA语言写一个排队叫号的小程序

以下是一个简单的排队叫号的小程序&#xff0c;使用JAVA语言实现。 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class NumberingSystem {public static void main(String[] args) {Queue<String> queue new LinkedList<…

PCB布线为什么不能走直角或锐角-笔记

PCB布线为什么不能走直角或锐角-笔记 摘要一.PCB走线在直角转弯的地方&#xff0c;信号前后部分相互影响这几个理由我们来一一分析一下传输线的直角带来的寄生电容从阻抗的角度来看直角的尖角产生放电或者电磁辐射走线直角的工艺问题 摘要 有一定熟悉画过PCB板的人或者PCB教学…

Linux常用命令——mv命令

文章目录 1. 简介2. 命令格式3. 主要参数4. 常见用法及示例4.1 移动文件4.2 重命名文件4.3 交互式移动文件4.4 强制移动文件4.5 移动多个文件4.6 使用通配符移动文件 5. 注意事项6. 结论 1. 简介 mv 命令在Linux系统中用于移动文件或目录&#xff0c;同时也可以用于重命名文件…

Ubuntu Server 20.04.6下Anaconda3安装Pytorch

环境 Ubuntu 20.04.6 LTS Anaconda3-2023.09-0-Linux-x86_64.sh conda 23.7.4 Pytorch 1.11.0 安装 先创建一个工作环境&#xff0c;环境名叫lia&#xff1a; conda create -n lia python3.8环境的使用方法如下&#xff1a; conda activate lia # 激活环境 conda deactiv…

Linux:docker的数据管理(6)

数据管理操作*方便查看容器内产生的数据 *多容器间实现数据共享 两种管理方式数据卷 数据卷容器 1.数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中&#xff0c;可将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改操作立刻可见&#xff0c;并且更新数…

Springboot快速整合kafka

kafka的基本了解 kafka也是 目前常用的消息中间件,支持同步与异步通信,和rabbitmq一样,工作模式大概相同,并且被spingboot整合的后的都是 中间件Template的实列化客户端类 ,消费者监听注解为KafkaListener,和RabbitListener和很相似,这些消息中间件使用过后,发现大致都是相同的…

基于AT89C51单片机的节日彩灯门设计

1&#xff0e;设计任务 本设计采用单片机为主控芯片&#xff0c;结合外围电路组成彩灯门的控制系统器&#xff0c;用来控制16个彩色的LED发光&#xff0c;实现彩色亮点的循环移动&#xff1b;通过软件编程实现各种各样的彩色亮点平面循环移动&#xff0c;该彩色控制器可以通过输…

IDE1007:当前上下文中不存在名称“xxx“

这种在Halcon中直接导出的代码不能直接放程序中&#xff0c;应该在控件中比如一个按钮中&#xff0c;就不会出错了。

单片机学习12——电容

电容的作用&#xff1a; 1&#xff09;降压作用&#xff1a; 容抗&#xff1a; Xc 1/2fc 串联分压原理。2100Ω的容量&#xff0c;50Hz的频率&#xff0c;可以得到1.5uF。断电之后&#xff0c;需要串联一个1MΩ的电阻放电。 那是不是可以使用2100欧姆的电阻来代替电容呢&am…