【机器学习】支持向量机 | 支持向量机理论全梳理 对偶问题转换,核方法,软间隔与过拟合

news/2024/5/30 2:49:41/文章来源:https://blog.csdn.net/Q52099999/article/details/136625525

支持向量机走的路和之前介绍的模型不同

之前介绍的模型更趋向于进行函数的拟合,而支持向量机属于直接分割得到我们最后要求的内容

1 支持向量机SVM基本原理

当我们要用一条线(或平面、超平面)将不同类别的点分开时,我们希望这条线尽可能地远离最靠近它的点。这些最靠近线的点被称为支持向量。而这条线到最靠近它的点的距离被称为间隔。支持向量机就是要找到一个最大间隔的线(或平面、超平面),这样可以更好地区分不同类别的点。

以下是支持向量机的一些关键概念和特性:

  1. 超平面:在二维空间中,超平面是一条直线;在三维空间中,它是一个平面;在更高维的空间中,超平面是一个超平面。对于一个二分类问题,超平面将特征空间划分为两个部分,每个部分对应一个类别。
  2. 支持向量:支持向量是离超平面最近的那些点。在SVM中,这些点对定义超平面起着重要作用,因为它们决定了超平面的位置。
  3. 间隔:支持向量到超平面的距离称为间隔。SVM的目标是找到具有最大间隔的超平面,这样可以更好地对新样本进行分类。

2 支持向量分类

2.1 支持向量机求解——对偶问题转换

在机器学习中,对偶问题是指将原始优化问题转化为另一个形式的问题。对于支持向量机(SVM)来说,对偶问题是通过对原始问题的拉格朗日函数进行求解得到的。

具体来说,原始的SVM优化问题是要最小化带有正则化项的损失函数。这个损失函数包括两部分:一部分是要使得分类间隔最大化,另一部分是要保证分类的准确性。直接求解这个问题可能比较复杂。为了简化求解过程,可以将原始问题转化为对偶问题。通过引入拉格朗日乘子,我们可以得到对偶问题。在对偶问题中,我们需要最大化一个关于拉格朗日乘子的函数,同时满足一些约束条件。

通过求解对偶问题,我们可以得到支持向量的拉格朗日乘子的最优解,然后可以使用这些乘子来计算权重向量和偏置,从而得到最终的分类超平面。

对偶问题满足KKT条件,KKT条件如下

KKT(Karush-Kuhn-Tucker)条件是最优化问题中的一组条件,用于描述在某些条件下最优解的性质。对于支持向量机(SVM)的对偶问题,KKT条件可以描述如下:

  1. 对偶互补条件:对于所有的 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。

  2. 互补松弛条件:对于所有的 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之间的关系。

  3. KKT条件:对于所有的 i i i,有 α i ≥ 0 \alpha_i \geq 0 αi0 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+ξi0 β i ≥ 0 \beta_i \geq 0 βi0 α 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中,我们希望找到一个最优超平面来将不同类别的数据点分开。如果数据在原始特征空间中不是线性可分的,那么就需要使用核函数将数据映射到一个高维特征空间,使得数据在该空间中线性可分。

核函数的主要思想是,我们可以通过一个函数来计算两个向量在高维空间中的内积,而不必显式地计算它们在高维空间中的表示。这样做的好处是,可以避免在高维空间中显式地存储和计算数据,而是利用核函数的性质,只需计算原始特征空间中的内积,就可以得到在高维空间中的内积。这种技术称为“核技巧”。

常用的核函数包括:

  1. 线性核函数 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,直接计算两个向量在原始特征空间中的内积。
  2. 多项式核函数 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,将数据映射到多项式特征空间。
  3. 高斯核函数(径向基函数核) 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(γxixj2),将数据映射到无穷维的特征空间,适用于非线性可分的情况。

通过使用核函数,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,ξ21w2+Ci=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,ξi0,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,ξ,ξ21w2+Ci=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  yiwTϕ(xi)bε+ξiwTϕ(xi)+byiε+ξiξi,ξi0

