【机器学习|学习笔记】详解支持向量机(Support Vector Machine,SVM)之常用的核函数以及核函数的条件?
·
【机器学习|学习笔记】详解支持向量机(Support Vector Machine,SVM)之常用的核函数以及核函数的条件?
【机器学习|学习笔记】详解支持向量机(Support Vector Machine,SVM)之常用的核函数以及核函数的条件?
文章目录
欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/148514108
📌 一、常用核函数详解(含公式 + Python实现)
- 核函数(Kernel Function)本质上是一个 相似性函数,定义了两个样本在高维特征空间中的“内积”:

以下是常用核函数:
✅ 1. 线性核(Linear Kernel)

- 等价于不使用核函数;
- 不进行任何非线性映射;
- 通常用于高维稀疏数据(如文本)。
from sklearn.svm import SVC
clf = SVC(kernel='linear')
✅ 2. 多项式核(Polynomial Kernel)

- 可控制非线性程度(通过 d d d);
- 适合需要模拟特征交互的数据。
clf = SVC(kernel='poly', degree=3, gamma='scale', coef0=1)
✅ 3. RBF 核 / 高斯核(Radial Basis Function)

- 映射到无穷维空间;
- 适用于绝大多数非线性分类场景;
- γ γ γ 控制分布宽度。
clf = SVC(kernel='rbf', gamma=0.5)
✅ 4. Sigmoid 核(Tanh Kernel)

- 类似神经网络中的激活函数;
- 实际使用较少。
clf = SVC(kernel='sigmoid', gamma=0.1, coef0=0)
✅ 5. 自定义核函数
- 你也可以用 Python 自定义核函数(需满足正定性,见下一节):
from sklearn.metrics.pairwise import polynomial_kernel
from sklearn.svm import SVC
def custom_kernel(X, Y):
return polynomial_kernel(X, Y, degree=2, coef0=1)
clf = SVC(kernel=custom_kernel)
📜 二、核函数需要满足什么条件?(Mercer 定理)
✅ Mercer 定理的核心思想:
- 一个核函数 K ( x , x ′ ) K(x,x′) K(x,x′) 能够表示某个特征映射 ϕ ϕ ϕ,当且仅当该核函数对应的核矩阵是半正定(positive
semi-definite, PSD)的。
✅ 什么是核矩阵(Gram Matrix)?
- 对于任意样本集合 x 1 , x 2 , . . . , x n {x_1,x_2,...,x_n} x1,x2,...,xn,构建:

- 只要这个核矩阵 K K K 是对称的,并且对任意非零向量 z z z 有:

- 就说明 K K K 是一个合法核函数(即满足 Mercer 条件)。
✅ Python 示例:判断核矩阵是否为半正定矩阵
import numpy as np
from sklearn.metrics.pairwise import rbf_kernel
# 构造样本
X = np.random.randn(5, 3)
# 计算 RBF 核矩阵
K = rbf_kernel(X, gamma=0.5)
# 判断是否半正定(特征值非负)
eigvals = np.linalg.eigvalsh(K)
print("特征值:", eigvals)
print("是否半正定:", np.all(eigvals >= -1e-8))
- ✅ 输出为
True表明核函数合法。
✅ 三、小结:常用核函数与条件对比表
| 核函数 | 公式表达 | 参数 | 优点 | 是否满足 Mercer 条件 |
|---|---|---|---|---|
| Linear | x T x ′ x^T x' xTx′ | 无 | 快速,适合高维稀疏 | ✅ |
| Polynomial | ( γ x T x ′ + r ) d (\gamma x^T x' + r)^d (γxTx′+r)d | d , r d,r d,r | 表达交互特征 | ✅ |
| RBF | exp ( − γ ∣ x − x ′ ∣ 2 ) \exp(-\gamma |x - x'|^2) exp(−γ∣x−x′∣2) | γ \gamma γ | 非线性映射强大 | ✅ |
| Sigmoid | tanh ( γ x T x ′ + r ) \tanh(\gamma x^T x' + r) tanh(γxTx′+r) | γ , r \gamma, r γ,r | 受神经网络启发 | 部分情况 ✅ |
| 自定义核 | 自定义的函数,需验证 Gram 矩阵PSD | 自定义 | 可按需构造 | 需验证 |
📌 Bonus:如何选择合适核函数?
| 数据类型 | 推荐核函数 | 原因 |
|---|---|---|
| 文本、稀疏高维 | Linear | 简洁有效,不需非线性映射 |
| 图像、语音等复杂数据 | RBF / Poly | 适合表达复杂结构 |
| 特征交互重要 | Polynomial | 模拟高阶交互关系 |
✅ 总结重点
- 核函数是一种相似性度量方式,用于将数据映射到高维空间,从而实现线性可分;
- 核函数必须满足 Mercer 条件(Gram 矩阵为半正定)才能被 SVM 使用;
- Python 可使用 scikit-learn 快速调用内置核或自定义核函数。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)