线性模型 - 支持向量机

支持向量机(SVM)是一种用于分类(和回归)的监督学习算法,其主要目标是找到一个最佳决策超平面,将数据点分为不同的类别,并且使得分类边界与最近的数据点之间的间隔(margin)最大化,从而提高模型对新数据的泛化能力。

在学习支持向量机之前,我们需要弄清楚一些数学概念和公式。

一、什么是超平面

超平面是指在 n 维空间中,维度为 n-1 的仿射子空间。换句话说,超平面是一个“平坦”的空间,它比所在空间的维度低1。具体来说:

  • 二维空间:超平面是1维的直线。
  • 三维空间:超平面是2维的平面。
  • n维空间:超平面是 n−1 维的空间。

通常,超平面可以用一个线性方程来表示,例如在 nn 维空间中,一个超平面可以写为:

w^T x + b = 0,

其中 w 是一个 n 维向量(称为法向量),b 是一个偏置项,而 x 是 n 维输入向量。这个方程表示所有满足此关系的点构成的集合,也就是超平面。

超平面在机器学习中非常重要,例如支持向量机(SVM)就是利用超平面将数据分为不同类别。

二、什么是法向量

法向量是一个向量,它与给定平面或超平面中的所有向量都垂直。换句话说,如果我们有一个平面或超平面,那么平面内任意一个向量与该平面的法向量的内积都为零。法向量不仅描述了平面或超平面的方向,还在计算点到平面的距离、确定超平面方程以及各种几何变换中起关键作用。

举例说明:

  • 在二维平面中,一个直线可以表示为 ax + by + c = 0。其中,向量 (a, b) 就是这条直线的法向量,因为它与直线上任意两个点构成的向量都垂直。

  • 在三维空间中,一个平面的方程可以写成 ax + by + cz + d = 0,此时 (a, b, c) 就是该平面的法向量。

总结来说,法向量为我们提供了描述平面方向的工具,是理解和操作几何对象的重要概念。

三、什么是向量的模

向量的“模”(或称为“范数”)指的是向量的大小或长度。最常用的度量是欧几里得范数,其计算公式为:

  • 几何意义
    可以把向量看作从原点指向空间中某个点的箭头,向量的模就是这根箭头的长度。

  • 示例
    对于二维向量 v = (3, 4),其模为

    这表示这个向量的长度为5。

四、点到超平面的距离

1. 公式

2. 几何定义

样本 x(n) 到超平面 w^Tx+b=0 的距离,是该点到超平面的最短距离(垂直距离)。

3. 推导过程

  步骤 1:任取超平面上一点 x′,满足 w^Tx′+b=0。

五、超平面到超平面的距离

考虑两个平行超平面,其方程分别为

这两个超平面平行,因为它们具有相同的法向量 w。

为了求两个超平面之间的距离,我们可以任选一个在第一个超平面上的点,然后计算它到第二个超平面的距离。

六、现在我们切入本文的主题:支持向量机

支持向量机(Support Vector Machine,SVM)是一个经典的二分类算法, 其找到的分割超平面具有更好的鲁棒性,因此广泛使用在很多任务上,并表现出 了很强优势。

支持向量机(SVM)是一种监督学习算法,主要用于解决分类问题,尤其是二分类问题。其核心思想是通过寻找一个最优的决策边界(在二维空间中就是一条直线,在更高维空间中则是一个超平面),使得正类和负类数据点之间的间隔(margin)最大化。

(一)基本概念

 给定一个二分类器数据集

如果两类样本是线性可分的,即存在一个超平面 w^T x + b = 0,

我们定义间隔(Margin)𝛾 为整个数据集 𝐷 中所有样本到分割超平面的最短距离。

如果间隔 𝛾 越大,其分割超平面对两个数据集的划分越稳定,不容易受噪声等因素影响。

支持向量机的目标是寻找一个超平面使得 𝛾 最大

(二)这里先弄清楚上面提到的一个关键点:两类样本线性可分时,则每个样本满足 y(w^Tx+b)>0

