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

软间隔支持向量机

软间隔支持向量机

​ 我们先直接给出软间隔支持向量机的形式:
P = min ⁡ ω , b , ζ 1 2 ∥ ω ∥ 2 2 − C ∑ i = 1 m ζ i s . t . y i ( ω x i + b ) ≥ 1 − ζ i , i = 1 , 2 , 3.. m ζ i ≥ 0 , i = 1 , 2 , 3.. m P = \min_{\omega,b,\zeta} \frac{1}{2}\Vert \omega \Vert_2^2 - C\sum_{i=1}^m\zeta_i\\ s.t. y_i(\omega x_i+b) \geq 1-\zeta_i,i=1,2,3..m\\ \zeta_i \geq 0,i=1,2,3..m P=ω,b,ζmin21ω22Ci=1mζis.t.yi(ωxi+b)1ζi,i=1,2,3..mζi0,i=1,2,3..m

​ 线性可分的对立面一定是线性不可分,这个时候无论如何改变超平面与支持向量,数据都无法从线性可分转为线性不可分。但是对于完全杂乱的数据来说,我们往往还会遇到一种情况就是数据中存在一小部分的特异点而导致数据线性不可分,如图所示:image-20241112221025217

​ 在这种情况下如果直接选择线性不可分的算法反而会让我们的问题更复杂,同时也可能导致过拟合的问题,那么我们不妨放松一定的硬间隔限制,允许错误分类。或者说,允许尽可能少的错误分类,从而获得更好的泛化效果。

​ 对于正分类点的错误分类来说,我们可以划分为三种,如图上Case1,Case2,Case3三个点,分别代表了允许特异点进入超平面与正支持向量之间,允许特异点进入超平面与负支持向量之间,允许特异点进入负分类区间。

image-20241112221901720

​ 针对三种情况我们分别分析,同时引入松弛变量。引入松弛变量的目的就是为了放松硬间隔的区间限制,让原本只能出现在过支持向量与超平面平行的平面正侧的点可以出现在其他地方,为了方便分析我们假设最优超平面如图所示 ω X + b = 0 \omega X+b=0 ωX+b=0保持不动,研究如何调整限制条件,以允许线性不可分样本可以存在。

1. Case1

​ 我们将Case1的特征向量代入超平面得到 ω X c + b = P \omega X_c+b=P ωXc+b=P,显然 0 < P < 1 0<P<1 0<P<1,此时 0 ≤ Y c ( ω X c + b ) < 1 0\leq Y_c(\omega X_c+b)<1 0Yc(ωXc+b)<1

​ 原来我们要求正分类点在正支持向量右上方的时候限制条件为: Y c ( ω X c + b ) ≥ 1 Y_c(\omega X_c+b)\geq 1 Yc(ωXc+b)1

​ 将Case1的点纳入限制范围,则限制条件变为 Y c ( ω X c + b ) ≥ 0 Y_c(\omega X_c+b) \geq 0 Yc(ωXc+b)0

​ 我们假设松弛变量 0 ≤ ζ ≤ 1 0\leq \zeta \leq 1 0ζ1,那么限制条件就可以转换为: Y c ( ω X c + b ) ≥ 1 − ζ Y_c(\omega X_c+b) \geq 1-\zeta Yc(ωXc+b)1ζ

​ 此时我们允许误分类点进入正支持向量平面与超平面之间

2. Case2

​ 我们将Case2的特征向量代入超平面得到 ω X c + b = P \omega X_c+b=P ωXc+b=P,显然 − 1 < P < 0 -1<P<0 1<P<0,此时 − 1 ≤ Y c ( ω X c + b ) < 0 -1\leq Y_c(\omega X_c+b)<0 1Yc(ωXc+b)<0

​ 原来我们要求正分类点在超平面右上方的时候限制条件为: Y c ( ω X c + b ) ≥ 0 Y_c(\omega X_c+b) \geq 0 Yc(ωXc+b)0

