支持向量机SVM简述

支持向量机SVM

1、概述

SVM全称是supported vector machine(支持向量机),即寻找到一个超平面使样本分成两类,并且间隔最大。

SVM 模型有3种:

  • 线性可分支持向量机:适用于训练数据线性可分。
  • 线性支持向量机:适用于训练数据近似线性可分,也就是存在一些特异点。
  • 非线性支持向量机:适用于训练数据线性不可分。

2、相关概念

(一)、硬间隔

如果样本线性可分,在所有的样本分类都正确的情况下,寻找最大间隔,这就是硬间隔。如果出现异常值、或者样本不能线性可分,此时硬间隔无法实现。

总结一句,硬间隔是严格的间隔,不允许有任何异常值。

(二)、软间隔和惩罚系数

允许部分样本,在最大间隔之内,甚至在错误的一边,寻找最大间隔,这就是软间隔。目标是尽可能在保持间隔宽阔和限制间隔违例之间找到良好的平衡。

通过惩罚系数C来控制这个平衡:C值越小,则间隔越宽,但是间隔违例也会越多。

(三)、核函数

核函数将原始输入空间映射到新的特征空间,使得原本线性不可分的样本在核空间可分

3、相关原理

样本空间中任何点x到超平面(w,b)的距离可以写成:
d = ∣ W T x + b ∣ ∣ ∣ W ∣ ∣ d=\frac{|W^Tx+b|}{||W||} d=∣∣W∣∣WTx+b
如果要找到间距最大的超平面,也就是要找到满足下式中约束的参数w和b,使得间隔最大。
假设两边宽度都为 1 , y i 指样本属于哪一类 { W T x i + b > = + 1 , y i = + 1 W T x i + b = < − 1 , y i = − 1 假设两边宽度都为1,y_i指样本属于哪一类\\ \begin{cases}W^Tx_i+b>=+1,y_i=+1\\W^Tx_i+b=<-1,y_i=-1\end{cases} 假设两边宽度都为1yi指样本属于哪一类{WTxi+b>=+1,yi=+1WTxi+b=<1,yi=1
距离超平面最近的几个训练样本点使上式等号成立,这些点被称为“支持向量”,两个异类支持向量到超平面的距离之和为:
γ = 2 ∣ ∣ W ∣ ∣ \gamma=\frac{2}{||W||} γ=∣∣W∣∣2
可以根据上述公式将最大间隔表示为:
m a x W , b = 2 ∣ ∣ W ∣ ∣ y i ( W T x i + b ) > = 1 , 其中 i = 1 , 2 , 3 , . . . , n max_{W,b}=\frac{2}{||W||}\\ y_i(W^Tx_i+b)>=1,其中i = 1,2,3,...,n maxW,b=∣∣W∣∣2yi(WTxi+b)>=1,其中i=123...n
对上式进行优化:
m i n W , b = 1 2 ∣ ∣ W ∣ ∣ 2 其中 y i ( W T x i + b ) > = 1 , 其中 i = 1 , 2 , 3 , . . . , n min_{W,b}=\frac{1}{2}||W||^2\\ 其中y_i(W^Tx_i+b)>=1,其中i = 1,2,3,...,n minW,b=21∣∣W2其中yi(WTxi+b)>=1,其中i=123...n
添加核函数,对目标函数进行转换:
m i n W , b = 1 2 ∣ ∣ W ∣ ∣ 2 ∑ i = 1 n ( 1 − y i ( w T ⋅ Φ ( x i ) + b ) ) < = 0 min_{W,b}=\frac{1}{2}||W||^2\\ \sum_{i=1}^n(1-y_i(w^T·\Phi(x_i)+b))<=0 minW,b=21∣∣W2i=1n(1yi(wTΦ(xi)+b))<=0
构建拉格朗日函数,其中αi为拉格朗日乘子。拉格朗日乘子法构建的拉格朗日函数将目标优化函数和优化约束条件放在了一起,从而将带约束的极值问题转换为不带约束极值问题。
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 = ∑ i = 1 n α i ( y i ( w T ⋅ Φ ( x i ) + b ) − 1 ) L(w,b,\alpha)=\frac{1}{2}||w||^2=\sum_{i=1}^n\alpha_i(y_i(w^T·\Phi(x_i)+b)-1) L(w,b,α)=21∣∣w2=i=1nαi(yi(wTΦ(xi)+b)1)
想要对上式求极小值,可以转化为对后式求最大值,转化为对偶问题。

此时就可以利用KKT方式求拉格朗日函数的极值。众所周知,使用拉格朗日乘子法计算不等式约束的极值,结果必须满足3个条件,这就是KKT条件。
∂ L ∂ x = 0 ,拉格朗日函数对变量求导为 0 α i > = 0 ,所有乘子大于等于 0 α i g i ( x ) = 0 ,乘子和约束 ( g i ( x ) 为约束 ) 至少一个为零,互补松弛条件 \frac{\partial L}{\partial x}=0,拉格朗日函数对变量求导为0\\ \alpha_i>=0,所有乘子大于等于0\\ \alpha_ig_i(x)=0,乘子和约束(g_i(x)为约束)至少一个为零,互补松弛条件 xL=0,拉格朗日函数对变量求导为0αi>=0,所有乘子大于等于0αigi(x)=0,乘子和约束(gi(x)为约束)至少一个为零,互补松弛条件
利用上面的特性,对目标式子做偏导:
1 :对 w 求偏导,并令其等于 0 ∂ L ∂ w = w − ∑ i = 1 n α i y i Φ ( x i ) = 0 2 :对 b 求偏导,并令其等于 0 ∂ L ∂ b = ∑ i = 1 n α i y i = 0 1:对w求偏导,并令其等于0\\ \frac{\partial L}{\partial w}=w-\sum_{i=1}^n\alpha_iy_i\Phi(x_i)=0\\ 2:对b求偏导,并令其等于0\\ \frac{\partial L}{\partial b}=\sum_{i=1}^n\alpha_iy_i=0 1:对w求偏导,并令其等于0wL=wi=1nαiyiΦ(xi)=02:对b求偏导,并令其等于0bL=i=1nαiyi=0
求出两个参数偏导后,将结果带入到原式L中
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 = ∑ i = 1 n α i ( y i ( w T ⋅ Φ ( x i ) + b ) − 1 ) = 1 2 w T w − ∑ i = 1 n ( α i y i w T Φ ( x i ) + α i y i b − α i ) = 1 2 w T w − ∑ i = 1 n α i y i w T Φ ( x i ) − ∑ i = 1 n α i y i b + ∑ i = 1 n α i = 1 2 w T w − ∑ i = 1 n α i y i w T Φ ( x i ) + ∑ i = 1 n α i = 1 2 w T ∑ i = 1 n α i y i Φ ( x i ) − w T ∑ i = 1 n α i y i Φ ( x i ) + ∑ i = 1 n α i = ∑ i = 1 n α i − 1 2 ( ∑ i = 1 n α i y i Φ ( x i ) ) T ⋅ ∑ i = 1 n α i y i Φ ( x i ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 m α i α j y i y j Φ T ( x i ) Φ ( x j ) L(w,b,\alpha)=\frac{1}{2}||w||^2=\sum_{i=1}^n\alpha_i(y_i(w^T·\Phi(x_i)+b)-1)\\ =\frac{1}{2}w^Tw-\sum_{i=1}^n(\alpha_iy_iw^T\Phi(x_i)+\alpha_iy_ib-\alpha_i)\\ =\frac{1}{2}w^Tw-\sum_{i=1}^n\alpha_iy_iw^T\Phi(x_i)-\sum_{i=1}^n\alpha_iy_ib+\sum_{i=1}^n\alpha_i\\ =\frac{1}{2}w^Tw-\sum_{i=1}^n\alpha_iy_iw^T\Phi(x_i)+\sum_{i=1}^n\alpha_i\\ =\frac{1}{2}w^T\sum_{i=1}^n\alpha_iy_i\Phi(x_i)-w^T\sum_{i=1}^n\alpha_iy_i\Phi(x_i)+\sum_{i=1}^n\alpha_i\\ =\sum_{i=1}^n\alpha_i-\frac{1}{2}(\sum_{i=1}^n\alpha_iy_i\Phi(x_i))T·\sum_{i=1}^n\alpha_iy_i\Phi(x_i)\\ =\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\Phi^T(x_i)\Phi(x_j) L(w,b,α)=21∣∣w2=i=1nαi(yi(wTΦ(xi)+b)1)=21wTwi=1n(αiyiwTΦ(xi)+αiyibαi)=21wTwi=1nαiyiwTΦ(xi)i=1nαiyib+i=1nαi=21wTwi=1nαiyiwTΦ(xi)+i=1nαi=21wTi=1nαiyiΦ(xi)wTi=1nαiyiΦ(xi)+i=1nαi=i=1nαi21(i=1nαiyiΦ(xi))Ti=1nαiyiΦ(xi)=i=1nαi21i=1nj=1mαiαjyiyjΦT(xi)Φ(xj)
此时我们就需要求解α等于多少时拉格朗日函数最大。
a ∗ = a r g m a x ( ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 m α i α j y i y j Φ T ( x i ) Φ ( x j ) ) a^*=arg max(\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\Phi^T(x_i)\Phi(x_j)) a=argmax(i=1nαi21i=1nj=1mαiαjyiyjΦT(xi)Φ(xj))
再次转换,将上式转为求最小值问题:
m i n ( 1 2 ∑ i = 1 n ∑ j = 1 m α i α j y i y j Φ T ( x i ) Φ ( x j ) − ∑ i = 1 n α i ) ∑ i = 1 n α i y i = 0 , α i > = 0 , i = 1 , 2 , 3 , . . . , n min(\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\Phi^T(x_i)\Phi(x_j)-\sum_{i=1}^n\alpha_i)\\ \sum_{i=1}^n\alpha_iy_i=0,\alpha_i>=0,i=1,2,3,...,n min(21i=1nj=1mαiαjyiyjΦT(xi)Φ(xj)i=1nαi)i=1nαiyi=0αi>=0i=123...n
将训练样本带入上述公式,求解出αi值,再将该值带入之前偏导的结果式子中,得出:
w ∗ = ∑ i = 1 n α i ∗ y i Φ ( x i ) b ∗ = y k − ∑ i = 1 n α i ∗ y i Φ T ( x i ) Φ ( x k ) 其中 k 时一个支持向量点,即对 求得最终分类超平面: α k > 0 ,有 y k ( w T Φ ( x k ) + b ) = 1 w ∗ Φ ( x ) + b ∗ = 0 w^*=\sum_{i=1}^n\alpha_i^*y_i\Phi(x_i)\\ b^*=y_k-\sum_{i=1}^n\alpha_i^*y_i\Phi^T(x_i)\Phi(x_k)\\ 其中k时一个支持向量点,即对\\ 求得最终分类超平面:\alpha_k>0,有y_k(w^T\Phi(x_k)+b)=1\\ w^*\Phi(x)+b^*=0 w=i=1nαiyiΦ(xi)b=yki=1nαiyiΦT(xi)Φ(xk)其中k时一个支持向量点,即对求得最终分类超平面:αk>0,有yk(wTΦ(xk)+b)=1wΦ(x)+b=0

4、相关api

导包:

from sklearn.svm import LinearSVC

调用:

LinearSVC(C=1.0)

C:惩罚系数,类似于线性回归中的正则化系数

C惩罚力度越大,则间隔越小

C惩罚力度越小,则间隔越大

5、核函数

(一)、概述

原始输入空间映射到新的特征空间,从而,使原本线性不可分的样本可能在核空间可分

(二)、分类

线性核:一般是不增加数据维度,而是预先计算内积,提高速度

多项式核:一般是通过增加多项式特征,提升数据维度,并计算内积

高斯核(RBF、径向基函数):产生将样本投射到无限维空间的运算效果,使得原来不可分的数据变得可分。使用最多

(三)、高斯核函数

(1)、概述

高斯核 Radial Basis Function Kernel (径向基函数,又称RBF核)
K ( x , y ) = e − γ ∣ ∣ x − y ∣ ∣ 2 γ 是超参数,作用于标准差相反 K(x,y)=e^{-\gamma||x-y||^2}\\ \gamma是超参数,作用于标准差相反 K(x,y)=eγ∣∣xy2γ是超参数,作用于标准差相反
gamma越大,高斯分布越窄,gamma越小,高斯分布越宽

(2)、相关api

导包:

from sklearn.svm import SVC

调用:

SVC(kernel=‘rbf’,gamma=gamma)

(3)、对比高斯函数

K ( x , y ) = e − γ ∣ ∣ x − y ∣ ∣ 2 g ( x ) = 1 σ 2 π e − 1 2 ( x − μ σ ) 2 可以看的出来 γ 等价于 1 2 σ 2 K(x,y)=e^{-\gamma||x-y||^2}\\ g(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{1}{2}(\frac{x-\mu}{\sigma})^2}\\ 可以看的出来\gamma等价于\frac{1}{2\sigma^2} K(x,y)=eγ∣∣xy2g(x)=σ2π 1e21(σxμ)2可以看的出来γ等价于2σ21

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

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

相关文章

Ubuntu22.04环境搭建MQTT服务器

官网&#xff1a; https://mosquitto.org 1.引入库 sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa2.升级安装工具 sudo apt-get update 3.安装 sudo apt-get install mosquitto 4.安装客户端 sudo apt-get install mosquitto-clients5.添加修改配置文件 进…

【使用Flask构建RESTful API】从零开始开发简单的Web服务!

使用Flask构建RESTful API&#xff1a;从零开始开发简单的Web服务 引言 随着Web应用程序的广泛使用&#xff0c;RESTful API已成为现代Web服务的核心技术之一。通过RESTful API&#xff0c;我们可以轻松地创建、读取、更新和删除&#xff08;CRUD&#xff09;数据&#xff0c…

力扣21 : 合并两个有序链表

链表style 描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 节点大小相同时&#xff0c;l1的节点在前 何解&#xff1f; 1&#xff0c;遍历两个链表&#xff0c;挨个比较节点大小 同时遍…

Python应用指南:利用高德地图API实现路径规划

高德路径规划API是一套基于HTTP协议的接口服务&#xff0c;旨在为开发者提供便捷的路径规划解决方案。该API支持多种出行方式&#xff0c;包括步行、公交和驾车&#xff0c;能够满足不同场景下的路径查询需求。通过调用这些API&#xff0c;用户可以获得从起点到终点的最优路径建…

Flink CDC系列之:理解学习Kubernetes模式

Flink CDC系列之&#xff1a;理解学习Kubernetes模式 准备会话模式启动会话集群设置 Flink CDC提交 Flink CDC Job Kubernetes 是一种流行的容器编排系统&#xff0c;用于自动化计算机应用程序的部署、扩展和管理。Flink 的原生 Kubernetes 集成允许您直接在正在运行的 Kuberne…

SOEM(EtherCAT)主站API梳理

1. 适配器管理 ec_adaptert * ec_find_adapters(void); 功能&#xff1a;查找并返回系统中所有可用的EtherCAT适配器的列表。返回值&#xff1a;指向适配器列表的指针。如果没有找到适配器&#xff0c;则返回NULL。void ec_free_adapters(ec_adaptert * adapter); 功能&#x…

Taro React-Native Android apk 打包

一、打包 react native 之打包 Android的apk - 创客未来 - 博客园 react native 打包成Android 的apk安装包有两种方式&#xff0c;第一种方式是利用 Android studio 打包这里就不接介绍了。第二种是利用 react native 自身项目打包 1、生成签名 再一个空文件夹打开CMD&…

DevOps和CI/CD以及在微服务架构中的作用

DevOps 和 CI/CD 是现代软件开发和运维中两个重要的概念,它们之间有紧密的联系,但也有不同的侧重点。以下是对这两个概念的详细介绍和比较。 1. DevOps 定义: DevOps 是一种文化、运动和实践,旨在通过促进开发(Development)和运维(Operations)团队之间的协作,提升软…

深度学习数学基础之偏导数

深度学习数学基础之偏导数 偏导数的详细解释与实例 定义 偏导数是多变量函数对其中一个变量的导数&#xff0c;同时固定其他变量。它是研究函数在多维空间内各个方向上局部变化性质的基本工具。对于函数 ( f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \dots, x_n) f(x1​,x2​…

大数据之Kafka集群的安装部署

Kafka集群的安装部署是一个相对复杂但有序的过程&#xff0c;涉及多个步骤和配置。以下是一个详细的Kafka集群安装部署指南&#xff1a; 一、前期准备 硬件与软件要求 确保集群中的每台服务器都满足Kafka的硬件要求&#xff0c;包括CPU、内存和磁盘空间。安装Java运行时环境&a…

论文阅读(二十三):Squeeze-and-Excitation Networks

文章目录 1.介绍2.原理3.代码4.SE模块的应用 论文&#xff1a;Squeeze-and-Excitation Networks   论文链接&#xff1a;Squeeze-and-Excitation Networks   代码链接&#xff1a;Github 1.介绍 卷积算子使网络能够在每一层的局部感受野中融合空间&#xff08;spatial&…

视频智能分析平台LiteAIServer摄像机视频分析软件下载检测工业排污

在全球环境保护与可持续发展的大潮中&#xff0c;工业排污的有效监控与管理成为了衡量一个国家或地区绿色发展能力的重要指标。面对这一挑战&#xff0c;视频智能分析平台LiteAIServer以其创新的技术手段&#xff0c;为工业排污监管开辟了新路径&#xff0c;展现了科技在环保领…

《MYSQL实战45讲》将脏页刷进磁盘时导致的性能抖动

脏页 当修改数据时&#xff0c;如果数据在内存中&#xff0c;就会直接在内存中修改&#xff0c;并且将操作记录在redolog中&#xff0c;这时就可以直接返回了。这时这个内存中的数据页与磁盘中的数据是不同的&#xff0c;称为脏页。 flush Mysql将内存中的脏页刷新到磁盘称为…

【git】 git 删除了文件,如何找回

git 删除了文件&#xff0c;如何找回 使用 git revert 并不是恢复误删除文件的最佳方法&#xff0c;因为 git revert 通常用于撤销已经提交的更改&#xff08;生成一个反向提交&#xff09;。如果你误删除了文件&#xff0c;还未提交更改&#xff0c;或者已经提交但想恢复删除…

【Unity基础】初识UI Toolkit - 运行时UI

Unity中的UI工具包&#xff08;UI Toolkit&#xff09;不但可以用于创建编辑器UI&#xff0c;同样可以来创建运行时UI。 关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见&#xff1a; 1. Unity中的UI系统 2. 初识UI Toolkit - 编辑器UI 本文将通过一个简单示例来…

Nginx 迁移到 Caddy:一次完整的反向代理配置迁移实践

文章目录 从零开始&#xff1a;Ubuntu 系统 Nginx 迁移到 Caddy 的完整指南一、背景介绍二、为什么选择 Caddy&#xff1f;三、安装 Caddy1. 使用官方包仓库安装2. 验证安装3. 配置系统服务 四、配置文件位置五、从 Nginx 迁移配置1. 原 Nginx 配置分析2. 转换为 Caddy 配置 六…

Docker Compose一键部署Spring Boot + Vue项目

目录 前提条件 概述 Compose简介 Compose文件 Compose环境 Compose命令 帮助命令 关键命令 Compose部署项目 初始化环境 查看代码文件 sql数据准备 nginx配置文件准备 创建 compose.yaml 一键启动compose多个容器 浏览器访问虚拟机ip:80(可省略默认的80端口) …

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时&#xff0c;一般的做法是先找服务提供方要接口&#xff0c;通过 Maven把接口依赖到项目中。在编写业务逻辑的时候&#xff0c;如果要调用提供方的接口&#xff0c;只需要通过依赖注入的方式把接口注入到项目中&#xff0c;然后在代码里面直接调用接口…

13.音乐管理系统(基于SpringBoot + Vue)

目录 1.系统的受众说明 ​​​​​​​ 2 需求分析 2.1用例图及用例分析 2.1.1 用户用例图及用例分析 2.1.2 管理员用例图及用例分析 2.2 系统结构图和流程图 2.2.1 音乐播放器的系统流程图&#xff08;图2.2.1-1&#xff09; 2.2.2 系统功能表&#xff08;表2.2.2…

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (一)

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得&#xff08;一&#xff09; 一、前言 鸿蒙官网文档中蓝牙部分&#xff0c;对于之前没有开发过蓝牙的同学&#xff0c;使用和查阅起来不是很方便。因为只是API的调用说明。并没有蓝牙整个调用流程的讲解&#xff0c;所以看起来会…