1. 超平面的定义

在二分类问题中,超平面是决策边界,形式为:

            w^Tx+b=0

其中:

  • w 是超平面的法向量(决定方向)。

  • b 是偏置项(决定超平面与原点的距离)。

2. 线性可分性

若两类样本线性可分,则存在一个超平面,使得:

  • 正类样本(y=+1)满足 w^Tx+b>0。

  • 负类样本(y=−1)满足 w^Tx+b<0。

3. 统一表达

将两类样本的条件合并为:

y(w^Tx+b)>0

  • 当 y=+1 时,w^Tx+b>0,乘积为正。

  • 当 y=−1 时,w^Tx+b<0,乘积仍为正。

因此,所有样本均满足 y(w^Tx+b)>0

(三)核心思想与基本概念

  • 决策超平面
    在 n 维空间中,一个超平面可以表示为

    w^T x + b = 0,

    其中 w 是超平面的法向量,b 是偏置。支持向量机寻找这样一个超平面,将正负类数据分隔开。

  • 最大化间隔
    SVM 不仅要求决策超平面能够分隔两类数据,还要求该超平面与数据中最近的点之间的距离(称为“间隔”)尽可能大。直观上,间隔越大,模型对噪声和数据变化的容忍度就越高,泛化能力也就越强。
    结合前面的点到超平面的距离公式,对于线性可分的情况,间隔可以证明是: ​,因此最大化间隔等价于最小化

       对于一个线性可分的数据集,其分割超平面有很多个,但是间隔最大的超平面是唯一的,下面放一张图辅助理解:

  • 支持向量
    那些位于决策边界附近的训练样本被称为“支持向量”。这些点决定了决策超平面的最终位置和方向。换句话说,只要知道支持向量的信息,就可以确定最优的超平面。

  • 非线性扩展
    当数据在原始空间中线性不可分时,SVM 可以使用“核技巧”(Kernel Trick)将数据映射到一个高维空间,在高维空间中数据可能变得线性可分,再在高维空间中找到最佳决策超平面。常见的核函数包括径向基函数(RBF)、多项式核等。

(四)间隔的推导过程如下:

  • 点到超平面的距离公式

对于任意点 x_0​ 到超平面的距离公式是:

  • 计算支持向量到决策边界的距离

  • 两个边界超平面之间的间隔

两个边界超平面之间的距离就是这两个距离的和,即:

(五)优化目标

因此,SVM 的目标是求解如下的优化问题:

约束条件为:

这里注意思考:为什么优化目标是 

**** 关于支持向量机参数的学习,鉴于篇幅,下一篇博文再做介绍。

(六)相关概念

1.线性可分 vs 非线性可分
  • 线性可分:存在一个超平面完美分隔两类数据(如二维平面上的直线)。

  • 非线性可分:需通过 核技巧(Kernel Trick)将数据映射到高维空间,使其线性可分。

2. 核函数(Kernel Function)
  • 作用:隐式计算高维空间的内积,避免显式映射。

  • 常见核函数

3. 软间隔(Soft Margin)

(七)SVM的优缺点

优点缺点
高维数据有效(核技巧)计算复杂度高(大规模数据不适用)
泛化能力强(间隔最大化)需要谨慎调参(如CC、γγ)
支持线性和非线性分类多分类需额外策略(OvR/OvO)

(八)代码示例

from sklearn import svm
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt# 生成线性可分数据
X, y = make_classification(n_features=2, n_redundant=0, n_informative=2, random_state=42)# 训练SVM
model = svm.SVC(kernel='linear', C=1.0)
model.fit(X, y)# 可视化决策边界
plt.scatter(X[:,0], X[:,1], c=y, cmap='bwr')
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()# 生成网格点
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = model.decision_function(xy).reshape(XX.shape)# 绘制超平面和间隔
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], linestyles=['--', '-', '--'])
ax.scatter(model.support_vectors_[:,0], model.support_vectors_[:,1], s=100, facecolors='none', edgecolors='k')
plt.show()

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

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

相关文章

