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

机器学习-支持向量机

在机器学习的分类算法中,支持向量机(Support Vector Machine, SVM)是极具代表性的 “优雅派”—— 它通过寻找 “最优超平面” 实现分类,兼具理论深度与实战价值,至今仍是小样本、高维数据(如图像、文本)分类的优选方案。

一、SVM 的核心目标:找到 “最稳健” 的划分超平面

1. 什么是超平面?

超平面是 SVM 的 “分类工具”,本质是n 维空间中分隔不同类别的 n-1 维子空间

  • 2 维空间(平面):超平面是 1 维直线(如Ax+By+C=0);
  • 3 维空间:超平面是 2 维平面(如Ax+By+Cz+D=0);
  • n 维空间:超平面用通用方程表示为 wᵀx + b = 0w是超平面的法向量,决定超平面方向;b是偏移量,决定超平面位置)。

2. 为什么需要 “最优” 超平面?

面对两类样本,能分隔它们的超平面有无数个,但 SVM 要找的是对样本扰动 “容忍性最强” 的超平面—— 即 “离超平面最近的样本点,距离尽可能远”。这些 “最近的样本点” 就是支持向量(Support Vectors),它们决定了超平面的位置,也是 SVM 名称的由来。

二、SVM 的数学推导:从 “最大化间隔” 到 “求解约束优化”

SVM 的核心是 “最大化支持向量到超平面的距离”,这一目标需要通过数学转化为可求解的优化问题。

1. 第一步:定义 “间隔”(Margin)

  • 点到超平面的距离:对于 n 维空间中的样本点x,到超平面wᵀx + b = 0的距离公式为:
    d=∥w∥∣w⊤x+b∣​
    \|w\|是法向量w的 L2 范数,即√(w₁²+w₂²+…+wₙ²))。

  • 间隔的定义:间隔是 “两类支持向量到超平面距离之和”,即Margin = 2dd是单侧支持向量到超平面的距离)。
    SVM 的目标是最大化间隔,本质等价于 “最大化d”。

2. 第二步:转化为约束优化问题

为了最大化d,需要添加约束条件:所有样本都要在超平面的 “正确一侧”,且支持向量到超平面的距离至少为d
结合样本标签(y=+1表示正例,y=-1表示负例),约束条件可写为:
yi​(w⊤xi​+b)≥1(i=1,2,...,n)
(这里做了 “放缩变换”:通过调整wb的尺度,让支持向量满足y_i(w^\top x_i + b) = 1,其他样本满足 “≥1”,简化计算)。

此时,“最大化d” 的目标可转化为:
(因)
而 “最大化1/‖w‖” 等价于 “最小化(1/2)‖w‖²”(平方项便于求导,系数1/2不影响最优解)。最终,SVM 的优化问题变为:
minw,b​21​∥w∥2 s.t. yi​(w⊤xi​+b)≥1(i=1,2,...,n)

3. 第三步:用拉格朗日乘子法求解

上述是 “带约束的凸优化问题”,需用拉格朗日乘子法将其转化为无约束问题。
构造拉格朗日函数:
L(w,b,α)=21​∥w∥2−∑i=1n​αi​[yi​(w⊤xi​+b)−1]
其中α_i ≥ 0是拉格朗日乘子,对应每个样本的约束条件。

通过对wb求偏导并令其为 0,可得到两个关键条件:

  1. w = ∑_{i=1}^n α_i y_i x_i(超平面的法向量w由支持向量的线性组合构成,非支持向量的α_i=0,不影响结果);
  2. ∑_{i=1}^n α_i y_i = 0(偏移量b的求解条件)。

w代入拉格朗日函数,最终转化为 “对偶问题”:
maxα​∑i=1n​αi​−21​∑i=1n​∑j=1n​αi​αj​yi​yj​xi⊤​xj​
s.t. ∑i=1n​αi​yi​=0,αi​≥0(i=1,2,...,n)

求解这个对偶问题后,即可得到α,进而通过wb确定最优超平面。

三、SVM 的关键拓展:解决 “线性不可分” 问题

现实中,很多数据无法用线性超平面分隔(如 “异或问题”),此时需要 SVM 的两个核心技巧:软间隔核函数

1. 软间隔:容忍少量 “噪声样本”

当数据中存在噪声(如异常点)时,“严格线性可分” 的要求过于苛刻,SVM 引入松弛因子ξ_i ≥ 0,允许少量样本不满足 “y_i(w^\top x_i + b) ≥ 1”,约束条件变为:
yi​(w⊤xi​+b)≥1−ξi​

目标函数也相应调整,增加 “惩罚项” 控制噪声容忍度:
minw,b,ξ​21​∥w∥2+C∑i=1n​ξi​
其中C是 “惩罚系数”:

  • C越大:对噪声的惩罚越重,要求分类尽可能准确,可能导致过拟合;
  • C越小:对噪声的容忍度越高,可能导致欠拟合。

