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

深入浅出理解支持向量机(SVM):从原理到实践

一、SVM 的核心目标:找到最优划分超平面

1.1 基本需求:实现样本分类

SVM 的核心任务很明确,就是在样本空间中找到一个划分超平面,将不同类别的样本准确分开。比如在二维样本空间中,这个超平面就是一条直线;在三维样本空间中,超平面则是一个平面;而在 n 维样本空间中,超平面是 n-1 维的子空间。

从数学角度来看,超平面可以用方程 wᵀx + b = 0 来表示。其中,w 是超平面的法向量,决定了超平面的方向;b 是偏置项,决定了超平面在空间中的位置。通过这个方程,我们可以判断任意样本点 x 属于哪一类别 —— 当 wᵀx + b > 0 时,样本属于正类(通常标记为 y=+1);当 wᵀx + b < 0 时,样本属于负类(通常标记为 y=-1)。

1.2 理想超平面:具备抗扰动能力

在样本空间中,能实现分类的超平面可能有无数个,但并非所有超平面都能满足实际需求。SVM 追求的是理想超平面—— 这种超平面对训练样本的局部扰动 “容忍性” 最好,也就是说,即使训练样本出现微小的偏移,超平面依然能准确分类,模型的泛化能力更强。

如何衡量超平面的 “容忍性” 呢?这就需要引入 “间隔(margin)” 的概念。间隔指的是两类样本中距离超平面最近的点到超平面的距离之和。理想的超平面,就是能使间隔最大化的超平面。因为间隔越大,超平面与样本点的 “安全距离” 就越远,对局部扰动的抵抗能力自然越强。

二、SVM 的优化过程:从最大化间隔到求解目标函数

2.1 优化目标:最大化间隔

假设样本空间中,距离超平面最近的样本点到超平面的距离为 d,那么间隔 margin = 2d。要最大化间隔,本质上就是最大化 d。

根据点到超平面的距离公式,对于样本点 (xᵢ, yᵢ),其到超平面 wᵀx + b = 0 的距离为:
dᵢ = |wᵀxᵢ + b| / ||w||
(其中 ||w|| 是向量 w 的 L2 范数,即 ||w|| = √(w₁² + w₂² +... + wₙ²))

由于理想超平面能正确分类所有样本,对于正类样本(yᵢ=+1),有 wᵀx + b > 0;对于负类样本(yᵢ=-1),有 wᵀx + b <0。因此,yᵢ(wᵀxᵢ + b) > 0,此时 | wᵀxᵢ + b| = yᵢ(wᵀxᵢ + b),距离公式可简化为:
dᵢ = yᵢ(wᵀxᵢ + b) / ||w||

而距离超平面最近的样本点满足 yᵢ(wᵀxᵢ + b) = 1(通过对 w 和 b 进行放缩变换,可使这个等式成立),这类样本点就是支持向量—— 它们是决定超平面位置的关键,其他样本点对超平面的位置没有影响。

此时,最近样本点到超平面的距离 d = 1/||w||,间隔 margin = 2/||w||。要最大化间隔,就等价于最小化 ||w||²/2(选择 ||w||²/2 是为了后续求导计算更简便,不影响优化方向)。

2.2 带约束的优化问题

综上,SVM 的优化问题可转化为:

  • 最小化目标函数:f (w) = (1/2)||w||²
  • 约束条件:yᵢ(wᵀxᵢ + b) ≥ 1(i = 1, 2,..., n)

这是一个带不等式约束的凸二次规划问题,直接求解难度较大,因此需要借助拉格朗日乘子法,将其转化为对偶问题进行求解。

2.3 拉格朗日乘子法:转化为对偶问题

对于带约束的优化问题,拉格朗日乘子法的核心思想是将约束条件融入目标函数,构造拉格朗日函数。针对 SVM 的优化问题,构造的拉格朗日函数为:
L (w, b, α) = (1/2)||w||² - Σαᵢ[yᵢ(wᵀxᵢ + b) - 1]
(其中 αᵢ ≥ 0 是拉格朗日乘子,i = 1, 2,..., n)

根据对偶理论,原问题(最小化 f (w))的最优解等价于其对偶问题(最大化拉格朗日函数对 w 和 b 的最小值)的最优解,即:
min (w,b) max (α) L (w, b, α) = max (α) min (w,b) L (w, b, α)

第一步:对 w 和 b 求偏导并令其为 0

