【机器学习|学习笔记】详解支持向量机(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(γxx2) γ \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 模拟高阶交互关系

✅ 总结重点

  1. 核函数是一种相似性度量方式,用于将数据映射到高维空间,从而实现线性可分;
  2. 核函数必须满足 Mercer 条件(Gram 矩阵为半正定)才能被 SVM 使用;
  3. Python 可使用 scikit-learn 快速调用内置核或自定义核函数。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