2. 核函数:将低维数据映射到高维

当数据在低维空间线性不可分时,可通过核函数将其映射到高维空间,使其线性可分。

(1)核函数的核心思想

举个简单例子:2 维空间中 “异或数据”((0,0)、(1,1) 为负例,(0,1)、(1,0) 为正例)无法用直线分隔,但映射到 3 维空间(如φ(x₁,x₂)=(x₁², x₂², √2x₁x₂))后,就能用平面分隔。

但直接映射到高维会面临 “维度灾难”(如 3 维映射到 9 维,100 维映射到 10⁴维,计算量暴增)。核函数的巧妙之处在于:无需显式计算高维映射,直接在低维空间计算高维空间的内积

即对于样本xz,核函数K(x,z) = φ(x)^\top φ(z),只需计算K(x,z),就能替代高维内积,大幅降低计算成本。

(2)常用核函数

四、SVM 的优缺点与适用场景

优点

  1. 泛化能力强:基于 “最大化间隔”,对噪声不敏感,不易过拟合(尤其小样本数据);
  2. 适合高维数据:无需降维,能处理特征数远大于样本数的场景(如图像的像素特征);
  3. 鲁棒性好:仅依赖支持向量,非支持向量的变化不影响超平面;
  4. 可处理非线性数据:通过核函数轻松应对非线性分类任务。

缺点

  1. 计算复杂度高:对偶问题的求解时间随样本数增加而增长,不适合超大数据集(如百万级样本);
  2. 参数调优复杂:需调整C(软间隔惩罚系数)和核函数参数,对新手不友好;
  3. 多分类支持弱:原生 SVM 仅支持二分类,多分类需通过 “一对多”“一对一” 等策略间接实现。

适用场景

  • 小样本、高维数据分类(如图像识别、手写数字识别);
  • 非线性分类任务(如复杂模式识别);
  • 对泛化能力要求高的场景(如医疗诊断、金融风险预测)。

五、总结

支持向量机是机器学习中 “理论与实践结合” 的典范 —— 它以 “最大化间隔” 为核心,通过拉格朗日乘子法解决约束优化,用核函数突破线性不可分限制,最终实现高效分类。尽管在超大数据集上的表现不如深度学习,但在小样本、高维数据场景中,SVM 仍有不可替代的优势。

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

相关文章:

  • 【Java SE】深入理解异常处理机制
  • Spring AI 入门指南:三步将AI集成到Spring Boot应用
  • 开发避坑指南(38):DOM4J解析XML文件报错“前言中不允许有内容”的解决方案
  • WPF TabControl页面绑定ItemsSource
  • F006 vue+flask python 垃圾分类可视化系统+爬虫
  • 力扣(逆波兰表达式求值)
  • 英伟达 Spectrum-XGS:重构 AI 基础设施,开启跨域超级工厂时代
  • Day3--HOT100--42. 接雨水,3. 无重复字符的最长子串,438. 找到字符串中所有字母异位词
  • JHipster 生成器快速入门
  • 爬虫 API:从技术架构到实战落地的全维度解析
  • 功能强大的PDF工具箱-- PDF补丁丁,v1.1.0.4657新版本,免费无广告,开箱即用版~
  • HarmonyOS 中 @Observed 与 @ObjectLink:对象级别的响应式数据管理
  • 鸿蒙中使用极光推送
  • 阿里云docker搭建的mysql无法访问
  • 如何下载MySQL小白指南 (以 Windows 为例)
  • CNN 中 3×3 卷积核等设计背后的底层逻辑
  • 负载均衡之带权重的随机负载均衡算法详解与实现
  • 【LeetCode】动态规划——198.打家劫舍、213.打家劫舍||、337.打家劫舍|||
  • 开发避坑指南(37):Vue3 标签页实现攻略
  • 【Python系列】Flask 和 FastAPI对比
  • 高性价比的云手机该怎样进行选择?
  • GraphRAG——v0.3.5版本
  • 从MySQL到OpenTenBase:电商平台分布式数据库架构升级实战
  • TCP协议11种状态
  • 【人工智能AI、机器学习ML、深度学习DL、基础模型FM、LLM、GPT、Generative AI 分别是什么?他们之间的关系是什么?】
  • 一个头像图片滚动轮播组件(React实现)
  • vscode有的结构体不能补全,有的可以补全问题的解决.
  • 校园资讯平台|校园资讯平台系统|基于java和小程序的校园资讯平台设计与实现(源码+数据库+文档)
  • 《数据之心》——鱼小妖的觉醒(童年篇)
  • 【国密证书】CentOS 7 安装 GmSSL 并生成国密证书