线性模型 - 支持向量机

支持向量机(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()

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

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

相关文章

利用STM32TIM自制延迟函数实验

一、实验目的 掌握STM32定时器&#xff08;TIM&#xff09;的工作原理及配置方法学习使用HAL库实现微秒级/毫秒级延时函数理解定时器中断服务程序的编写规范 二、实验原理 ​定时器基础&#xff1a; STM32定时器包含向上计数器、向下计数器、中心对齐模式通过预分频器&#x…

mac安装环境

minconda https://docs.anaconda.net.cn/miniconda/install/ 注意在下载下来应该有100多兆&#xff0c;太大了应该是完整版&#xff0c;我们不需要 jdk 镜像网站下载设置环境变量&#xff1a; 终端&#xff1a;sudo vim ~/.zshrc # JDK Config JAVA_HOME/Library/Java/Java…

视觉图像坐标转换

1. 透镜成像 相机的镜头系统将三维场景中的光线聚焦到一个平面&#xff08;即传感器&#xff09;。这个过程可以用小孔成像模型来近似描述&#xff0c;尽管实际相机使用复杂的透镜系统来减少畸变和提高成像质量。 小孔成像模型&#xff1a; 假设有一个理想的小孔&#xff0c;…

计算机毕业设计SpringBoot+Vue.js景区民宿预约系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【LeetCode: SQL专题 : SQL132 每个题目和每份试卷被作答的人数和次数 + 合并查询】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

动态内容加载的解决方案:Selenium与Playwright对比故障排查实录

方案进程 2024-09-01 09:00 | 接到亚航航班数据采集需求 2024-09-01 11:30 | 首次尝试使用Selenium遭遇Cloudflare验证 2024-09-01 14:00 | 切换Playwright方案仍触发反爬机制 2024-09-01 16:30 | 引入爬虫代理IPUA轮换策略 2024-09-02 10:00 | 双方案完整实现并通过压力测试故…

不同规模企业如何精准选择AI工具: DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具深度剖析与对比

本文深入探讨了最近国内外主流的 DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具的技术细节、性能表现、应用场景及局限性&#xff0c;并从技术能力、功能需求、成本预算、数据安全和合规以及服务与支持五个关键维度&#xff0c;详细分析了不同规模企业在选择 AI 工具时的考量因素…

利用 Python 爬虫进行跨境电商数据采集

1 引言2 代理IP的优势3 获取代理IP账号4 爬取实战案例---&#xff08;某电商网站爬取&#xff09;4.1 网站分析4.2 编写代码4.3 优化代码 5 总结 1 引言 在数字化时代&#xff0c;数据作为核心资源蕴含重要价值&#xff0c;网络爬虫成为企业洞察市场趋势、学术研究探索未知领域…

【数据挖掘】Matplotlib

Matplotlib 是 Python 最常用的 数据可视化 库之一&#xff0c;在数据挖掘过程中&#xff0c;主要用于 数据探索 (EDA)、趋势分析、模式识别 和 结果展示。 &#x1f4cc; 1. Matplotlib 基础 1.1 安装 & 导入 # 如果未安装 Matplotlib&#xff0c;请先安装 # pip instal…

使用Java构建高效的Web服务架构

使用Java构建高效的Web服务架构 随着互联网技术的飞速发展&#xff0c;Web服务在现代应用中扮演着至关重要的角色。尤其是在企业级应用中&#xff0c;如何构建一个高效、可扩展且易维护的Web服务架构&#xff0c;成为了开发者和架构师面临的一项重要挑战。Java作为一种成熟、稳…

数据库MySQL,在终端输入后,提示不是内部命令等

【解决问题】mysql提示不是内部或外部命令&#xff0c;也不是可运行的程序 一般这种问题是因为没有在系统变量里面添加MySQL的可执行路径 以下是添加可执行路径的方法&#xff1a; 第一步&#xff1a;winR输入services.msc 然后找到MySQL&#xff0c;右击属性并复制MySQL的可执…

LabVIEW正弦信号处理:FFT与最小二乘拟合的参数提取

问题一&#xff1a;LabVIEW能否对采集的正弦力信号进行快速傅里叶变换&#xff08;FFT&#xff09;&#xff0c;并得到幅值和相位结果&#xff1f; 答案&#xff1a; 可以。LabVIEW通过内置信号处理工具包提供完整的FFT分析功能&#xff0c;具体实现如下&#xff1a; FFT分析流…

Hive-05之查询 分组、排序、case when、 什么情况下Hive可以避免进行MapReduce

一、目标 掌握hive中select查询语句中的基本语法掌握hive中select查询语句的分组掌握hive中select查询语句中的join掌握hive中select查询语句中的排序 二、要点 1. 基本查询 注意 SQL 语言大小写不敏感SQL 可以写在一行或者多行关键字不能被缩写也不能分行各子句一般要分行…

React:B站评论demo,实现列表渲染、删除按钮显示和功能实现、导航栏渲染切换及高亮显示、评论区的排序

功能要求&#xff1a; 1、渲染评论列表 2、删除评论功能&#xff1a;只显示自己评论的删除按钮&#xff1b;点击删除按钮&#xff0c;删除当前评论&#xff0c;列表中不再显示。 3、渲染导航Tab&#xff08;最新 | 最热&#xff09;和其 高亮实现 4、评论排序功能实现&…

ST表解决RMQ问题

引入 给定你一个长度为n的数组a&#xff0c;再给你q次询问&#xff0c;每次询问给定你一个区间[L,R]&#xff0c;让你求a数组中L~R中的最大值/最小值 我们利用常规算法求时很显然会超时&#xff0c;以此我们需要一个数据结构——ST表来解决 ST表 ST表是一个类似于线段树的东…

[数据结构] - - - 链表

一、定义 链表&#xff1a;是一种常见的线性数据结构&#xff0c;它通过一组节点&#xff08;Node&#xff09;来存储数据&#xff0c;每个节点包含两部分&#xff1a;数据域和指针域。 1.1 链表的基本概念 节点&#xff08;Node&#xff09;&#xff1a;链表的最小单元&#…

Linux的动态库与静态库

目录 动静态库的基本原理 认识动静态库 动静态库各自的特征 静态库 动态库 动静态库与内存 静态库的加载方式 动态库的加载方式 加载到物理内存的细节 静态库的打包与使用 打包 使用 动态库的打包与使用 打包 使用 我以前写的一篇文章中就用网吧与在宿舍自己组装电…

图漾PercipioIPTool软件使用

文章目录 前期准备1.PercipioIPTool软件1.1 更改网络适配器1.2 更改自动获取IP1.3设置静态IP 前期准备 1.一根超五类及其以上规格网线&#xff08;cat5e、cat6…&#xff09; 2.相机&#xff0c;配套网线和IO线 3.配套软件PercipioViewer或者PercipioIPTool软件(Windows环境使…

EasyRTC嵌入式WebRTC技术与AI大模型结合:从ICE框架优化到AI推理

实时通信技术在现代社会中扮演着越来越重要的角色&#xff0c;从视频会议到在线教育&#xff0c;再到远程医疗&#xff0c;其应用场景不断拓展。WebRTC作为一项开源项目&#xff0c;为浏览器和移动应用提供了便捷的实时通信能力。而EasyRTC作为基于WebRTC的嵌入式解决方案&…

《白帽子讲 Web 安全:点击劫持》

目录 摘要&#xff1a; 一、点击劫持概述 二、点击劫持的实现示例&#xff1a;诱导用户收藏指定淘宝商品 案例 构建恶意页面&#xff1a; 设置绝对定位和z - index&#xff1a; 控制透明度&#xff1a; 三、其他相关攻击技术 3.1图片覆盖攻击与 XSIO 3.2拖拽劫持与数据…