其中, 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通过引入间隔违例和正则化参数,可以在保持模型简单性的同时,有效地拟合非线性关系,并且对异常值具有较好的鲁棒性。

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

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

相关文章

Leetcode 1514 概率最大的路径

文章目录 1. 题目描述2. 我的尝试 1. 题目描述 原题链接:Leetcode 1514 概率最大的路径 给你一个由 n 个节点(下标从 0 开始)组成的无向加权图,该图由一个描述边的列表组成,其中 edges[i] [a, b] 表示连接节点 a 和 b…

原生php单元测试示例

下载phpunit.phar https://phpunit.de/getting-started/phpunit-9.html 官网 然后win点击这里下载 新建目录 这里目录可以作为参考&#xff0c;然后放在根目录下 新建一个示例类 <?phpdeclare(strict_types1);namespace Hjj\DesignPatterns\Creational\Hello;class He…

centos7 安装wps 依赖源libGLU.so.1()(64bit)

centos 在安装wps时会提示&#xff1a;依赖检测失败&#xff1a; libXss.so.1()(64bit)被需要 yum 或者apt安装依赖失败 手动搜索发现https://pkgs.org/download/libGLU.so.1()(64bit)可以下载。 完成验证 选择合适自己的系统&#xff0c;这里以centos7为例 进入红框所选择…

使用 mysqldump 迁移 MySQL 表 OceanBase

使用 mysqldump 迁移 MySQL 表 OceanBase 一、什么是mysqldump二、使用mysqldump导出MySQL数据三、将数据导入到OceanBase四、注意 一、什么是mysqldump mysqldump 是 MySQL 数据库管理系统中的一个工具&#xff0c;用于将数据库中的数据导出为文本文件。它可以将整个数据库、…

睿尔曼超轻量仿人机械臂之六轴机器人运动认知与实操

机械臂运动分为关节空间运动和笛卡尔空间运动2种方式&#xff0c;2种运动方式分别对应机械臂运动学算法的正解和逆解&#xff0c;在不同的应用场景下可以使用不同的运动方式。 两种运动方式之间的不同可总结为以下几点&#xff1a; ①表示方式不同。关节空间运动发给机械臂的是…

【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】

欢迎来CILMY23的博客喔&#xff0c;本篇为【C语言】文件操作篇-----程序文件和数据文件&#xff0c;文件的打开和关闭&#xff0c;二进制文件和文本文件【图文详解】&#xff0c;感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言 在了解完动态内存管…

华为OD机考-C卷

文章目录 攀登者问题停车场最短路径 攀登者问题 24/03/09 20:50~23:10 攀登者喜欢寻找各种地图&#xff0c;并且尝试攀登到最高的山峰。地图表示为一维数组&#xff0c;数组的索引代表水平位置&#xff0c;数组的元素代表相对海拔高度。其中数组元素0代表地面。一个山脉可能有多…

处理error: remote origin already exists.及其Gitee文件上传保姆级教程

解决error: remote origin already exists.&#xff1a; 删除远程 Git 仓库 git remote rm origin 再添加远程 Git 仓库 git remote add origin &#xff08;HTTPS&#xff09; 比如这样&#xff1a; 然后再push过去就ok了 好多人可能还是不熟悉怎么将文件上传 Gitee:我…

Kotlin/Java重写equals后==表现(2)

Kotlin/Java重写equals后表现&#xff08;2&#xff09; 如果不重写默认的equals方法&#xff0c;即使用Object默认的equals()方法&#xff0c;而Object默认的equals方法&#xff0c;其实比较两个对象的地址&#xff1a; fun main(args: Array<String>) {val u1 User(&…

推荐一款go语言的开源物联网框架-opengw

推荐一款go语言的开源物联网框架&#xff0c;设计思想不错&#xff0c;值的学习。 技术交流 QQ群1028704210 官网及驱动下载 http://www.opengw.cn http://www.opengw.cn/col.jsp?id104 可执行文件下载 https://gitee.com/my_iot/goAdapter/releases 码云地址 https:/…

