更新于 2026年8月11日

核函数#


术语解释#

在机器学习(尤其是支持向量机 SVM)中,核函数(Kernel Function) 是一种通过计算低维空间中的向量内积,来隐式实现高维特征映射的数学技巧。

如果存在一个从输入空间到特征空间的映射 $\phi(x)$,使得对于所有 $x, z$,函数 $K(x, z)$ 满足 $K(x, z) = \phi(x) \cdot \phi(z)$,那么 $K(x, z)$ 就被称为核函数。

核函数被看作是实现“黑箱”操作的工具(即核技巧),它允许我们在不显式写出高维映射规则、不实际计算高维向量的情况下,直接得到高维空间中的内积值。 常见核函数包括线性核、多项式核、高斯核(RBF,可映射到无穷维)和 Sigmoid 核等。

更多相关内容可参见「10.8 SVM核函数原理:常见核函数与高维映射」


出现动机#

  • 解决线性不可分问题:在现实场景中,许多数据集在原始低维空间是线性不可分的。通过将特征映射到高维空间,往往能找到一个线性的超平面将数据分开。

  • 克服“维度爆炸”:如果显式地将特征映射到高维(如从 $n$ 维映射到 $n^2$ 维或更高),直接计算高维内积的计算量会呈几何级数增长,导致计算效率极低。核函数的出现是为了绕过显式映射,以低维度的计算量获取高维度的分类效果。


直观示例#

假设现有数据集$X$,其样本点${{x}^{(i)}}$有3个维度,分别为$x_{1}^{(i)}$、$x_{2}^{(i)}$、$x_{3}^{(i)}$(下面简写为$x_1$、$x_2$、$x_3$)。现通过函数$\phi(x)$将其映射到某个9维空间中,并且假设映射后的9个维度分别为$x_1x_1$、$x_1x_2$、$x_1x_3$、$x_2x_1$、$x_2x_2$ 、 $x_2x_3$、$x_3x_1$、${{x}_{3}}{{x}_{2}}$、$x_3x_3$。如果此时要对新样本$z$进行预测,则首先需要对$\langle \phi(x),\phi(z)\rangle$进行计算,此时有

$$ \begin{cases} \phi (x)={{[{{x}_{1}}{{x}_{1}},{{x}_{1}}{{x}_{2}},{{x}_{1}}{{x}_{3}},{{x}_{2}}{{x}_{1}},{{x}_{2}}{{x}_{2}},{{x}_{2}}{{x}_{3}},{{x}_{3}}{{x}_{1}},{{x}_{3}}{{x}_{2}},{{x}_{3}}{{x}_{3}}]}^{T}} \\[1ex] \phi (z)={{[{{z}_{1}}{{z}_{1}},{{z}_{1}}{{z}_{2}},{{z}_{1}}{{z}_{3}},{{z}_{2}}{{z}_{1}},{{z}_{2}}{{z}_{2}},{{z}_{2}}{{z}_{3}},{{z}_{3}}{{z}_{1}},{{z}_{3}}{{z}_{2}},{{z}_{3}}{{z}_{3}}]}^{T}} \\[1ex] \langle \phi (x),\phi (z)\rangle =[{{x}_{1}}{{x}_{1}}{{z}_{1}}{{z}_{1}}+{{x}_{1}}{{x}_{2}}{{z}_{1}}{{z}_{2}}+\cdots +{{x}_{3}}{{x}_{3}}{{z}_{3}}{{z}_{3}}] \\ \end{cases}\tag{10-121} $$

现假设式(10-121)中的两个样本点分别为$x=(1,2,3)^T,z=(2,3,4)^T$,则此时有