记录一次解决springboot需要重新启动项目才能在前端界面展示静态资源的问题--------使用热部署解决

问题 使用sprinbootthymeleaf&#xff0c;前后端不分离&#xff0c;一个功能是用户可以上传图片&#xff0c;之后可以在网页展示。用户上传的图片能在对应的静态资源目录中找到&#xff0c;但是在target目录没有&#xff0c;导致无法显示在前端界面 解决 配置热部署 <depe…

【Python pro】函数

1、函数的定义及调用 1.1 为什么需要函数 提高代码复用性——封装将复杂问题分而治之——模块化利于代码的维护和管理 1.1.1 顺序式 n 5 res 1 for i in range(1, n1):res * i print(res) # 输出&#xff1a;1201.1.2 抽象成函数 def factorial(n):res 1for i in range(1…

[Web 信息收集] Web 信息收集 — 手动收集 IP 信息

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01&#xff1a;通过 DNS 服务获取域名对应 IP DNS 即域名系统&#xff0c;用于将域名与 IP 地址相互映射&#xff0c;方便用户访问互联网。对于域名到 IP 的转换过程则可以参考下面这篇…

大语言模型的评测

大语言模型评测是评估这些模型在各种任务和场景下的性能和能力的过程。 能力 1. 基准测试&#xff08;Benchmarking&#xff09; GLUE&#xff08;General Language Understanding Evaluation&#xff09;&#xff1a;包含多个自然语言处理任务&#xff0c;如文本分类、情感分…

Node.js与MySQL的深入探讨

Node.js与MySQL的深入探讨 引言 Node.js,一个基于Chrome V8引擎的JavaScript运行时环境,以其非阻塞、事件驱动的方式在服务器端应用中占据了一席之地。MySQL,作为一款广泛使用的开源关系型数据库管理系统,凭借其稳定性和高效性,成为了许多应用的数据库选择。本文将深入探…

STM32--SPI通信讲解

前言 嘿&#xff0c;小伙伴们&#xff01;今天咱们来聊聊STM32的SPI通信。SPI&#xff08;Serial Peripheral Interface&#xff09;是一种超常用的串行通信协议&#xff0c;特别适合微控制器和各种外设&#xff08;比如传感器、存储器、显示屏&#xff09;之间的通信。如果你…

基于定制开发开源AI大模型S2B2C商城小程序的商品选品策略研究

摘要&#xff1a;随着电子商务的蓬勃发展和技术的不断进步&#xff0c;商品选品在电商领域中的重要性日益凸显。特别是在定制开发开源AI大模型S2B2C商城小程序的环境下&#xff0c;如何精准、高效地选择推广商品&#xff0c;成为商家面临的一大挑战。本文首先分析了商品选品的基…

C#异步编程之async与await

一&#xff1a;需求起因 在 C# 中使用异步编程&#xff08;特别是使用 async 和 await 关键字&#xff09;通常是为了提高应用程序的响应性和性能&#xff0c;特别是在需要进行 I/O 操作或执行长时间运行的任务时。 常见应用场景如下&#xff1a; 1. 网络请求 HTTP 请求&…

PMP项目管理—整合管理篇—7.结束项目或阶段

文章目录 基本信息过程4W1HITTO输入工具与技术输出 收尾过程组项目收尾&#xff08;结束项目或阶段&#xff09;行政收尾/管理收尾 合同收尾&#xff08;结束采购&#xff09; 最终报告 基本信息 项目无论何因何时终止&#xff0c;都必须用结束项目或阶段过程来正式关闭。通过…

labview中VISA串口出现异常的解决方案

前两天在做项目时发现&#xff0c;当用VISA串口读取指令时出现了回复异常的情况&#xff0c;不管发什么东西就一直乱回&#xff0c;针对这个情况&#xff0c;后面在VISA串口中加了一个VISA寄存器清零的函数。加了之后果然好多了&#xff0c;不会出现乱回的情况&#xff0c;但是…

【GO】学习笔记