​ 将Case2的点纳入限制范围,则限制条件变为 Y c ( ω X c + b ) ≥ − 1 Y_c(\omega X_c+b) \geq -1 Yc(ωXc+b)1

​ 我们假设松弛变量 0 ≤ ζ ≤ 2 0\leq \zeta \leq 2 0ζ2,那么限制条件就可以转换为: Y c ( ω X c + b ) ≥ 1 − ζ Y_c(\omega X_c+b) \geq 1-\zeta Yc(ωXc+b)1ζ

​ 此时我们允许误分类点进入负支持向量平面与超平面之间

3. Case3

​ 我们将Case1的特征向量代入超平面得到 ω X c + b = P \omega X_c+b=P ωXc+b=P,显然 P < − 1 P<-1 P<1,此时$ Y_c(\omega X_c+b)<-1$

​ 原来我们要求正分类点在负支持向量右上方平面的时候限制条件为: Y c ( ω X c + b ) ≥ − 1 Y_c(\omega X_c+b) \geq -1 Yc(ωXc+b)1

​ 我们假设松弛变量$0\leq \zeta ,那么限制条件就可以转换为: ,那么限制条件就可以转换为: ,那么限制条件就可以转换为:Y_c(\omega X_c+b) \geq 1-\zeta$

​ 此时我们允许误分类点进入负分类区间

4. 限制松弛变量

​ 之前的内容我们是从已经引入松弛变量的角度分析为什么在模型中要求 ζ i ≥ 0 \zeta_i \geq 0 ζi0,现在我们来分析松弛变量是如何引入目标函数的。

​ 显然我们现在对每一个特异点都设置了一个松弛变量 ζ i \zeta_i ζi使得原来的模型能够容纳这些错误的情况,但是如果不对这种放松进行惩罚,在面对线性不可分的数据时,模型可以随意让样本点可以随意靠近或穿过超平面。

​ 样本点随意靠近或穿过超平面,这就忽略了我们不同类别的数据点到这个超平面的最小距离(即间隔)最大这个核心目标。因为不加限制的话,会导致几何间隔 2 ∥ ω ∥ \frac{2}{\Vert \omega \Vert} ω2不断的变小。

​ 那为什么会导致几何间隔 2 ∥ ω ∥ \frac{2}{\Vert \omega \Vert} ω2不断的变小呢?

​ 假设我们已经有超平面可以将两类数据大部分分开,则正负支持向量之间的间隔恰好为 2 ∥ ω ∥ \frac{2}{\Vert \omega \Vert} ω2,当我们不惩罚 ζ i \zeta_i ζi,并且想要把这个数据点也正确分类。为了使 y i ( ω x i + b ) ≥ 1 − ζ i ζ i ≥ 0 y_i(\omega x_i+b) \geq 1-\zeta_i \quad \zeta_i \geq 0 yi(ωxi+b)1ζiζi0成立,我们不得不增大 ζ i \zeta_i ζi,同时调整超平面。调整超平面可能就会导致我们的几何间隔变小,这会与我们间隔最大化这个问题相违背。所以必须增加惩罚。我们为每一个松弛变量添加惩罚,同时设置一个参数可以控制惩罚的力度,进而我们就得到了:
P ∗ = max ⁡ 1 ∥ ω ∥ ∥ + C ∑ i = 1 N ζ i s . t . y i ( ω x i + b ) ≥ 1 − ζ i , i = 1 , 2 , 3.. N ζ i ≥ 0 , i = 1 , 2 , 3.. N P^* = \max_{} \frac{1}{\Vert \omega \Vert}\Vert + C\sum_{i=1}^N\zeta_i\\ s.t. y_i(\omega x_i+b) \geq 1-\zeta_i,i=1,2,3..N\\ \zeta_i \geq 0,i=1,2,3..N P=maxω1+Ci=1Nζis.t.yi(ωxi+b)1ζi,i=1,2,3..Nζi0,i=1,2,3..N
​ 我们的问题其实转为了在 ω \omega ω和松弛变量 ζ \zeta ζ 之间寻求一个平衡,而C是来控制这个平衡的程度。最终我们将问题转为我们一开始的最小化问题P。