$$ \begin{cases} \phi (x)&={{({{x}_{1}}{{x}_{1}},{{x}_{1}}{{x}_{2}},{{x}_{1}}{{x}_{3}},{{x}_{2}}{{x}_{1}},{{x}_{2}}{{x}_{2}},{{x}_{2}}{{x}_{3}},{{x}_{3}}{{x}_{1}},{{x}_{3}}{{x}_{2}},{{x}_{3}}{{x}_{3}})}^{T}} \\[1ex] & ={{(1\times 1,1\times 2,1\times 3,2\times 1,2\times 2,2\times 3,3\times 1,3\times 2,3\times 3)}^{T}} \\[1ex] \phi (z)&={{({{z}_{1}}{{z}_{1}},{{z}_{1}}{{z}_{2}},{{z}_{1}}{{z}_{3}},{{z}_{2}}{{z}_{1}},{{z}_{2}}{{z}_{2}},{{z}_{2}}{{z}_{3}},{{z}_{3}}{{z}_{1}},{{z}_{3}}{{z}_{2}},{{z}_{3}}{{z}_{3}})}^{T}} \\[1ex] & ={{(2\times 2,2\times 3,2\times 4,3\times 2,3\times 3,3\times 4,4\times 2,4\times 3,4\times 4)}^{T}} \\[1ex] \langle \phi (x),&\phi (z)\rangle ={{({{x}_{1}}{{x}_{1}}{{z}_{1}}{{z}_{1}}+{{x}_{1}}{{x}_{2}}{{z}_{1}}{{z}_{2}}+\cdots +{{x}_{3}}{{x}_{3}}{{z}_{3}}{{z}_{3}})}} \\[1ex] & =4+12+24+12+36+72+24+72+144=400 \end{cases}\tag{10-122} $$

同时,还可以通过另外一种核函数来计算这个结果

$$ K(x,z)={{({{x}^{T}}z)}^{2}}={{(2+6+12)}^{2}}=400\tag{10-123} $$

此时可以发现,虽然式(10-122)与式(10-123)计算得到的结果相同,但是两者的计算过程却大相径庭。前者需要 $O(n^2)$的时间复杂度,但后者只需$O(n)$的时间复杂度。


优点缺点#

  • 优点:

    • 计算高效:核函数将高维空间复杂的内积运算转化为了原始空间简单的函数计算。例如,某些多项式核可以将 $O(n^2)$ 的复杂度降低到 $O(n)$。

    • 强大的特征表达能力:通过核技巧(如高斯核),模型能够隐含地实现从低维到无穷维的映射,从而捕捉极其复杂的非线性规律。

    • 通用性强:核技巧不仅用于 SVM,还可用于主成分分析(如 KPCA)等算法,使其具备处理非线性数据的能力。相关内容可参见「12.2 核主成分分析:KPCA 原理与非线性降维」

  • 缺点:

    • 选择具有困难性:核函数的设计和选择是模型训练中最大的变数。目前并没有统一的理论指导如何针对特定任务选择“最优”核函数,很大程度上依赖经验。

    • 超参数调节负担:核函数通常自带复杂的超参数(如高斯核的 $\gamma$、多项式核的次数 $d$),这些参数对模型性能影响极大,通常需要配合繁琐的网格搜索和交叉验证来确定。

    • 计算开销(针对大规模数据):虽然核技巧避开了高维计算,但在处理海量样本时,构建核矩阵(Kernel Matrix)的存储和计算开销依然可能成为瓶颈。

核函数是 SVM 的灵魂,它通过“以简御繁”的数学智慧,在不牺牲计算效率的前提下,极大地提升了线性模型处理复杂非线性数据的能力。

阅读 --

10.8 SVM核函数原理

在本节内容中,我们首先回顾了核函数的目的,并举例说明了如何将特征维度从低维空间映射到高维空间中;接着详细介绍了核函数的基本原理并进一步地说明了为什么使用核函数就能够将低维特征映射到无穷维;最后介绍了SVM中常见的4种核函数的定义。

10.2 SVM线性不可分

在本节中,我们首先介绍了SVM中的线性不可分情况,并且介绍了可以通过将原始特征映射到高维空间中的方法来解决这一问题;然后介绍了如何利用sklearn来完成SVM的建模过程以及核函数的使用方法。

10.4 SVM中的软间隔

在前面几节内容中,我们分别介绍了什么是支持向量机及如何通过sklearn来完成整个SVM的建模过程,然后还介绍了什么是线性不可分与核函数的用法。在接下来的这节内容中,我们将继续介绍SVM中的软间隔及其在sklearn中的示例用法。

10.10 从零实现SVM分类算法

经过前面几节内容的介绍我们现在已经清楚了 SVM 的基本原理,并且根据第10.9.5节内容的讲解,对于SVM的求解过程也有了一定的认识,对于整个SVM内容的介绍就只差最后一步编码实现了。下面,我们将根据前面介绍的各个求解公式来一步一步介绍如 …