要计算 min (w,b) L (w, b, α),需要分别对 w 和 b 求偏导,并令偏导数为 0,得到两个关键条件:

  1. 对 w 求偏导:∂L/∂w = w - Σαᵢyᵢxᵢ = 0 → w = Σαᵢyᵢxᵢ
  2. 对 b 求偏导:∂L/∂b = -Σαᵢyᵢ = 0 → Σαᵢyᵢ = 0
第二步:代入拉格朗日函数,简化对偶问题

将 w = Σαᵢyᵢxᵢ和 Σαᵢyᵢ = 0 代入拉格朗日函数,可消去 w 和 b,得到对偶问题的目标函数:
max (α) Σαᵢ - (1/2)ΣΣαᵢαⱼyᵢyⱼ(xᵢ・xⱼ)
(其中 xᵢ・xⱼ是样本点 xᵢ和 xⱼ的内积)

同时,对偶问题的约束条件为:

  1. Σαᵢyᵢ = 0
  2. αᵢ ≥ 0(i = 1, 2,..., n)

2.4 求解对偶问题:得到支持向量与超平面

求解上述对偶问题后,我们可以得到最优的拉格朗日乘子 α*。根据 KKT 条件(互补松弛条件),只有支持向量对应的 αᵢ > 0,其他样本点的 αᵢ = 0。

利用 α*,我们可以进一步计算超平面的参数:

  1. 法向量 w* = Σα*ᵢyᵢxᵢ(仅由支持向量贡献)
  2. 偏置项 b* = yⱼ - w*ᵀxⱼ(任选一个支持向量 (xⱼ, yⱼ) 计算)

最终,SVM 的分类决策函数为:
f (x) = sign (wᵀx + b) = sign(Σαᵢyᵢ(xᵢ·x) + b)

三、SVM 的关键技术:应对实际数据挑战

3.1 软间隔:处理含噪声的数据

在实际应用中,数据往往存在噪声或异常值,此时 “硬间隔”(要求所有样本都满足 yᵢ(wᵀxᵢ + b) ≥ 1)的要求过于严格,可能导致模型无法找到合适的超平面,或出现过拟合。

为了解决这一问题,SVM 引入了松弛因子 ξᵢ ≥ 0,将约束条件放宽为:
yᵢ(wᵀxᵢ + b) ≥ 1 - ξᵢ

同时,目标函数需要加入对松弛因子的惩罚,以平衡间隔大小和分类错误:
min (w,b,ξ) (1/2)||w||² + CΣξᵢ
(其中 C 是惩罚参数,控制对分类错误的容忍程度)

  • 当 C 趋近于无穷大时,惩罚力度极强,模型会尽量避免分类错误,退化为硬间隔 SVM;
  • 当 C 趋近于 0 时,惩罚力度极弱,模型允许更多分类错误,间隔会变得很大,但可能导致欠拟合。

软间隔 SVM 的求解过程与硬间隔类似,同样通过拉格朗日乘子法转化为对偶问题,只是约束条件变为 0 ≤ αᵢ ≤ C(C 为惩罚参数)。

3.2 核函数:解决低维不可分问题

在很多场景下,样本在低维空间中是线性不可分的(比如 “异或” 问题),此时硬间隔和软间隔 SVM 都无法直接应用。SVM 的解决方案是将低维空间中的样本映射到高维空间,使样本在高维空间中线性可分。

核函数的核心思想

假设存在一个映射函数 Φ(x),能将低维空间的样本 x 映射到高维特征空间的 Φ(x)。在高维空间中,SVM 的对偶问题目标函数中的内积 (xᵢ・xⱼ) 会变为 (Φ(xᵢ)・Φ(xⱼ))。

然而,直接计算高维空间的内积会面临 “维数灾难”—— 当维度过高时,计算量会急剧增加。核函数的巧妙之处在于,它可以在低维空间中直接计算高维空间内积的结果,无需显式构造映射函数 Φ(x)。

核函数 K (xᵢ, xⱼ) 满足:
K (xᵢ, xⱼ) = Φ(xᵢ)・Φ(xⱼ)

常用的核函数
  1. 线性核函数:K(xᵢ, xⱼ) = xᵢ·xⱼ
    适用于低维空间中线性可分的数据,本质上就是硬间隔或软间隔 SVM。

  2. 高斯核函数(RBF 核):K(xᵢ, xⱼ) = exp(-||xᵢ - xⱼ||²/(2σ²))
    适用于低维不可分的数据,能将样本映射到无穷维空间,灵活性极高,是实际应用中最常用的核函数之一。其中 σ 是带宽参数,控制核函数的平滑程度。

  3. 多项式核函数:K(xᵢ, xⱼ) = (xᵢ·xⱼ + c)^d
    (c≥0 是常数,d 是多项式的次数)适用于样本具有多项式分布规律的数据。

