
Support Vector Machine (SVM) —— 支持向量机
系统讲解支持向量机的完整数学推导与核心原理。涵盖函数间隔与几何间隔的定义及差异、硬间隔SVM的原始问题、拉格朗日对偶推导与KKT条件、软间隔SVM通过松弛变量与惩罚参数C处理线性不可分数据、Hinge Loss作为SVM损失函数的等价视角,以及SVM与逻辑回归在离群点鲁棒性上的本质差异。
阅读文章ZHY's Blog
A UNIVERSE OF IDEAS · BY ZHANG HAOYI
让好奇心 点亮知识宇宙
在代码、模型与思想之间自由漫游。这里持续记录人工智能、机器学习、软件工程与成长实践,让每次阅读都成为一次新的发现。
ARTICLE NOTE
上一篇文章中,我们推导了 SVM 的完整对偶形式,并留下了一个关键观察:对偶问题的目标函数和决策函数中,样本以内积 xiTxj 的形式出现,再无其他显式依赖。这个观察在当时的语境中只是一个数学便利 ——** 内积使得对偶问题比原始问题更易求解**。但正是这个“不起眼”的细节,打开了通往非线性世界的大门。
核技巧(Kernel Trick) 的核心操作简洁到可以用一句话概括:将对偶形式中的所有内积 xiTxj 替换为核函数 K(xi,xj)。替换之后,SVM 便不再受限于线性决策边界——它可以在完全不显式计算高维特征的前提下,等价地在高维(甚至无穷维)特征空间中寻找最大间隔超平面。这是机器学习中少有的“免费午餐”:计算成本几乎不变,表达能力却从线性跃升至任意非线性。
本文将从核函数的数学定义出发,理清 Mercer 定理为何是核方法的理论基石 —— 它保证了 “对称正半定核”与“特征空间内积”的等价性,是核技巧合法性的根本来源。随后我们深入分析多项式核与 RBF(高斯)核的映射本质:前者将数据映射到包含所有有限阶单项式的特征空间,后者则通过泰勒展开揭示了其无穷维特征空间的等价表示。最后,我们将聚焦 RBF 核中 γ 参数的实战调优——它控制着单个样本的影响力范围,取值不当会直接导致欠拟合或过拟合。
Note读完本文,你将彻底理解“核方法”为何能从 SVM 中独立出来成为一个通用方法论——任何以内积形式表达的算法都可以被“核化”。
至此,我们完成了第一阶段:基础监督学习的全部内容——从线性回归的基石出发,历经逻辑回归的判别概率、KNN 的非参数距离、朴素贝叶斯的生成式假设,到 SVM 与核技巧的几何极致。
下一篇文章,我们将进入第二阶段:树模型与集成学习。决策树将率先登场——它放弃了一切“线性边界”和“距离度量”的假设,用最直观的“特征分裂”方式重新定义分类与回归,为后续的随机森林和梯度提升家族奠定根基。
假设我们有一个二维数据集,在原始空间中线性不可分。一个自然的想法是把数据映射到更高维的空间,在高维空间中它们可能变得线性可分。
设特征映射为 ϕ:X→F,其中 F 是高维特征空间(甚至是无穷维的)。在特征空间中,线性SVM的对偶问题变为:
αmaxi=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj⋅ϕ(xi)Tϕ(xj)关键问题是 真的需要显式计算 ϕ(xi) 吗? 如果特征空间的维度是 106 甚至无穷大,显式计算特征映射在计算上是不可行的。
核函数(Kernel Function)就是一个巧妙的替代方案。它定义为:
K(x,z)=ϕ(x)Tϕ(z)一个函数要想成为合法的核函数,必须满足以下条件:
Mercer定理(1909年,由James Mercer提出)是核方法的理论基石。
核心思想是如果一个对称连续的核函数 K 能保证对任意有限样本集形成的Gram矩阵都是正半定的,那么就一定存在一个特征映射 ϕ,使得 K(x,z)=ϕ(x)Tϕ(z)。
也就是说Mercer定理保证了“核函数”与“特征空间中的内积”是等价的。
更严格地,Mercer定理可以表述为:
设 X 是紧集,K:X×X→R 是一个连续、对称、正定的核函数。则存在一组正交特征函数 {ψj}j=1∞ 和非负特征值 {λj}j=1∞,使得:
K(x,z)=j=1∑∞λjψj(x)ψj(z)其中级数在 X×X 上绝对且一致收敛。
这个展开式意味着,核函数可以分解为无穷多个特征函数的加权和,而每个特征函数 ψj 可以看作是特征映射的一个坐标。
Mercer定理为核方法提供了三个关键保证:
总而言之,Mercer定理告诉我们“可以这么做”,核技巧告诉我们“怎么高效地做”。
回顾软间隔SVM的对偶问题:
αmaxi=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj⋅内积xiTxjs.t.i=1∑Nαiyi=0,0≤αi≤C核技巧的核心操作即为把对偶问题中的内积 xiTxj 替换为核函数 K(xi,xj):
αmaxi=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj⋅K(xi,xj)这样一替换,线性SVM就变成了非线性SVM。
训练完成后,对于新样本 x′,决策函数为:
f(x′)=sign(i=1∑NαiyiK(xi,x′)+b)同样,我们只需要计算核函数,而不需要显式计算 ϕ(x′)。
核技巧并不仅限于SVM。任何可以用内积形式表达的算法都可以被“核化” ——包括主成分分析(Kernel PCA)、岭回归(Kernel Ridge Regression)、Fisher判别分析等。
线性核实际上就是不做任何映射,ϕ(x)=x。它对应的是原始空间中的线性模型,是核方法的特例。
适用场景:数据本身线性可分,或特征维度已经很高(如文本分类中的词袋模型)。
明白了,你希望我把“清晰的解释”直接融进你原有的笔记内容里,而不是另起炉灶单独举例。下面是我替你优化后的 4.2 节,保留了你的所有公式,但在关键位置(特别是展开式和映射的对应关系)增加了逐项拆解和大白话批注,帮你彻底捅破这层窗户纸。
K(x,z)=(xTz+c)d
其中 d 是多项式的次数,c≥0 是常数项(通常取1)。
映射本质:多项式核对应的特征映射 ϕ(x) 包含了所有次数不超过 d 的单项式。
示例理解以二维输入 x=(x1,x2)、d=2、c=1 为例 —— K(x,z)=(x1z1+x2z2+1)2
展开后:K(x,z)=1+2x1z1+2x2z2+x12z12+2x1x2z1z2+x22z22
把展开式和高维点积 ϕ(x)Tϕ(z) 逐项对照一下:高维空间里的点积就是两组六维向量对应位置相乘再相加。我们把 ϕ(x) 和 ϕ(z) 写出来,算一下它们的点积:
ϕ(x)Tϕ(z)=1⋅1+(2x1)⋅(2z1)+(2x2)⋅(2z2)+(x12)⋅(z12)+(2x1x2)⋅(2z1z2)+(x22)⋅(z22)
对应的特征映射为(忽略常数系数):ϕ(x)=(1,2x1,2x2,x12,2x1x2,x22)
观察到,二维数据被映射到了六维特征空间!在原始空间中,我们只需要计算 (xTz+1)2 这个标量值,就等价于在六维空间中计算内积。
好的,我把你的 4.3 节在保留原有公式和结论的基础上,进行了三层丰富:
你可以直接用下面这个增强版替换你笔记中的 4.3 节:
其中 γ>0 控制核函数的宽度。等价形式为 K(x,z)=exp(−2σ2∥x−z∥2),其中 γ=2σ21。
RBF核是最常用的核函数,因为它只有一个参数且性能优异。
直觉理解 —— 在 RBF 核的视角下,两个样本的相似度只取决于它们欧氏距离的平方:
所以,RBF 核本质上是一个“局部相似度”度量器 —— 它只在样本点附近产生显著影响,距离一拉远,影响就指数级衰减了。
无穷维特征空间的数学推导 —— RBF核的特征映射是无穷维的。
我们不直接去造那个无穷长的向量,而是通过泰勒展开来“证明”它的等价性。
第一步:拆解平方项(把范数变成内积)
由范数性质 ∥x−z∥2=∥x∥2+∥z∥2−2xTz,代入原式得:
K(x,z)=e−γ∥x∥2−γ∥z∥2+2γxTz=e−γ∥x∥2⋅e−γ∥z∥2⋅e2γxTz第二步:对关键部分进行泰勒展开(核心配凑)
回忆高数中的指数泰勒展开公式:et=1+t+2!t2+⋯=∑n=0∞n!tn。把 t=2γxTz 代进去:
e2γxTz=n=0∑∞n!(2γ)n(xTz)n代回上式,得到:
K(x,z)=n=0∑∞n!(2γ)n[e−γ∥x∥2⋅e−γ∥z∥2⋅(xTz)n]第三步:配凑出“无穷维内积”的形式
把这一整串式子写成 “x 的某部分” 与 “z 的某部分” 相乘再求和 的形式。
以最简单的 1 维输入(x 和 z 是标量)为例,(xTz)n=xnzn。于是括号内变为 e−γ∥x∥2⋅e−γ∥z∥2⋅xnzn
把它拆成“只含 x 的因子”乘以“只含 z 的因子”:
(n!(2γ)n⋅e−γ∥x∥2⋅xn)⋅(n!(2γ)n⋅e−γ∥z∥2⋅zn)第四步:无穷维特征映射 ϕ(x)
观察上式,n 从 0 取到 ∞,每一个 n 对应向量的一个维度。因此可以定义如下无穷维向量:
ϕ(x)=e−γ∥x∥2(1,1!2γx,2!(2γ)2x2,3!(2γ)3x3,…)把 ϕ(x) 和 ϕ(z) 做点积(对应项相乘再累加),正好还原回上一步的无穷级数求和,即 ϕ(x)Tϕ(z)=K(x,z)
结论 —— RBF核是无穷多个多项式核的加权和
数学上体现在第二步的展开式中——(xTz)n 就是次数为 n 的多项式核,加权系数是 n!(2γ)n。这意味着:
所以,RBF 核可以在无穷维空间中计算内积,而我们只需要在原始空间中计算一个指数函数。这就是核技巧的威力所在——我们用极其廉价的计算,换来了理论上无限复杂的特征空间,唯一的代价就是需要小心调整 γ 防止过拟合。
适用场景:绝大多数非线性问题,是SVM的默认选择。
代码实现:
1def rbf_kernel(x, z, gamma=1.0):2 """RBF(高斯)核函数"""3 return np.exp(-gamma * np.linalg.norm(x - z) ** 2)4
5x = np.array([1, 2])6z = np.array([3, 4])7print(f"RBF核 (gamma=1.0): {rbf_kernel(x, z, gamma=1.0):.4f}")8# 输出: exp(-1 * ((1-3)^2 + (2-4)^2)) = exp(-8) ≈ 0.0003其中 γ>0,r 是偏移量。
Sigmoid核源自神经网络,但对于某些参数取值,它不满足Mercer条件(即不是正半定的)。尽管如此,它在实践中仍然可能表现良好。
适用场景:特定问题中可作为神经网络的替代。
在RBF核 K(x,z)=exp(−γ∥x−z∥2) 中,γ 控制着单个训练样本的影响力范围:
γ 可以被理解为 RBF核的“半径”的倒数。
scikit-learn 官方文档用验证曲线清晰地展示了 γ 的影响:
| γ 取值 | 训练集表现 | 验证集表现 | 诊断 |
|---|---|---|---|
| 非常小(如 10−6) | 低 | 低 | 欠拟合 —— 模型过于平滑,无法捕捉数据模式 |
| 中等(如 10−3∼10−1) | 高 | 高 | 良好 —— 模型复杂度适中 |
| 非常大(如 10) | 极高(接近100%) | 低 | 过拟合 —— 每个样本只影响自己,决策边界极度扭曲 |
γ 和 C 共同控制着RBF-SVM的复杂度:
在实践中,γ 和 C 通常需要在对数空间中通过网格搜索进行调优(如 10−3,10−2,...,103)。
代码实现:
1from sklearn.svm import SVC2from sklearn.model_selection import validation_curve3from sklearn.datasets import load_digits4import numpy as np5import matplotlib.pyplot as plt6
7# 加载数据(二分类:1 vs 2)8X, y = load_digits(return_X_y=True)9mask = np.isin(y, [1, 2])10X, y = X[mask], y[mask]11
12# 验证曲线:观察gamma的影响13param_range = np.logspace(-6, -1, 5)14train_scores, test_scores = validation_curve(15 SVC(kernel='rbf', C=1.0),16 X, y,17 param_name='gamma',18 param_range=param_range,19 cv=5,20 scoring='accuracy'21)22
23# 绘制结果24train_mean = np.mean(train_scores, axis=1)25test_mean = np.mean(test_scores, axis=1)26
27plt.semilogx(param_range, train_mean, label='Training score', marker='o')28plt.semilogx(param_range, test_mean, label='Validation score', marker='o')29plt.xlabel('gamma')30plt.ylabel('Accuracy')31plt.legend()32plt.title('Validation Curve for SVM with RBF Kernel')33plt.show()34# 观察:gamma极小时两者都低(欠拟合),gamma适中时两者都高,35# gamma过大时训练高但验证低(过拟合)如果 K1 和 K2 是合法的核函数,那么以下组合也是合法的核函数:
这些性质允许我们根据问题的特点定制核函数。
| 场景 | 推荐核函数 | 原因 |
|---|---|---|
| 特征维度远大于样本数 | 线性核 | 数据在高维空间中通常已经线性可分 |
| 特征数适中,样本数适中 | RBF核 | 通用性强,只有一个超参数 |
| 特征数很少,需要复杂交互 | 多项式核 | 可以显式控制特征交互的次数 |
| 与神经网络类比 | Sigmoid核 | 等价于单隐层神经网络 |
实际建议:当不确定时,先用RBF核。它是最通用、最稳健的选择。
总结
概念 核心内容 核函数 K(x,z)=ϕ(x)Tϕ(z),在原始空间中计算高维特征空间的内积 Mercer定理 对称连续的PSD核函数一定对应某个(可能无穷维的)特征映射 核技巧 将对偶问题中的内积替换为核函数,将线性算法扩展为非线性 多项式核 K=(xTz+c)d,映射到包含所有 ≤ d阶单项式的特征空间 RBF核 K=exp(−γ∥x−z∥2),映射到无穷维特征空间 gamma参数 控制单个样本的影响力范围:小→欠拟合,中→良好,大→过拟合 核心要点回顾
- 核函数的本质:核函数 K(x,z) 是在原始空间中计算高维(甚至无穷维)特征空间的内积。它让我们既享受了高维映射的好处,又避免了高维计算的代价。
- Mercer定理:保证了“核函数”与“特征空间内积”的等价性。任何满足对称性、连续性和正半定性的核函数,都对应着某个特征映射。
- 核技巧:将SVM对偶问题中的内积 xiTxj 替换为核函数 K(xi,xj),一句话将线性SVM变成了非线性SVM。这种技巧可以推广到任何以内积形式表达的算法。
- 多项式核的映射:将 d 维输入映射到包含所有次数不超过 d 的单项式的特征空间。维度从 p 暴涨到 (dp+d)。
- RBF核的无穷维映射:通过泰勒展开可知,RBF核等价于无穷多个多项式核的加权和,对应的特征空间是无穷维的。这是核技巧的体现——在原始空间中算一个指数函数,就等价于在无穷维空间中算内积。
- gamma参数:控制RBF核的宽度。γ 太小 → 欠拟合(模型过于平滑),γ 太大 → 过拟合(每个样本只影响自己)。通常需要在对数空间中进行网格搜索调优。
按顺序完成这组文章,循序渐进地掌握主题
发现错误、内容过时或有改进想法?欢迎告诉我
根据本文分类与标签,为你推荐可能感兴趣的内容

系统讲解支持向量机的完整数学推导与核心原理。涵盖函数间隔与几何间隔的定义及差异、硬间隔SVM的原始问题、拉格朗日对偶推导与KKT条件、软间隔SVM通过松弛变量与惩罚参数C处理线性不可分数据、Hinge Loss作为SVM损失函数的等价视角,以及SVM与逻辑回归在离群点鲁棒性上的本质差异。
阅读文章
系统讲解隐马尔可夫模型(HMM)的完整数学原理与三大核心算法:从马尔可夫链到双重随机过程的演进出发,定义HMM的五元组参数(Q, V, π, A, B);详细推导估值问题、解码问题和学习问题;并通过词性标注、语音识别等经典应用场景展示HMM的实践价值。
阅读文章
系统讲解期望最大化(EM)算法的完整数学原理:从极大似然估计在隐变量存在时的困境出发,推导E步与M步的迭代框架;基于Jensen不等式证明ELBO证据下界与收敛性;通过二硬币模型与高斯混合模型(GMM)两个完整实例展示EM的具体计算流程;揭示K-Means是EM在硬分配下的特例这一深层联系。
阅读文章请使用微信扫描二维码分享
当前文章会保持在原页面