机器学习&第四章支持向量机

四、SVM(支持向量机)

SVM(Support Vector Machine)是经典的二分类模型,核心思想是找一条 "最优分类线(超平面)",让两类样本的间隔最大,泛化能力最强。

4.1 最大间隔的思想(对应图 4-3)

先从最简单的 "线性可分" 场景(两类样本能被一条直线完全分开)讲起。

核心概念

1. 分类超平面(线性可分)

在二维空间是 "直线",高维空间是 "超平面",公式:WTX+b=0

  • W:超平面的法向量(决定超平面方向);
  • b:偏置项(决定超平面位置);
  • 分类规则:
    • 若 WTX+b>0,样本属于正类(y=+1);
    • 若 WTX+b<0,样本属于负类(y=−1)。
2. 函数间隔

衡量样本到超平面的 "粗略距离",公式:γ^​i​=yi​(WTXi​+b)

  • 若样本分类正确:γ^i>0(比如正类样本y=+1,WTX+b>0);
  • 若分类错误:γ^i<0;
  • 函数间隔的缺点:缩放W和b(比如W×2,b×2),超平面不变,但函数间隔会翻倍,无法准确衡量真实距离。
3. 几何间隔(真实距离)

对函数间隔归一化,消除W缩放的影响,公式:γi​=∥W∥yi​(WTXi​+b)​

  • ∥W∥:W的 L2 范数(∥W∥=w12+w22+...+wd2);
  • 几何间隔是样本到超平面的垂直距离,是真实的距离度量。

最大间隔核心目标

在所有能正确分类样本的超平面中,找到几何间隔最大的那个超平面(最优超平面)。

  • 间隔:两类样本中,到超平面最近的样本的几何间隔的2 倍(对应图 4-3 中,两条平行于超平面的 "间隔边界" 之间的距离);
  • 支持向量:到最优超平面最近的样本(间隔边界上的样本),SVM 的参数仅由这些样本决定,其他样本不影响。
数学表达(线性可分 SVM)

目标:最大化几何间隔 γ=∥W∥1​(简化后),约束条件是所有样本分类正确(γi​≥γ),最终转化为:minW,b​21​∥W∥2s.t.yi​(WTXi​+b)≥1

  • 约束条件 yi(WTXi+b)≥1:保证所有样本的函数间隔≥1,几何间隔≥∥W∥1;
  • 目标函数 21∥W∥2:最大化间隔等价于最小化∥W∥2(因为γ=∥W∥1)。

人话解释

你可以把 SVM 的最大间隔理解为:"在两类样本之间拉一道墙,让墙到两边最近样本的距离尽可能大",这样墙的 "稳定性" 最好,新样本过来时不容易分错。

4.2 带松弛因子的 SVM:软间隔的思想

现实中数据几乎不可能 "完全线性可分"(总有个别样本混在另一类里),因此引入 "软间隔"------ 允许少量样本分类错误,或落在间隔边界内。

核心改进:引入松弛因子ξi​

对每个样本i,添加松弛因子ξi​≥0,表示该样本的 "违规程度":

  • ξi=0:样本分类正确,且在间隔边界外(无违规);
  • 0<ξi<1:样本分类正确,但落在间隔边界内(轻微违规);
  • ξi≥1:样本分类错误(严重违规)。

软间隔 SVM 的目标函数

minW,b,ξi​​21​∥W∥2+C∑i=1m​ξi​s.t.yi​(WTXi​+b)≥1−ξi​,ξi​≥0

  • C:惩罚系数(超参数),控制 "间隔大小" 和 "违规样本惩罚" 的平衡:
    • C越大:对违规样本惩罚越重,模型越想把所有样本分类正确,容易过拟合;
    • C越小:对违规样本惩罚越轻,间隔越大,允许更多样本违规,容易欠拟合;
  • 约束条件 yi(WTXi+b)≥1−ξi:允许样本违规,但违规程度由ξi限制。

人话解释

软间隔相当于 "墙可以稍微歪一点,允许个别样本蹭到墙上甚至穿过墙,但蹭得越狠,惩罚越重",C就是 "惩罚力度"------C越大,越不允许样本蹭墙;C越小,对蹭墙的容忍度越高。

4.3 合页损失函数

SVM 的目标函数可以转化为 "损失函数 + 正则项" 的形式,核心损失函数是合页损失(Hinge Loss)

4.3.1 核心损失函数公式

1. 0-1 损失函数(理想损失,不可导)