四、SVM 求解实例:直观理解计算过程

为了让大家更直观地理解 SVM 的求解过程,我们通过一个简单的实例进行演示。

假设存在 3 个样本点:

  • 正例 1:x₁=(3,3),y₁=+1
  • 正例 2:x₂=(4,3),y₂=+1
  • 负例 1:x₃=(1,1),y₃=-1

步骤 1:构造对偶问题目标函数

根据对偶问题的目标函数:
max (α) Σαᵢ - (1/2)ΣΣαᵢαⱼyᵢyⱼ(xᵢ・xⱼ)

代入样本点的内积(x₁・x₁=18,x₁・x₂=21,x₁・x₃=6,x₂・x₂=25,x₂・x₃=7,x₃・x₃=2)和类别标签,目标函数可展开为:
max (α) (α₁ + α₂ + α₃) - (1/2)[18α₁² + 21α₁α₂ - 6α₁α₃ + 21α₂α₁ + 25α₂² - 7α₂α₃ - 6α₃α₁ - 7α₃α₂ + 2α₃²]

结合约束条件 Σαᵢyᵢ = 0(即 α₁ + α₂ - α₃ = 0 → α₃ = α₁ + α₂),代入目标函数并化简,可将其转化为关于 α₁和 α₂的函数。

步骤 2:求解最优 α*

对化简后的目标函数分别求 α₁和 α₂的偏导,并令偏导为 0,得到方程组。求解后发现,直接得到的解不满足 αᵢ ≥ 0 的约束,因此需要在边界上寻找最优解。

通过尝试边界条件(如 α₁=0、α₂=0 等),最终得到最优的 α为:
α₁
 = 0.25,α₂* = 0,α₃* = 0.25
(只有 α₁和 α₃ > 0,因此 x₁和 x₃是支持向量)

步骤 3:计算超平面参数

  1. 法向量 w* = Σα*ᵢyᵢxᵢ = 0.25×1×(3,3) + 0×1×(4,3) + 0.25×(-1)×(1,1) = (0.5, 0.5)
  2. 偏置项 b* = y₁ - w*ᵀx₁ = 1 - (0.5×3 + 0.5×3) = -2

步骤 4:得到超平面方程与决策函数

超平面方程为:0.5x₁ + 0.5x₂ - 2 = 0
分类决策函数为:f (x) = sign (0.5x₁ + 0.5x₂ - 2)

http://www.dtcms.com/a/351086.html

相关文章:

  • 支持向量机(SVM)核心笔记
  • 人类记忆如何启发AI?LLM记忆机制综述解读
  • Vue中的props方式
  • SELinux存在于过去的Linux安全增强模块
  • 可解释的多尺度深度学习在胸腔积液细胞块与细胞学涂片恶性肿瘤检测及侵袭性子宫内膜癌识别中的应用|文献速递-深度学习人工智能医疗图像
  • 6年前抄写的某品牌集成灶-蒸汽炉
  • UCIE Specification详解(七)
  • Linux文件系统深入解析:从原理到实践
  • 校园跑腿小程序源码 | 跑腿便利店小程序(源码下载)
  • Nginx访问限制学习笔记
  • 智慧AI消防通道占用检测在危险区域的应用
  • 数据结构青铜到王者第五话---LinkedList与链表(2)
  • 懂支持向量机(SVM):从原理到实战拆解
  • 算法-每日一题(DAY15)用队列实现栈
  • SQLBot 智能问数、数据洞察逻辑拆解
  • 【GM3568JHF】FPGA+ARM异构开发板 应用编辑及源码下载
  • 零基础也能照做的WordPress网站安全漏洞修复 + 高级优化保姆级教程。
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第七章知识点问答(22题)
  • Netty源码—性能优化和设计模式
  • HarmonyOS 中的 @Prop 装饰器:深入理解单向数据传递
  • 网站如何被搜索引擎收录(Google、Bing、百度等)
  • [特殊字符]Windows 资源监视器使用指南:查端口以后不用敲命令了
  • AI解决生活小事系列——用AI给我的电脑做一次“深度体检”
  • 【LeetCode 热题 100】31. 下一个排列
  • Python之matplotlib 基础五:绘制饼状统计图
  • 有鹿机器人:为城市描绘清洁新图景的智能使者
  • Linux IO模型:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO
  • 绿算技术解密金融科技安全:高性能计算与存储驱动金融防火墙新时代
  • 系统安全难题咋解?低代码给出新思路
  • 打破技术壁垒的先进制造框架的智慧工业开源了