- 缺点:SVM 在处理大规模数据集时计算开销极大,尤其是使用核技巧时需要计算所有样本对之间的核函数值。
- 解决方案:
- 使用序列最小优化 (SMO) 算法(如 libSVM 库实现),将大优化问题分解为小问题迭代求解
- 采用核近似方法(如 Nyström 方法或随机傅里叶特征)减少核矩阵计算量
- 对数据进行采样或聚类,选择代表性样本训练模型
- 缺点:核函数的选择及其参数(如 RBF 核的 γ 值)对模型性能影响显著,但缺乏通用选择标准。
- 解决方案:
- 使用网格搜索或贝叶斯优化自动调参
- 尝试多核学习(Multiple Kernel Learning)组合多个核函数
- 基于领域知识选择核函数(如文本数据常用线性核,图像数据常用 RBF 核)
- 缺点:SVM 要求所有特征完整,缺失值会影响模型训练。
- 解决方案:
- 数据预处理阶段进行缺失值填充(均值 / 中位数填充、多重插补等)
- 使用鲁棒核函数降低异常值影响
- 对缺失特征较少的样本进行加权处理
- 缺点:SVM 本质是二分类器,处理多分类需扩展。
- 解决方案:
- 采用 ** 一对多 (One-vs-All)或一对一 (One-vs-One)** 策略构建多个二分类器
- 使用DAGSVM(有向无环图 SVM)减少分类器数量
- 直接使用多分类 SVM 实现(如 Crammer-Singer 方法)
- 缺点:核矩阵存储需求为 O (n²),高维数据下内存占用激增。
- 解决方案:
- 使用增量学习算法(如 Online SVM)分批处理数据
- 采用稀疏核技巧(如 Sparse SVM)减少非零元素存储
- 部署在分布式计算框架(如 Spark MLlib)上并行处理
- 公式:K(x_i, x_j) = x_i^T x_j
- 特点:
- 计算效率极高,适用于大规模线性可分数据
- 常用于文本分类、高维稀疏数据
- 对应 SVM 为线性 SVM,无额外参数需调
- 公式:K(x_i, x_j) = exp(-γ||x_i - x_j||²)
- 特点:
- 应用最广泛,可处理非线性问题
- γ 参数控制核函数宽度,需谨慎调参
- 计算复杂度较高,需注意样本量
- 公式:K(x_i, x_j) = (γ x_i^T x_j + r)^d
- 特点:
- 参数包括阶数 d、斜率 γ 和偏移 r
- 高阶多项式易过拟合,实际中较少使用
- 常用于图像和信号处理领域
- 公式:K(x_i, x_j) = tanh(γ x_i^T x_j + r)
- 特点:
- 对应神经网络中的激活函数
- 参数敏感,需精心调参
- 适用于某些特定领域(如生物信息学)
- 示例:字符串核(用于文本 / 序列数据)、图核(用于图结构数据)
- 特点:
- 需根据领域知识设计
- 可结合先验知识提高模型性能
- 计算复杂度通常较高
| 数据类型 | 首选核函数 |
| 大规模线性可分 |
线性核 |
| 小规模非线性 |
RBF 核 |
| 文本 / 高维稀疏 |
线性核 |
| 图像 / 视觉数据 |
RBF 核或多项式核 |
| 序列 / 字符串 |
自定义字符串核 |
| 图结构数据 |
图核 |
实际应用中,建议通过交叉验证比较不同核函数及参数组合的性能,选择最优配置。