当前位置: 首页 > news >正文

Python机器学习:支持向量机

这是我读本科的时候第一个接触到的机器学习算法,但也是第一个听完就忘的。。。

他的基本思想很简单:想办法把一个样本集划成两个部分:对于空间中的样本点集合,我们找到一个超平面把这个样本点集合给分成两个部分,其中一部分是正类,另一部分是反(负)类,支持向量机的优化目标就是找到一个超平面,使得空间中距离超平面最近的点到超平面的几何间距尽可能大,这些点就被称为支持向量。

首先得了解几个概念:

一、最大间隔和超平面:

和之前的一样,我们给定一个样本集合D=\left\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\right\}然后设定:y_i\in \left\{-1,+1\right\},设输入空间中的一个超平面为:

\omega^T x+b=0

其中,\omega是超平面的法向量,b为偏置,决定超平面的位置,根据点到直线的距离公式的扩展,空间中一点x_i到超平面\omega^T x+b=0的欧氏距离为:

r_i=\frac{|\omega^Tx+b|}{||\omega||}

 如果超平面可以把所有样本点分成两类,那实际上, 点x_i到超平面\omega^T x+b=0的欧氏距离就是一个分段函数:

\left\{\begin{matrix} r_i=\frac{|\omega^T+b|}{||\omega||}y_i=+1 & \\ r_i=-\frac{|\omega^T+b|}{||\omega||}y_i=-1 & \end{matrix}\right.

 好了,基本上把最大间隔和超平面给了解清楚了,说白了,就是,emm,我画个图来展示一下:

图1:简单示例

 

 其实这个就是个很简单的东西,第四张可看可不看,主要是前三张图片,第一张是y1=sin(x)

第二张是y2=cos(x*pi/2),第三张是y3=y1+y2,那也就是说,怎么样才能从第三张图中把y1和y2给分离出来呢,学信号的同学这不就来精神了吗,那不就是,对吧,我直接一个傅里叶变换从时空域变到频率域,这不就很简单的能分开了嘛,so easy对吧,可是,这里,咱说的是支持向量机,也就是说,我们得用支持向量机的观点来给他把(x,y1)和(x,y2)这两个信号分开,怎么分开,我暂时就想了上面提到的变换到频率域去解决,当然,学信号的人会想到用滤波器或者其他方法,总之,有很多,但是具体怎么做呢,大家可以自己去试试,找找文献或者技术资料,来看看信号的分离或者是信号去噪这方面的,我只知道,方法很多。

二、线性可分支持向量机

QAQ,这个概念就要两页多,因为小学抄古诗抄怕了,我是真不喜欢抄书,,但是,抄吧,首先看一下他的目标是啥:通过求解\omega和b,找到一个超平面,在保证这个超平面能偶正确将样本进行分类的同时,要使距离超平面最近的点到超平面的距离尽可能的大,说白了就是一个带约束条件的优化问题,其约束条件就是超平面可以把样本集合的点都给正确分类喽。

我们把距离超平面最近的点和超平面之间的距离记为r=min{ r_i} ,i=1,2,\cdots,m

最优化问题就是:

max \left\{ r\right\}

s.t, r_i=\frac{\omega^T+b}{||\omega||}y_i\geqslant r ,i=1,2,\cdots,m

我们可以对任一支持向量x^*通过对超平面公式进行缩放,使得

(\omega ^T x^*+b)y^*=1

然后x^*到超平面的距离就是\frac{1}{||\omega||},优化问题就能够写成

max \left\{ \frac{1}{||\omega||}\right\}

s.t, r_i=\frac{\omega^T+b}{||\omega||}y_i\geqslant \frac{1}{||\omega||} ,i=1,2,\cdots,m

最大化\frac{1}{||\omega||},也就是最小化\frac{1}{2}||\omega||^2,这里我用后者作为优化目标,就让你的计算可以方便了很多。 

数学上是完全可以证明,支持向量机的超平面存在着唯一性,至少有两个支持向量,而且超平面的位置仅由这些支持向量决定。

再感知机的模型中,优化的目标很明确:

在满足模型能够正确分类的约束条件下,使得样本集合中所有点到分割超平面的距离最小,这样的超平面可能会有无数个。

然后,怎么求上面给出的最优化问题嘞?可以用拉格朗日乘子法来求解:

Lag(\omega,b,\alpha)=\frac{1}{2}\left | \left | \omega \right | \right |^2+\sum_{i=1}^m\alpha_i(1-(\omega^T x_i+b)y_i),\alpha=(\alpha_1,\alpha_2,\cdots,\alpha_m)

\alpha_i\geqslant 0表示拉格朗日乘子,让lag函数对omega和b求偏导为零,然后计算就可以啦,详细的我就不写了,大家可以自己推一推,我也在纸上推一推,就不写latex了,嘿嘿。

相关文章:

Python机器学习:支持向量机

这是我读本科的时候第一个接触到的机器学习算法,但也是第一个听完就忘的。。。 他的基本思想很简单:想办法把一个样本集划成两个部分:对于空间中的样本点集合,我们找到一个超平面把这个样本点集合给分成两个部分,其中…...

矩阵和线性代数的应用

矩阵和线性代数是数学中重要的概念,它们被广泛应用于物理、工程、计算机科学、经济学等众多领域。本文将讨论矩阵和线性代数的一些基本概念以及它们在实际应用中的重要性和影响。 一、矩阵和线性代数的基本概念 矩阵是由数字组成的矩形数组。它可以表示线性方程组…...

六:内存回收

内存回收: 应用程序通过 malloc 函数申请内存的时候,实际上申请的是虚拟内存,此时并不会分配物理内存。 当应用程序读写了这块虚拟内存,CPU 就会去访问这个虚拟内存, 这时会发现这个虚拟内存没有映射到物理内存&…...

【cpolar 内网穿透】Openwrt 软路由实现内网穿透

cpolar 是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网。使得公网用户可以正常访问内网服务。 文章目录 前言一、上传 cpolar 安装包二、配置cpolar环境变量三、安装并配置 cpolar 服务3.1 安装 cpolar3.2 启动 cpolar3.3 进行其他配置 …...

Android 10.0 Camera2 拍照功能默认选前摄像头

1.概述 在10.0的系统产品开发中,对于app调用系统api来打开摄像头拍照的功能也是常有的功能,而拍照一般是默认打开后置摄像头拍照的,由于 客户的产品特殊要求,需要打开前置摄像头拍照功能,所以需要了解拍照功能的流程,然后修改默认前置摄像头打开拍照功能就可以了 app调…...

vue-vue2和vue3的diff算法

核心要点 数据变化时,vue如何更新节点虚拟DOM 和 真实DOM 的区别vue2 diff 算法vue3 diff 算法 一、 数据变化时,vue如何更新节点 首先渲染真实DOM的开销是很大,比如有时候我们修改了某个数据且修改的数据量很大时,此时会频繁的…...

一文解读基于PaddleSeg的钢筋长度超限监控方案

项目背景 钢铁厂生产钢筋的过程中会存在部分钢筋长度超限的问题,如果不进行处理,容易造成机械臂损伤。因此,需要通过质检流程,筛选出存在长度超限问题的钢筋批次,并进行预警。传统的处理方式是人工核查,该方…...

NumPy 数组学习手册:1~5

原文:Learning NumPy Array 协议:CC BY-NC-SA 4.0 译者:飞龙 一、NumPy 入门 让我们开始吧。 我们将在不同的操作系统上安装 NumPy 和相关软件,并查看一些使用 NumPy 的简单代码。 正如“序言”所述,SciPy 与 NumPy 密…...

【C++11】晦涩难懂语法系列:可变参数模板

目录 可变参数模板 1.1 概念 1.2 可变参数模板定义 1.3 参数包的展开方式 1.3.1 递归展开参数包 1.3.2 逗号表达式展开参数包 1.4 STL的emplace系列函数 可变参数模板 1.1 概念 在C语言阶段,我们已经接触过可变参数,比如scand、printf等等 这里…...

计算机组成原理第二章——数据的表示与运算(下)

提示:时光清浅处 一步一安然 文章目录 前言2.3.1 浮点数的表示2.3.2 IEEE7542.2.3 浮点数的运算 前言 本节主要讲三个问题,浮点数的表示,IEEE 754标准,浮点数的加减运算 2.3.1 浮点数的表示 浮点数的作用和基本原理 定点数可表…...

1.mybatis-plus入门及使用

1.什么是MybatisPlus MyBatis-Plus 官网 为什么要学MybatisPlus? MybatisPlus可以节省大量时间,所有的CRUD代码都可以自动化完成MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效…...

JavaWeb开发 —— 前端工程化

目录 一、前后端分离开发 二、YApi 三、前端工程化 1. 环境准备:vue-cli 2. Vue项目创建 四、Vue项目开发流程 一、前后端分离开发 ① 最早的前端开发就是实现页面,顶多再写写JS让页面可以有交互的特效。属于前后端未分离的时代。 早期前后端混合开…...

listener监听器框架

监听器是Web开发中常用的一种组件,用于监听某些事件并根据事件触发相应的处理逻辑。在Spring Boot中使用监听器可以方便地实现对程序中各种事件的监听,比如启动事件、关闭事件等。 首先需要定义一个监听器,通常需要实现ApplicationListener接…...

tp5实现导入excel表到数据库

hello,大家好,好长时间没有更新文章了。最近一直在忙着做项目。所以断更了。 那么好,各位老铁是否想要实现导入导出的功能 请关注我,解密如何实现导入导出, 那么今天先来讲一下用thinkphp5.0 如何实现Excel表格导入数据…...

Python基础-04 字符串

字符串的表示方式 在Python中,可以使用一对单引号/双引号或者一对三个双引号/一对三个单引号表示字符串 a hello b "hello" c hello d """hello""" # 如果字符串里面还有双引号,外面就可以使用单引号 # 反之一样 # 如果字符串里…...

VVC之编码结构

VVC之编码结构(新一代通用视频编码的读书笔记) 缩写概述EncAppmain函数解读 缩写 缩写含义CVSCoded Video Sequence, 编码视频序列IRAPIntra Random Access Point, 帧内随机接入点GDRGradual Decoding Refresh, 逐渐解码刷新AUAccess Unit, 访问单元PUP…...

FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案4、vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取 1、前言 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代…...

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细 一 Redis的主从复制二 主从复制的作用三 主从复制的流程四 主从复制实验4.1 环境部署4.2 安装Redis(主从服务器)4.3 修改Master节点Redis配置文件 (192.168.163.100)4.4 修改Slave节点Redis配置…...

整柜海运到美国的规格和收费标准是什么

整柜海运是指将所有货物安装在一个整箱内,由发货人和收货人共同操作,而目的港的收货人一般只有一个,方便操作。整柜海运到美国的主要流程有以下几个步骤:订舱、装柜、报关、海运、清关、提柜和送货。实际上,国际物流出…...

Session和Cookie区别介绍+面试题

Session 会话: 对应的英文单词:session用户打开浏览器,进行一系列操作,然后关闭浏览器。整个过程叫做一次会话一个会话包含多次请求 session机制属于B/S结构的一部分,主要的作用就是为了保存会话状态。(用户登录成功后…...

easyx

普通的画线图什么的 首先我们需要安装一个easyx的图形库&#xff0c;然后把头文件搞出来 #include <stdio.h> #include <easyx.h>//easyx画线啥啥的图形库 #include <graphics.h> #include <math.h> #include <conio.h>//键盘操作的头文件 设…...

记一次科学

华为云与Centos8 华为云99元Hongkong的服务器&#xff1a;1M&#xff0c;1C&#xff0c;2G&#xff0c;40G&#xff0c;自带不可更改的Centos 8.2 64bit 华为yum源不可以&#xff0c;网上找了可用的CentOS8 官方源不支持后配置yum源 # 备份 mv /etc/yum.repos.d/CentOS-Base…...

亚马逊被人差评了怎么办?

第一种&#xff1a; 也是最简单的做法就是通过电话或者邮件联系留差评的买家&#xff0c;大致意思就是按照货值的2-3倍作为赔偿&#xff0c;能不能把差评给删了 赔偿一个普通产品2-3倍的价格比起找服务商删一个差评几百到一千不等可以说是绰绰有余了&#xff0c;碰到那种愿意…...

【目标检测】YOLOv5:修改自己的网络结构

前言 YOLOv5就像一座金矿&#xff0c;里面有无数可以学习的东西。之前的博文一直将YOLOv5当作一个黑盒使用&#xff0c;只考虑模型的输入和输出&#xff0c;以此来对模型进行二次开发。 本篇博文将更近一层&#xff0c;深入到“金矿”内部&#xff0c;来尝试对模型结构进行替换…...

spring boot 工程整合mongodb,遇到的坑

首先说一下背景&#xff0c;因为其他的一个web工程有使用mongo&#xff0c;我想着给另外一个工程把mongo也加过来吧。也是最近做一个发送 丘比特信 的需求&#xff0c;觉得这个信应该是存到 mongodb。结果拿过来遇到了很大的坑&#xff0c;也是对版本对原理不了解吧。 下面介…...

防抖函数(最全 最干净 最好理解)

1.应用场景 1.input输入框 输入远程查询 2.邮箱&#xff0c;手机号验证&#xff0c;用户名验证 3.resize等高评率场景 2.解决问题 高频场景带来的重复渲染 等问题 多次操作 只在操作结束后再执行操作函数 3.具体实现 3.1this问题&#xff08;因为settimeout是window的对…...

王小川,才是深「爱」李彦宏的那个人?

在推出中国首个类ChatGPT产品「文心一言」后&#xff0c;李彦宏在接受专访时断言&#xff0c;中国基本不会再出一个OpenAI了&#xff0c;「创业公司重新做一个ChatGPT其实没有多大意义&#xff0c;基于大语言模型开发应用机会很大&#xff0c;没有必要再重新发明一遍轮子。」 听…...

南京邮电大学通达学院2023《电子装配实习》报告

南京邮电大学通达学院2023《电子装配实习》报告 一 声明二 题目/实习报告提示三 例答 红笺寄 休遣玉人知 ——赠nmy 一 声明 南京邮电大学通达学院2023《电子装配实习》报告 答案更新时间:2023.04.10&#xff0c;已更新完成&#xff0c;如无错误不在更新 由于作者解答能力有限…...

Linux--tty

Linux 终端(TTY) TTY 是 Teletype 或 Teletypewriter 的缩写&#xff0c;原来是指电传打字机&#xff0c;后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器&#xff0c;都是作为计算机的终端设备存在的&#xff0c;所以 TTY 也泛指计算机的终端(terminal)设…...

一位女程序员的自述:我是如何成为前端工程师的

今天&#xff0c;我想和大家分享一下我的职场经历&#xff1a;我是如何成为一名前端工程师的&#xff0c;以及我为什么会选择这个职业。此外&#xff0c;大家比较关心的是我们为什么要出国工作呢&#xff1f;也是想给自己的职业生涯做一个阶段性的总结&#xff0c;尤其是作为一…...