5. 求解P

​ 根据拉格朗如对偶法构建拉格朗日函数:
L ( ω , b , ζ , α , μ ) = 1 2 ∥ ω ∥ 2 2 + C ∑ i = 1 N ζ i − ∑ i = 1 m α i [ y i ( ω x i + b ) − 1 + ζ i ] − ∑ i = 1 m μ i ζ i a n d μ i ≥ 0 , ζ i ≥ 0 L(\omega,b,\zeta,\alpha,\mu) =\frac{1}{2}\Vert \omega \Vert_2^2 +C\sum_{i=1}^N\zeta_i-\sum_{i=1}^m\alpha_i[y_i(\omega x_i+b) - 1+\zeta_i]-\sum_{i=1}^m \mu_i\zeta_i \\and \\\mu_i \geq0,\zeta_i \geq 0 L(ω,b,ζ,α,μ)=21ω22+Ci=1Nζii=1mαi[yi(ωxi+b)1+ζi]i=1mμiζiandμi0,ζi0

​ 则优化的目标函数为: min ⁡ ω , b , ζ max ⁡ μ i , ζ i L ( ω , b , ζ , α , μ ) \min_{\omega,b,\zeta}\max_{\mu_i,\zeta_i} L(\omega,b,\zeta,\alpha,\mu) minω,b,ζmaxμi,ζiL(ω,b,ζ,α,μ)

​ 符合Slater条件转为对偶问题: max ⁡ μ i , ζ i min ⁡ ω , b , ζ L ( ω , b , ζ , α , μ ) \max_{\mu_i,\zeta_i}\min_{\omega,b,\zeta} L(\omega,b,\zeta,\alpha,\mu) maxμi,ζiminω,b,ζL(ω,b,ζ,α,μ)

​ 先求最小化问题:
∂ L ∂ w = 0 ⇒ w = ∑ i = 1 m α i y i x i ∂ L ∂ b = 0 ⇒ ∑ i = 1 m α i y i = 0 ∂ L ∂ ξ = 0 ⇒ C − α i − μ i = 0 \frac{\partial L}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i \\ \frac{\partial L}{\partial b} = 0 \;\Rightarrow \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \\ \frac{\partial L}{\partial \xi} = 0 \;\Rightarrow C- \alpha_i - \mu_i = 0 wL=0w=i=1mαiyixibL=0i=1mαiyi=0ξL=0Cαiμi=0
​ 代入消去 ω , b \omega,b ω,b
L ( ω , b , ζ , α , μ ) = ∑ i = 1 m α i − 1 2 ∑ i = 1 , j = 1 m α i α j y i y j x i T x j L(\omega,b,\zeta,\alpha,\mu) = \sum\limits_{i=1}^{m}\alpha_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j L(ω,b,ζ,α,μ)=i=1mαi21i=1,j=1mαiαjyiyjxiTxj
​ 仔细观察这个式子会发现其实与支持向量机最终得到的公式是一样的,但是不同的是约束条件:
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 , j = 1 m α i α j y i y j x i T x j s . t . ∑ i = 1 m α i y i = 0 C − α i − μ i = 0 α i ≥ 0 ( i = 1 , 2 , . . . , m ) μ i ≥ 0 ( i = 1 , 2 , . . . , m ) \max _{\alpha} \sum\limits_{i=1}^{m}\alpha_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j \\ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \\ C- \alpha_i - \mu_i = 0 \\\alpha_i \geq 0 \;(i =1,2,...,m) \\\mu_i \geq 0 \;(i =1,2,...,m) αmaxi=1mαi21i=1,j=1mαiαjyiyjxiTxjs.t.i=1mαiyi=0Cαiμi=0αi0(i=1,2,...,m)μi0(i=1,2,...,m)

对于三个约束来说代入消去 μ \mu μ可以得到唯一一个约束也就是: 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0αiC,然后我们就可以通过SMO算法来解出最终的 α 和 b \alpha 和b αb