目录 学习链接 开发环境 开发工具 GVM - GO多版本部署 GOPATH 与 go.mod go常用命令 环境初始化 编译与运行 GDB -- GNU 调试器 基本语法与字符类型 关键字与标识符 格式化占位符 基本语法 初始值&零值&默认值 变量声明与赋值 _ 下划线的用法 字…

staruml绘制时序图和用例图

文章目录 1.文章介绍2.绘制用例图3.绘制时序图 1.文章介绍 之前&#xff0c;我们初步介绍了这个staruml软件的安装和如何使用这个软件对于uml类图进行绘制&#xff0c;当时我们是绘制了这个user类&#xff0c;实现了相关的接口&#xff0c;表示他们之间的关系&#xff0c;在今…

开放标准(RFC 7519):JSON Web Token (JWT)

开放标准&#xff1a;JSON Web Token 前言基本使用整合Shiro登录自定义JWT认证过滤器配置Config自定义凭证匹配规则接口验证权限控制禁用session缓存的使用登录退出单用户登录Token刷新双Token方案单Token方案 前言 JSON Web Token &#xff08;JWT&#xff09; 是一种开放标准…

使用 Polars 进行人工智能医疗数据分析(ICU数据基本测试篇)

引言 在医疗领域&#xff0c;数据就是生命的密码&#xff0c;每一个数据点都可能蕴含着拯救生命的关键信息。特别是在 ICU 这样的重症监护场景中&#xff0c;医生需要实时、准确地了解患者的病情变化&#xff0c;以便做出及时有效的治疗决策。而随着医疗技术的飞速发展&#x…

瑞芯微RK安卓Android主板GPIO按键配置方法,触觉智能嵌入式开发

触觉智能分享&#xff0c;瑞芯微RK安卓Android主板GPIO按键配置方法&#xff0c;方便大家更好利用空闲IO&#xff01;由触觉智能Purple Pi OH鸿蒙开发板演示&#xff0c;搭载了瑞芯微RK3566四核处理器&#xff0c;树莓派卡片电脑设计&#xff0c;支持安卓Android、开源鸿蒙Open…

SSL 证书是 SSL 协议实现安全通信的必要组成部分

SSL证书和SSL/TLS协议有着密切的关系&#xff0c;但它们本质上是不同的概念。下面是两者的区别和它们之间的关系的表格&#xff1a; 属性SSL/TLS 协议SSL证书英文全称SSL&#xff08;Secure Sockets Layer&#xff09;&#xff0c;TLS&#xff08;Transport Layer Security&am…

QT:模型视图代理

Qt Model/View/Delegate&#xff08;MVD&#xff09;框架&#xff0c;它是 Qt 中用于实现数据显示和编辑的一种架构模式&#xff0c;主要由模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和委托&#xff08;Delegate&#xff09;三部分组成&#xff0c;…

PowerShell 执行策略:fnm管理软件安装nodejs无法运行npm,错误信息:about_Execution_Policies

通过fnm管理软件安装NodeJS后添加环境变量依然无法执行npm,提示无法加载文件&#xff0c;错误如下&#xff1a; PowerShell 执行策略简介&#xff1a; PowerShell 执行策略是一项安全功能&#xff0c;用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶…

drupal的翻译集添加后如何起作用

在 Drupal 中&#xff0c;翻译集&#xff08;Translation Set&#xff09;添加后&#xff0c;需要进行 正确的配置和激活 才能生效。以下是确保翻译集&#xff08;如界面翻译、内容翻译、配置翻译等&#xff09;生效的步骤&#xff1a; 1. 确保已启用多语言模块 在 Drupal 8/9…

利用 Windows Terminal 和 SSH Config 简化 Linux 服务器管理

在日常的 Linux 服务器管理中&#xff0c;频繁登录不同的主机是一项常见任务。传统方法可能需要记住复杂的 IP 地址、用户名和端口&#xff0c;或者依赖如 Xshell 这样的第三方工具。但借助 Windows Terminal 和 SSH 的 .ssh/config 文件&#xff0c;我们可以打造一个高效、免费…