【机器学习】支持向量机 | 支持向量机理论全梳理 对偶问题转换,核方法,软间隔与过拟合
支持向量机走的路和之前介绍的模型不同
之前介绍的模型更趋向于进行函数的拟合,而支持向量机属于直接分割得到我们最后要求的内容
1 支持向量机SVM基本原理
当我们要用一条线(或平面、超平面)将不同类别的点分开时,我们希望这条线尽可能地远离最靠近它的点。这些最靠近线的点被称为支持向量。而这条线到最靠近它的点的距离被称为间隔。支持向量机就是要找到一个最大间隔的线(或平面、超平面),这样可以更好地区分不同类别的点。
以下是支持向量机的一些关键概念和特性:
- 超平面:在二维空间中,超平面是一条直线;在三维空间中,它是一个平面;在更高维的空间中,超平面是一个超平面。对于一个二分类问题,超平面将特征空间划分为两个部分,每个部分对应一个类别。
- 支持向量:支持向量是离超平面最近的那些点。在SVM中,这些点对定义超平面起着重要作用,因为它们决定了超平面的位置。
- 间隔:支持向量到超平面的距离称为间隔。SVM的目标是找到具有最大间隔的超平面,这样可以更好地对新样本进行分类。
2 支持向量分类
2.1 支持向量机求解——对偶问题转换
在机器学习中,对偶问题是指将原始优化问题转化为另一个形式的问题。对于支持向量机(SVM)来说,对偶问题是通过对原始问题的拉格朗日函数进行求解得到的。
具体来说,原始的SVM优化问题是要最小化带有正则化项的损失函数。这个损失函数包括两部分:一部分是要使得分类间隔最大化,另一部分是要保证分类的准确性。直接求解这个问题可能比较复杂。为了简化求解过程,可以将原始问题转化为对偶问题。通过引入拉格朗日乘子,我们可以得到对偶问题。在对偶问题中,我们需要最大化一个关于拉格朗日乘子的函数,同时满足一些约束条件。
通过求解对偶问题,我们可以得到支持向量的拉格朗日乘子的最优解,然后可以使用这些乘子来计算权重向量和偏置,从而得到最终的分类超平面。
对偶问题满足KKT条件,KKT条件如下
KKT(Karush-Kuhn-Tucker)条件是最优化问题中的一组条件,用于描述在某些条件下最优解的性质。对于支持向量机(SVM)的对偶问题,KKT条件可以描述如下:
-
对偶互补条件:对于所有的 i i i,有 α i [ y i ( w T x i + b ) − 1 + ξ i ] = 0 \alpha_i [y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 + \xi_i] = 0 αi[yi(wTxi+b)−1+ξi]=0,即对所有的支持向量,乘子 α i \alpha_i αi不为零的条件下, y i ( w T x i + b ) − 1 + ξ i = 0 y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 + \xi_i = 0 yi(wTxi+b)−1+ξi=0,这表示支持向量的函数间隔与几何间隔之差等于1。
-
互补松弛条件:对于所有的 i i i,有 β i ξ i = 0 \beta_i \xi_i = 0 βiξi=0,即对所有的支持向量,松弛变量 ξ i \xi_i ξi不为零的条件下, β i = 0 \beta_i = 0 βi=0,表示松弛变量与 β i \beta_i βi之间的关系。
-
KKT条件:对于所有的 i i i,有 α i ≥ 0 \alpha_i \geq 0 αi≥0, y i ( w T x i + b ) − 1 + ξ i ≥ 0 y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 + \xi_i \geq 0 yi(wTxi+b)−1+ξi≥0, β i ≥ 0 \beta_i \geq 0 βi≥0, α i [ y i ( w T x i + b ) − 1 + ξ i ] = 0 \alpha_i [y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 + \xi_i] = 0 αi[yi(wTxi+b)−1+ξi]=0, β i ξ i = 0 \beta_i \xi_i = 0 βiξi=0。
KKT条件告诉我们,在最优解处,拉格朗日乘子和变量的取值必须满足这些条件。
基于KKT条件,更好求SVM的最优解
2.2 非线性问题——核方法
核方法是一种机器学习中常用的技术,特别是在支持向量机(SVM)等算法中经常使用。它的基本思想是通过一个非线性映射将原始的输入特征空间映射到一个更高维的特征空间,使得原本在低维空间中不可分的样本变得可分。这个非线性映射称为核函数,它可以避免在高维空间中进行实际的特征转换,从而节省计算成本。
在SVM中,核方法的主要作用是将样本从原始特征空间映射到一个更高维的空间,在这个高维空间中找到一个线性超平面来分割不同类别的样本。常用的核函数包括线性核、多项式核、高斯核(也称为径向基函数核)等,它们可以根据数据的特点选择合适的核函数来提高分类的准确性。
核方法的优势在于能够处理非线性可分的数据,同时避免了在高维空间中进行实际的特征转换,从而降低了计算复杂度。因此,核方法在机器学习中被广泛应用于分类、回归和聚类等任务中。
映射的时候,我们需要核函数进行映射
核函数是支持向量机(SVM)中的重要概念,它允许在高维空间中进行非线性分类。在SVM中,我们希望找到一个最优超平面来将不同类别的数据点分开。如果数据在原始特征空间中不是线性可分的,那么就需要使用核函数将数据映射到一个高维特征空间,使得数据在该空间中线性可分。
核函数的主要思想是,我们可以通过一个函数来计算两个向量在高维空间中的内积,而不必显式地计算它们在高维空间中的表示。这样做的好处是,可以避免在高维空间中显式地存储和计算数据,而是利用核函数的性质,只需计算原始特征空间中的内积,就可以得到在高维空间中的内积。这种技术称为“核技巧”。
常用的核函数包括:
- 线性核函数: K ( x i , x j ) = x i T x j K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i^T \mathbf{x}_j K(xi,xj)=xiTxj,直接计算两个向量在原始特征空间中的内积。
- 多项式核函数: K ( x i , x j ) = ( γ x i T x j + r ) d K(\mathbf{x}_i, \mathbf{x}_j) = (\gamma \mathbf{x}_i^T \mathbf{x}_j + r)^d K(xi,xj)=(γxiTxj+r)d,将数据映射到多项式特征空间。
- 高斯核函数(径向基函数核): K ( x i , x j ) = exp ( − γ ∥ x i − x j ∥ 2 ) K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma \|\mathbf{x}_i - \mathbf{x}_j\|^2) K(xi,xj)=exp(−γ∥xi−xj∥2),将数据映射到无穷维的特征空间,适用于非线性可分的情况。
通过使用核函数,SVM可以在高维空间中进行复杂的非线性分类,而不必显式地计算和存储高维数据。核函数的选择通常基于对数据特征的理解和试验结果。
2.3 防止过拟合——软间隔与正则化
软间隔是支持向量机(SVM)中的概念,用于处理线性不可分的情况。在标准的线性可分SVM中,我们希望找到一个最优超平面,将不同类别的数据点完全分开。然而,在现实应用中,数据往往不是完全线性可分的,即存在一些噪音或异常点。为了处理这种情况,引入了软间隔的概念。
软间隔允许一些数据点位于超平面的错误一侧,但是通过引入一个惩罚项,希望这些错误被最小化。具体来说,软间隔SVM的优化问题包括两部分:最小化误分类点的数量(间隔违例)和最大化间隔。
软间隔SVM的优化问题可以形式化如下:
m i n w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i min_{\mathbf{w}, b, \xi} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{m} \xi_i minw,b,ξ21∥w∥2+C∑i=1mξi
subject to y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 , ∀ i \text{subject to } y_i (\mathbf{w}^T \mathbf{x}_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0, \quad \forall i subject to yi(wTxi+b)≥1−ξi,ξi≥0,∀i
其中, w \mathbf{w} w是超平面的法向量, b b b是偏置项, ξ i \xi_i ξi是松弛变量, C C C是正则化参数,用于控制间隔违例的惩罚力度。优化问题的目标是要找到一个最优的超平面,以及对应的 ξ i \xi_i ξi,使得误分类的点尽量少,同时间隔尽量大。
软间隔SVM通过调节正则化参数 C C C可以在偏向于过拟合( C C C较小)和偏向于欠拟合( C C C较大)之间进行平衡,从而在实际应用中取得更好的性能。
2 支持向量回归
支持向量回归(Support Vector Regression,SVR)是支持向量机(SVM)的一种应用,用于解决回归问题。与传统的线性回归方法不同,SVR可以处理非线性关系,并且对异常值具有较强的鲁棒性。
SVR的基本思想与支持向量分类(SVC)类似,都是通过寻找一个最优的超平面(或者称为回归器)来拟合数据。与SVC不同的是,SVR的目标是最小化预测误差,而不是最大化间隔。
SVR的优化问题可以形式化如下:
min w , b , ξ , ξ ∗ 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ( ξ i + ξ i ∗ ) \min_{\mathbf{w}, b, \xi, \xi^*} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{m} (\xi_i + \xi_i^*) minw,b,ξ,ξ∗21∥w∥2+C∑i=1m(ξi+ξi∗)
subject to { y i − w T ϕ ( x i ) − b ≤ ε + ξ i ∗ w T ϕ ( x i ) + b − y i ≤ ε + ξ i ξ i , ξ i ∗ ≥ 0 \text{subject to } \begin{cases} y_i - \mathbf{w}^T \phi(\mathbf{x}_i) - b \leq \varepsilon + \xi_i^* \\ \mathbf{w}^T \phi(\mathbf{x}_i) + b - y_i \leq \varepsilon + \xi_i \\ \xi_i, \xi_i^* \geq 0 \end{cases} subject to ⎩ ⎨ ⎧yi−wTϕ(xi)−b≤ε+ξi∗wTϕ(xi)+b−yi≤ε+ξiξi,ξi∗≥0
其中, w \mathbf{w} w是回归器的权重向量, b b b是偏置项, ξ i \xi_i ξi和 ξ i ∗ \xi_i^* ξi∗是松弛变量, ε \varepsilon ε是一个预先指定的参数,称为容忍度, C C C是正则化参数。
SVR的核心思想是通过最小化间隔违例( ξ i \xi_i ξi和 ξ i ∗ \xi_i^* ξi∗)的同时,尽可能保持间隔边缘,从而找到一个最优的超平面来拟合数据。支持向量是那些落在间隔边缘上的数据点,它们对于定义超平面和拟合模型起着关键作用。
总的来说,SVR通过引入间隔违例和正则化参数,可以在保持模型简单性的同时,有效地拟合非线性关系,并且对异常值具有较好的鲁棒性。
相关文章:
【机器学习】支持向量机 | 支持向量机理论全梳理 对偶问题转换,核方法,软间隔与过拟合
支持向量机走的路和之前介绍的模型不同 之前介绍的模型更趋向于进行函数的拟合,而支持向量机属于直接分割得到我们最后要求的内容 1 支持向量机SVM基本原理 当我们要用一条线(或平面、超平面)将不同类别的点分开时,我们希望这条…...

【JS】APIs:事件流、事件委托、其他事件、页面尺寸、日期对象与节点操作
1 事件流 捕获阶段:从父到子 冒泡阶段:从子到父 1.1 事件捕获 <body> <div class"fa"><div class"son"></div> </div> <script>const fadocument.querySelector(.fa);const sondocument.qu…...

定制红酒:如何根据客户需求调整红酒口感与风格
在云仓酒庄洒派,云仓酒庄洒派深知不同消费者对于红酒的口感与风格有着不同的喜好和需求。因此,云仓酒庄洒派根据消费者的具体要求,灵活调整红酒的口感与风格,以满足他们的期望。 首先,云仓酒庄洒派会与消费者进行深入的…...
利用excel批量修改图片文件名
今天同事提出需求要实现利用excel批量修改某文件夹下的图片重命名,衡量到各种条件,最后还是选择了vbs来实现。代码如下 代码 创建Excel对象 Set objExcel CreateObject("Excel.Application") objExcel.Visible False 隐藏Excel窗口 打开Ex…...

间隔5分钟执行1次Python脚本设置步骤 —— 定时执行专家
《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件,用于在 Windows 系统上定时执行各种任务,包括执行脚本或程序。 下面是使用 "定时执行专家" 软件设置定时执行 Python 脚本的步骤: 步骤 1: 设置 P…...

计算机网络基础【信息系统监理师】
计算机网络基础【信息系统监理师】 1、OSI七层参考模型2、TCP/IP协议3、网络拓扑结构分类4、网络传输介质分类5、网络交换技术6、网络存储技术7、网络规划技术8、综合布线系统8.1、综合布线工程内容8.1、隐蔽工程-金属线槽安装8.2、隐蔽工程-管道安装槽道与各种管线间的最小净距…...
网络安全风险评估:详尽百项清单要点
网络安全风险评估是识别、分析和评估组织信息系统、网络和资产中潜在风险和漏洞的系统过程。主要目标是评估各种网络威胁和漏洞的可能性和潜在影响,使组织能够确定优先顺序并实施有效的安全措施来减轻这些风险。该过程包括识别资产、评估威胁和漏洞、分析潜在影响以…...

不会用虚拟机装win10?超详细教程解决你安装中的所有问题!
前言:安装中有任何疑问,可以在评论区提问,博主身经百战会快速解答小伙伴们的疑问 BT、迅雷下载win10镜像(首先要下载win10的镜像):ed2k://|file|cn_windows_10_business_editions_version_1903_updated_sep…...

洛谷 素数环 Prime Ring Problem
题目描述 PDF 输入格式 输出格式 题意翻译 输入正整数 nn,把整数 1,2,\dots ,n1,2,…,n 组成一个环,使得相邻两个整数之和均为素数。输出时,从整数 11 开始逆时针排列。同一个环恰好输出一次。n\leq 16n≤16,保证一定有解。 多…...

【DPDK】基于dpdk实现用户态UDP网络协议栈
文章目录 一.背景及导言二.协议栈架构设计1. 数据包接收和发送引擎2. 协议解析3. 数据包处理逻辑 三.网络函数编写1.socket2.bind3.recvfrom4.sendto5.close 四.总结 一.背景及导言 在当今数字化的世界中,网络通信的高性能和低延迟对于许多应用至关重要。而用户态网…...

开源好用的所见即所得(WYSIWYG)编辑器:Editor.js
文章目录 特点基于区块干净的数据 界面与交互插件标题和文本图片列表Todo表格 使用安装创建编辑器实例配置工具本地化自定义样式 今天介绍一个开源好用的Web所见即所得(WYSIWYG)编辑器: Editor.js Editor.js 是一个基于 Web 的所见即所得富文本编辑器,它…...
sqlite 损坏 修复
步骤1 SQLite Download Page下载sqlite3 对应的系统版本 2.参考怎么恢复sqlite 数据库文件✅ - 有乐数据恢复网 sqlite3 dbname > .mode insert > .output dbdump.sql > .dump > .exit 恢复方法1 1.创建一个新的数据库 例如名字叫 test.db 2sqlite3 test.…...

初学Vue——Vue路由
0 什么是Vue路由 类似于Html中的超链接(<a>)一样,可以跳转页面的一种方式。 前端路由:URL中hash(#号之后的内容)与组件之间的对应关系,如下图: 当我们点击左侧导航栏时,浏览器的地址栏会发生变化,路…...

如何使用宝塔面板搭建Discuz并结合cpolar实现远程访问本地论坛
文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board(以下简称 Discuz!)是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上&a…...

llc的基波分析法
对于我们之前分析的 LLC等效谐振电路的分析,其实我们发现分析的并不是完整的方波输入,而是用正弦波来分的 那么为何用基波来分析呢,因为对于方波而言,根据傅里叶级数它是可以分解成基波、 1次、3次、5次.......等各种奇次谐波的入…...

一键清除JavaScript代码中的注释:使用正则表达式实现
这个正则表达式可以有效地匹配 JavaScript 代码中的各种注释,并且跳过了以 http: 或 https: 开头的链接。 /\/\*[\s\S]*?\*\/|\/\/[^\n]*|<!--[\s\S]*?-->|(?<!http:|https:)\/\/[^\n]*/gvscode 实战,ctrlF 调出查找替换工具,点…...

第七次作业
IPSEC VPPN实验配置 目标:在FW5和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 1.FW1和FW2进行双机热备(之前实验没保存,可看上个实验) 还有一些配置前面实验有。 2.场景选择点对点…...
在jupyternotebook中,如何解决作图时负号无法显示的问题?
输入以下代码即可。 import matplotlib as mpl mpl.rcParams[axes.unicode_minus] False 原文链接:在jupyternotebook中,如何解决作图时负号无法显示的问题?...

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
发生的错误信息: File "C:\Users\malongqiang\.conda\envs\ObjectDetection\lib\ssl.py", line 1309, in do_handshakeself._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 分析原因: …...
主流开发语言与环境介绍
主流开发语言与环境介绍 1. 引言 随着计算机科学的不断发展,各种编程语言和开发环境层出不穷。选择一种适合自己的主流开发语言和环境是每个开发者都必须面临的问题。本文将为大家介绍几种目前最为流行的主流开发语言和环境,帮助读者选择合适的工具进行…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...