0-1 损失是分类任务的 "理想损失",直接判断分类是否正确:L0−1​(y,f(X))={01​if yf(X)≥0otherwise​

  • f(X)=WTX+b(超平面输出);
  • yf(X)≥0:分类正确,损失为 0;分类错误,损失为 1;
  • 缺点:非凸、不可导,无法用于梯度下降优化。
2. 合页损失函数(公式 4-23)

合页损失是 0-1 损失的 "凸近似",可导且能优化,公式:Lhinge​(y,f(X))=max(0,1−yf(X))

  • yf(X):即软间隔中的yi(WTXi+b);
  • 解读:
    • 若yf(X)≥1(样本分类正确且在间隔外):损失 = 0;
    • 若0<yf(X)<1(样本分类正确但在间隔内):损失 =1−yf(X)(违规程度);
    • 若yf(X)≤0(样本分类错误):损失 =1−yf(X)(错误越严重,损失越大)。
3. 带正则的合页损失(SVM 等价形式)

SVM 的目标函数等价于:minW,b​m1​∑i=1m​max(0,1−yi​(WTXi​+b))+λ∥W∥2

  • λ=2C1(和软间隔的C对应);
  • 第一部分:合页损失(衡量分类误差);
  • 第二部分:L2 正则(∥W∥2,对应最大间隔,防止过拟合)。

4.3.2 各类损失函数的共同特征(对应图 4-6)

图 4-6 通常展示二分类任务中常见损失函数的曲线(横轴:yf(X),纵轴:损失值),核心特征:

损失函数 曲线特征 共同特征
0-1 损失 阶跃函数,yf(X)<0时损失 = 1,否则 = 0 1. 当yf(X)→+∞(分类极正确),所有损失都趋近于 0;2. 当yf(X)→−∞(分类极错误),所有损失都单调递增;3. 合页损失 / 交叉熵损失都是 0-1 损失的凸近似,可导,适合优化;4. 损失函数的核心作用:惩罚分类错误 / 违规的样本,奖励分类正确的样本。
合页损失 折线,yf(X)≥1时损失 = 0,yf(X)<1时线性递增
交叉熵损失(Logistic 回归) 对数曲线,yf(X)越小,损失增长越快

人话对比

  • 0-1 损失:"非黑即白",分类错就罚 1,对就不罚,但没法优化;
  • 合页损失:"循序渐进",分类对且离边界远→不罚;分类对但离边界近→轻罚;分类错→重罚,且罚得越错越重;
  • 交叉熵损失:"指数惩罚",分类错得越离谱,损失增长越快(比合页损失更激进)。

4.4 核方法:思路和作用、常见核函数

SVM 的核方法是解决 "线性不可分" 问题的核心(比如样本呈环形分布,无法用直线分开),能把低维线性不可分的数据映射到高维,使其线性可分。

4.4.1 核方法的核心思路

1. 问题背景

低维空间中线性不可分的样本,映射到高维空间后可能线性可分。比如:

  • 二维空间中 "环形分布" 的样本(内层负类,外层正类),无法用直线分开;
  • 映射到三维空间(比如z=x12+x22),就能用一个平面分开。
2. 直接映射的问题

高维映射的计算量极大(比如从 2 维映射到 1000 维),尤其是计算样本间的内积XiT​Xj​(SVM 优化的核心计算),会导致 "维度灾难"。

3. 核函数的核心思想

核函数 = 高维内积的低维计算:不用显式把样本映射到高维,而是直接在低维空间计算高维空间的内积,公式:K(Xi​,Xj​)=ϕ(Xi​)Tϕ(Xj​)

  • ϕ(X):低维→高维的映射函数;
  • K(Xi,Xj):核函数,直接输出ϕ(Xi)和ϕ(Xj)的内积,无需计算ϕ(X)。

4.4.2 核方法的作用

  1. 解决线性不可分问题:把低维线性不可分的数据转化为高维线性可分;
  2. 降低计算复杂度:避免高维映射的巨大计算量,仅在低维空间计算核函数;
  3. 提升 SVM 的泛化能力:核函数能捕捉数据的非线性特征。

4.4.3 常见核函数

核函数类型 公式 适用场景
线性核(Linear Kernel) K(Xi​,Xj​)=XiT​Xj​ 数据本身线性可分,等价于原始线性 SVM,计算最快
多项式核(Polynomial Kernel) K(Xi​,Xj​)=(XiT​Xj​+c)d c:常数(通常取 1),d:多项式次数(超参数)适用:中等复杂度的非线性数据,比如文本分类
高斯核(RBF 核,径向基核) K(Xi​,Xj​)=exp(−2σ2∣Xi​−Xj​∣2​) σ:带宽(超参数),σ越小,模型越复杂适用:绝大多数非线性场景(最常用),比如图像分类、复杂的结构化数据
Sigmoid 核 K(Xi​,Xj​)=tanh(αXiT​Xj​+c) 模拟神经网络的激活函数,适用:非线性分类,但不如 RBF 核常用

人话解释

核函数相当于 "放大镜":

  • 线性核:不用放大镜,直接看数据(线性可分);
  • 高斯核:用放大镜把数据的局部特征放大,能处理任意复杂的非线性分布(比如环形、螺旋形数据);
  • 多项式核:用 "多项式曲线" 拟合数据的非线性特征,复杂度介于线性核和高斯核之间。

总结

  1. SVM 的核心是 "最大间隔",线性可分场景找最优超平面,线性不可分场景用软间隔允许少量违规;
  2. 合页损失是 SVM 的核心损失函数,是 0-1 损失的凸近似,可导且能优化;
  3. 核方法通过 "低维计算高维内积" 解决线性不可分问题,高斯核是最常用的非线性核函数;
  4. 超参数C(惩罚系数)和核函数参数(如高斯核的σ)决定 SVM 的性能,需通过交叉验证调优。
相关推荐
幻云20102 小时前
Next.js之道:从入门到精通
人工智能·python
予枫的编程笔记2 小时前
【Java集合】深入浅出 Java HashMap:从链表到红黑树的“进化”之路
java·开发语言·数据结构·人工智能·链表·哈希算法
llddycidy2 小时前
峰值需求预测中的机器学习:基础、趋势和见解(最新文献)
网络·人工智能·深度学习
larance2 小时前
机器学习的一些基本知识
人工智能·机器学习
l1t2 小时前
利用DeepSeek辅助拉取GitHub存储库目录跳过特定文件方法
人工智能·github·deepseek
12344522 小时前
Agent入门实战-一个题目生成Agent
人工智能·后端
IT_陈寒2 小时前
Java性能调优实战:5个被低估却提升30%效率的JVM参数
前端·人工智能·后端
taihexuelang2 小时前
大模型部署
人工智能·docker·容器
轻竹办公PPT2 小时前
2025实测!AI生成PPT工具全总结
人工智能·python·powerpoint