相关文章:

软间隔支持向量机

软间隔支持向量机 ​ 我们先直接给出软间隔支持向量机的形式&#xff1a; P min ⁡ ω , b , ζ 1 2 ∥ ω ∥ 2 2 − C ∑ i 1 m ζ i s . t . y i ( ω x i b ) ≥ 1 − ζ i , i 1 , 2 , 3.. m ζ i ≥ 0 , i 1 , 2 , 3.. m P \min_{\omega,b,\zeta} \frac{1}{2}\Ve…...

在C++上实现反射用法

0. 简介 最近看很多端到端的工作&#xff0c;发现大多数都是基于mmdet3d来做的&#xff0c;而这个里面用的比较多的形式就是反射机制&#xff0c;这样其实可以比较好的通过类似plugin的形式完成模型模块的插入。当然我们这里不是来分析python的反射机制的。我们这篇文章主要来…...

【学术会议介绍,SPIE 出版】第四届计算机图形学、人工智能与数据处理国际学术会议 (ICCAID 2024,12月13-15日)

第四届计算机图形学、人工智能与数据处理国际学术会议 2024 4th International Conference on Computer Graphics, Artificial Intelligence and Data Processing (ICCAID 2024) 重要信息 大会官网&#xff1a;www.iccaid.net 大会时间&#xff1a;2024年12月13-15日 大会地…...

网络百问百答(一)

什么是链接&#xff1f; 链接是指两个设备之间的连接&#xff0c;它包括用于一个设备能够与另一个设备通信的电缆类型和协议。OSI参考模型的层次是什么&#xff1f; 有7个OSI层&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层…...

【深圳大学】数据结构A+攻略(计软版)

1. 考试 1.1 形式 分为平时&#xff0c;笔试&#xff0c;机试三部分。其中&#xff1a; 平时占30%&#xff0c;包含平时OJ测验和课堂练习&#xff0c;注意这个可能会因老师的不同和课题组的新策略而改变。笔试占60%&#xff0c;是分值占比的主要部分。机试占10%。 1.2 题型…...

解读《ARM Cortex-M3 与Cortex-M4 权威指南》——第4章 架构

推荐大佬做的讲解 可以帮助加深理解 ARM架构及汇编 Cortex-M3 和 Cortex-M4 处理器都是基于ARMv7-M架构 需要完成对编程模型、异常(如中断)如何处理、存储器映射、如何使用外设以及如何使用微控制器供应商提供的软件驱动库文件等 Cortex-M3和Cortex-M4处理器有两种操作状态…...

探索 Python HTTP 的瑞士军刀:Requests 库

文章目录 探索 Python HTTP 的瑞士军刀&#xff1a;Requests 库第一部分&#xff1a;背景介绍第二部分&#xff1a;Requests 库是什么&#xff1f;第三部分&#xff1a;如何安装 Requests 库&#xff1f;第四部分&#xff1a;Requests 库的基本函数使用方法第五部分&#xff1a…...

PostgreSQL 页损坏如何修复

PostgreSQL 错误&#xff1a;关系 base/46501/52712 中的块 480 存在无效的页。 当我们在使用 PostgreSQL 数据库的时候&#xff0c;如果服务器发生 CRASH 或者断电等异常情况的时候&#xff0c;有可能会遇到上面的这个报错信息。那么我们如何去修复这个数据呢&#xff0c;以及…...

Leetcode 75 Sort colors

题意&#xff1a;荷兰国旗问题&#xff0c;给一个数组[0,0,2,1,0]&#xff0c;构造成[0,0,0,1,2]的形式&#xff0c;分成三块 https://leetcode.com/problems/sort-colors/description/ 题解&#xff1a; 在任意时刻&#xff0c;i 左边的数都是 0&#xff0c;k 右边的数都是 …...

如何进行数据库连接池的参数优化?