手机ip地址获取失败是什么原因

在移动互联网时代&#xff0c;手机的IP地址不仅是设备在网络中的唯一标识&#xff0c;还关系到我们的网络体验与数据安全。然而&#xff0c;有时我们在使用手机时可能会遇到IP地址获取失败的情况。这种情况不仅会影响我们的在线活动&#xff0c;还可能引发一系列问题。本文将探…

基于FPGA的PSRAM接口设计与实现

该系列为神经网络硬件加速器应用中涉及的模块接口部分&#xff0c;随手记录&#xff0c;以免时间久了遗忘。 一 PSRAM与HyperRAM 1、概述 2、异同 接口协议不同&#xff0c;因此在IP设计时需要注意。 Hyperram(Winbond)&#xff1a;HyperBus协议 PSRAM(AP公司)&#xff1a;X…

页面侧边栏顶部固定和底部固定方法

顶部固定用于侧边栏低于屏幕高度----左侧边栏 底部固定用于侧边栏高于屏幕高度----右侧边栏 vue页面方法 页面布局 页面样式&#xff0c;因为内容比较多&#xff0c; 只展示主要代码 * {margin: 0;padding: 0;text-align: center; } .head {width: 100%;height: 88px;back…

使用kettle批量加载数据到kadb

测试环境 达梦数据库版本&#xff1a;DM Database Server 64 V8 03134284132-20240115-215128-20081&#xff08;官网测试版&#xff09;KADB版本&#xff1a;KADB V003R002C001B0181Kettle版本&#xff1a;pdi-ce-9.4.0.0-343&#xff08;官网下载&#xff09;Python版本&…

WordPress密码丢失,如何修改密码

近期Bluehost虚拟主机不再提供低版本的PHP后&#xff0c;我们将所有网站都迁移到了Hostease管理&#xff0c;他们的虚拟主机提供全版本的PHP&#xff0c;由于很多网站长时间没有登录&#xff0c;导致很多密码都忘记了&#xff0c;下面我就介绍几种修改WordPress密码的方式。 1…

C++训练营:引用传递

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 一、引用传递 简单来说&#xff0c;“引用”就是给已有的变量起一个别名。引用并没有自己单独的内存空间&#xff0c;作为引用&#xff0c;它和原变量共用一段内存空间。引用的定义格…

压缩json字符串

GZIPOutputStream 需要关闭&#xff0c;而 ByteArrayOutputStream 不需要关闭。具体原因如下&#xff1a; GZIPOutputStream&#xff1a;GZIPOutputStream是一种过滤流&#xff0c;它提供了将数据压缩为GZIP格式的功能。当使用此类的实例写入数据时&#xff0c;它会对数据进行压…

《OWASP TOP10漏洞》

0x01 弱口令 产生原因 与个人习惯和安全意识相关&#xff0c;为了避免忘记密码&#xff0c;使用一个非常容易记住 的密码&#xff0c;或者是直接采用系统的默认密码等。 危害 通过弱口令&#xff0c;攻击者可以进入后台修改资料&#xff0c;进入金融系统盗取钱财&#xff0…

python的函数与类的定义

目录 1.函数 1.函数的定义 2.输入参数与输出参数的类型 3.输入和输出多个参数 1.普通参数 2.含有任意数量的参数 3.关键字参数 4.普通参数与多个参数的结合 2.类 1.类的定义 2.类的实例化 3.继承 1.函数 1.函数的定义 def 函数名(输入参数): 文档字符串 函数体 …

探索并发编程:深入理解 CyclicBarrier 的原理

文章目录 前言一、CyclicBarrier是什么&#xff1f;二、CyclicBarrier工作原理三、CyclicBarrier常用重要的方法四、代码实战讲解五、CyclicBarrier对比CountDownLatch总结 前言 在多线程编程中&#xff0c;同步是一项关键的任务&#xff0c;尤其是当涉及到多个线程需要在某个…