AI_机器学习-3.核函数基础 核函数完全指南从原理到实践1. 引言核函数的基本思想在机器学习中许多算法如支持向量机、主成分分析依赖于计算样本之间的内积。当数据在原始空间中线性不可分时一个自然的想法是将数据映射到更高维的特征空间使其变得线性可分。然而直接计算高维映射 \phi(x) 再求内积 \phi(x_i)\cdot\phi(x_j) 往往计算量巨大甚至无法显式表达 \phi。核技巧Kernel Trick解决了这一难题我们不需要显式地计算映射后的坐标只需要定义一个核函数K(x_i, x_j)它直接等于高维空间中的内积K(x_i, x_j) \phi(x_i) \cdot \phi(x_j)只要核函数满足Mercer 定理即核矩阵半正定就必然存在一个对应的特征空间。核技巧的优势在于避免维度灾难无需显式计算高维向量。无限维特征空间某些核如 RBF对应无限维空间但计算依然高效。解耦算法与特征空间算法如 SVM只需依赖核函数无需关心 \phi 的具体形式。2. 核函数的数学基础2.1 核矩阵Gram 矩阵给定 n 个样本 x_1,\dots,x_n核矩阵 K 是一个 n\times n 的对称矩阵其中 K_{ij} K(x_i, x_j)。核函数合法的充要条件是对于任意数据集核矩阵总是半正定的。2.2 Mercer 定理Mercer 定理指出一个连续对称函数 K(x,y) 可以表示为某个特征空间内积的充要条件是对于任意平方可积函数 f有 \iint f(x)K(x,y)f(y)\,dxdy \ge 0。这保证了核函数对应的映射存在。3. 常用核函数详解3.1 线性核Linear KernelK(x_i, x_j) x_i^T x_j参数无仅需正则化参数 C特性不进行映射直接计算原始内积计算最快模型最简洁。适用场景数据已经线性可分或特征维度非常高如文本分类此时非线性核容易过拟合且收益不大。3.2 多项式核Polynomial KernelK(x_i, x_j) (\gamma \, x_i^T x_j r)^d参数\gamma缩放系数常用 1/\text{n\_features}、r常数项coef0、d多项式次数特性能产生弯曲的决策边界d 较小时欠拟合较大时易过拟合参数多调参复杂。适用场景当对数据的大致阶数有先验知识如图像中的二次型且样本量不大时。3.3 径向基函数核RBF Kernel / Gaussian KernelK(x_i, x_j) \exp\left(-\gamma \|x_i - x_j\|^2\right), \quad \gamma 0等价形式\exp\left(-\frac{\|x_i-x_j\|^2}{2\sigma^2}\right)其中 \gamma \frac{1}{2\sigma^2}参数\gamma或 \sigma特性对应无限维特征空间泰勒展开为多项式核的无穷和局部性强只有距离近的样本才对核值有显著贡献只有一个超参数 \gamma调参相对容易适用场景大多数非线性问题的默认首选能适应复杂决策边界。3.4 Sigmoid 核双曲正切核K(x_i, x_j) \tanh(\gamma \, x_i^T x_j r)参数\gamma通常取 1/\text{n\_features}、rcoef0特性类似于神经网络的激活函数仅当参数满足特定条件时才是正定核表现不稳定通常不如 RBF。适用场景极少单独使用可被 RBF 或 MLP 替代。3.5 拉普拉斯核Laplacian KernelK(x_i, x_j) \exp\left(-\gamma \|x_i - x_j\|_1\right)参数\gamma 0特性使用 L1 曼哈顿距离对异常值比 RBF 更鲁棒因为不平方放大偏差决策边界更平滑。适用场景特征含有明显噪声或离群点需要鲁棒相似度度量时。3.6 卡方核Chi-squared KernelK(x_i, x_j) \exp\left(-\gamma \sum_{k} \frac{(x_{ik} - x_{jk})^2}{x_{ik} x_{jk}}\right)参数\gamma 0特性基于卡方距离专门用于直方图特征要求输入非负。适用场景计算机视觉中的颜色直方图、SIFT、HOG 特征任何非负特征且差异与和的比例有意义的数据。3.7 直方图交核Histogram Intersection KernelK(x_i, x_j) \sum_{k} \min(x_{ik}, x_{jk})参数无或一个缩放因子特性计算极快正定核对应无限维特征空间常用于直方图匹配。适用场景图像分类中基于直方图的特征如行人检测比 RBF 更高效。3.8 Matern 核K(x_i, x_j) \frac{2^{1-\nu}}{\Gamma(\nu)} \left(\sqrt{2\nu} \frac{\|x_i - x_j\|}{\rho}\right)^\nu K_\nu\left(\sqrt{2\nu} \frac{\|x_i - x_j\|}{\rho}\right)参数\nu平滑度通常取 1/2, 3/2, 5/2、\rho长度尺度特性可控制函数的可微性\nu \to \infty 时退化为 RBF 核\nu1/2 时退化为拉普拉斯核指数核。适用场景高斯过程回归中需要对函数平滑度有先验知识空间统计。4. 核函数的手工计算示例4.1 RBF 核计算设 \gamma 0.5两点 x_1(1,2)x_2(4,6)。欧氏距离平方\|x_1-x_2\|^2 (1-4)^2(2-6)^2 91625指数参数-\gamma \cdot 25 -12.5核值K \exp(-12.5) \approx 3.73\times10^{-6}4.2 拉普拉斯核计算相同两点\gamma0.5。L1 距离\|x_1-x_2\|_1 |1-4||2-6| 347指数参数-\gamma \cdot 7 -3.5核值K \exp(-3.5) \approx 0.0302对比可见拉普拉斯核的衰减更慢对远距离点仍赋予一定相似度。4.3 直方图交核计算两个 L1 归一化直方图x_1[0.2,0.5,0.3], x_2[0.1,0.6,0.3]K \min(0.2,0.1) \min(0.5,0.6) \min(0.3,0.3) 0.10.50.3 0.95. Python 实践不同核函数的 SVM 对比5.1 完整代码示例import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_moons from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.metrics.pairwise import manhattan_distances, chi2_kernel # 生成非线性数据月亮形状 X, y make_moons(n_samples200, noise0.15, random_state42) X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42) # 定义自定义核 def laplacian_kernel(X, Y, gamma0.5): D manhattan_distances(X, Y) return np.exp(-gamma * D) # 核函数配置 kernels { Linear: {kernel: linear, C: 1.0}, Poly (d3): {kernel: poly, degree: 3, gamma: scale, coef0: 1, C: 1.0}, RBF: {kernel: rbf, gamma: scale, C: 1.0}, Sigmoid: {kernel: sigmoid, gamma: scale, coef0: 0, C: 1.0}, Laplacian: {kernel: laplacian_kernel, C: 1.0}, Chi2: {kernel: chi2_kernel, C: 1.0} # 注意chi2_kernel 要求输入非负 } plt.figure(figsize(15, 10)) for i, (name, params) in enumerate(kernels.items()): svc SVC(**params, random_state42) svc.fit(X_train, y_train) acc svc.score(X_test, y_test) # 绘制决策边界 ax plt.subplot(2, 3, i1) xx, yy np.meshgrid(np.linspace(-2, 3, 200), np.linspace(-1.5, 2, 200)) Z svc.decision_function(np.c_[xx.ravel(), yy.ravel()]) Z Z.reshape(xx.shape) ax.contourf(xx, yy, Z, levels[-1, 0, 1], alpha0.5, cmapcoolwarm) ax.scatter(X_train[:,0], X_train[:,1], cy_train, edgecolorsk, cmapcoolwarm) ax.set_title(f{name} kernel (acc{acc:.3f})) plt.tight_layout() plt.show()5.2 结果分析线性核准确率较低约 0.80决策边界为直线无法捕捉月亮形状的非线性。多项式核3次准确率提升约 0.85边界弯曲但可能局部过拟合。RBF 核准确率最高约 0.95边界平滑且贴合数据分布。Sigmoid 核表现不稳定准确率波动本例约 0.70边界奇怪。拉普拉斯核与 RBF 相近约 0.92边界稍平滑对噪声更鲁棒。卡方核要求非负输入本例中需将数据平移至非负否则可能出错若处理得当也能达到较好效果。6. 核函数的选择指南6.1 决策流程图数据维度是否非常高如 10000且稀疏→ 是首选线性核速度快非线性核容易过拟合。→ 否进入下一步。数据是否为直方图或非负特征→ 是尝试卡方核或直方图交核。→ 否进入下一步。数据是否含有明显噪声或离群点→ 是尝试拉普拉斯核。→ 否进入下一步。默认选择RBF 核。它是大多数非线性问题的可靠基准。可选尝试若对数据阶数有先验知识如图像处理中的二次组合可尝试多项式核。高斯过程回归优先考虑Matern 核可调平滑度。6.2 超参数调优建议使用网格搜索GridSearchCV或随机搜索配合交叉验证。RBF 核的 \gamma 常用对数范围 [10^{-3}, 10^3]。线性核仅需调 C正则化强度。多项式核需联合调 \gamma, r, d计算量大需谨慎。7. 核方法的扩展应用核函数不仅用于 SVM还广泛出现在核岭回归KRR、核逻辑回归将线性回归/分类扩展到非线性。核主成分分析KPCA非线性降维。核 K‑Means在隐式高维空间聚类。高斯过程GP核心就是核函数用于回归和分类。多核学习MKL组合多个核函数处理异构数据。8. 总结核函数核心公式关键参数最佳场景线性x_i^Tx_jC高维稀疏、线性可分多项式(\gamma x_i^Tx_jr)^d\gamma, r, d已知阶数、小样本RBF\exp(-\gamma\|x_i-x_j\|^2)\gamma, C非线性问题默认首选拉普拉斯\exp(-\gamma\|x_i-x_j\|_1)\gamma, C含噪声数据卡方\exp(-\gamma\chi^2(x_i,x_j))\gamma, C直方图、非负特征直方图交\sum\min(x_i,x_j)无图像分类、直方图匹配Matern复杂含贝塞尔函数\nu,\rho高斯过程、空间统计掌握核函数的原理、数学形式和选择策略是解决复杂非线性问题的关键。在实践中建议从 RBF 核开始结合交叉验证调优并根据数据特性尝试更专门的核函数。