以下是进行数据库连接池参数优化的一些方法&#xff1a; 一、确定合适的初始连接数&#xff1a; 考虑因素&#xff1a;数据库的规模、应用程序的启动需求以及预期的初始负载。如果数据库规模较小且应用程序启动时对数据库的即时访问需求不高&#xff0c;可以将初始连接数设置…...

有了miniconda,再也不用担心python、nodejs、go的版本问题了

哈喽&#xff0c;大家好&#xff01;我是「励志前端小黑哥」&#xff0c;我带着最新发布的文章又来了&#xff01; 专注前端领域10年&#xff0c;专门分享那些没用的前端知识&#xff01; 今天要分享的内容&#xff0c;是一个免费的环境管理工具&#xff0c;它叫Miniconda&…...

openresty入门教程:init_by_lua_block

init_by_lua_block 是 Nginx 配置中用于在 Nginx 启动时执行 Lua 脚本的一个指令。这个指令通常用于初始化全局变量、设置共享内存&#xff0c;或者执行一些需要在服务器启动时完成的准备工作。 以下是一个简单的 init_by_lua_block 使用示例&#xff1a; 1. 安装 Nginx 和 L…...

sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?

什么是Pump 扫链机器人&#xff0c;它的盈利逻辑优化策略是什么&#xff1f; Pump 扫链机器人&#xff0c;通过智能化、自动化的买卖操作帮助投资者实现快速盈利。在此基础上&#xff0c;我们对该机器人的盈利逻辑进行了深度优化&#xff0c;涵盖了买入策略和止盈策略的各个方面…...

Spring-boot 后端java配置接口返回jsp页面

Spring-boot 后端java配置接口返回jsp页面 spring boot 基于spring MVC的基础上进行了改进&#xff0c; 将Controller 与ResponseBody 进行了合并成一个新的注解 RestController。 当用户请求时&#xff0c;需要有视图渲染的&#xff0c;与请求数据的请求分别使用 1.在appli…...

LabVIEW车辆侧翻预警系统

在工业和实验室环境中&#xff0c;搬运车辆、叉车和特种作业车辆经常在负载和高速转弯过程中发生侧翻事故&#xff0c;导致设备损坏和人员伤害。为提高工作环境的安全性&#xff0c;开发了一种基于LabVIEW的工业车辆侧翻预警系统&#xff0c;能够实时监测车辆状态并发出预警&am…...

亲测有效:Maven3.8.1使用Tomcat8插件启动项目

我本地maven的settings.xml文件中的配置&#xff1a; <mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url> </mirror>…...

Find My电子体温计|苹果Find My技术与体温计结合,智能防丢,全球定位

电子体温计由温度传感器&#xff0c;液晶显示器&#xff0c;纽扣电池&#xff0c;专用集成电路及其他电子元器件组成。能快速准确地测量人体体温&#xff0c;与传统的水银玻璃体温计相比&#xff0c;具有读数方便&#xff0c;测量时间短&#xff0c;测量精度高&#xff0c;能记…...

jmeter常用配置元件介绍总结之后置处理器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之后置处理器 8.后置处理器8.1.CSS/JQuery提取器8.2.JSON JMESPath Extractor8.3.JSON提取器8.4.正则表达式提取器8.5.边界提取器8.5.Debug PostProcessor8.6.XPath2 Extractor8.7.XPath提取器8.8.结果状态处理器 8.后置处理…...

html5多媒体标签

文章目录 HTML5新增多媒体标签详解&#xff1a;视频标签与音频标签视频标签<video>音频标签<audio>代码案例 HTML5新增多媒体标签详解&#xff1a;视频标签与音频标签 HTML5引入了多项新特性&#xff0c;其中多媒体标签的引入为网页开发带来了革命性的变化。这些标…...

51c自动驾驶~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638131 #端到端任务 说起端到端&#xff0c;每个从业者可能都觉得会是下一代自动驾驶量产方案绕不开的点&#xff01;特斯拉率先吹响了方案更新的号角&#xff0c;无论是完全端到端&#xff0c;还是专注于planner的模型&a…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...