1. 支持向量机回归与超参数优化基础
支持向量机(Support Vector Machine, SVM)最初是为分类问题设计的,但其核心思想经过Vapnik等人的扩展后,可以很好地应用于回归问题。在回归场景中,我们称之为支持向量回归(Support Vector Regression, SVR)。与传统的线性回归不同,SVR不是简单地最小化预测误差的平方和,而是试图找到一个"ε-不敏感带",使得大多数训练样本都落在这个带内。
1.1 SVR的核心数学原理
SVR的优化目标可以表示为以下凸优化问题:
minimize ½||w||² + C∑(ξi + ξi*)
subject to {
yi - w·φ(xi) - b ≤ ε + ξi
w·φ(xi) + b - yi ≤ ε + ξi*
ξi, ξi* ≥ 0
}
其中:
- w是超平面的法向量
- C是惩罚参数,控制对超出ε带的样本的惩罚程度
- ξi和ξi*是松弛变量,允许某些样本超出ε带
- φ(·)是将输入映射到高维特征空间的核函数
- ε定义了不敏感带的宽度
这个优化问题的解可以通过拉格朗日乘子法转化为对偶问题来求解,最终得到的回归函数形式为:
f(x) = ∑(αi - αi*)K(xi, x) + b
其中αi和αi*是拉格朗日乘子,K(xi, x)是核函数。
1.2 关键超参数解析
在SVR中,有几个关键超参数直接影响模型性能:
-
核函数类型(Kernel)
- 线性核:K(xi, xj) = xiᵀxj
- 多项式核:K(xi, xj) = (γxiᵀxj + r)^d
- RBF(高斯)核:K(xi, xj) = exp(-γ||xi - xj||²)
- Sigmoid核:K(xi, xj) = tanh(γxiᵀxj + r)
-
惩罚参数C
- 控制模型复杂度和训练误差之间的权衡
- C值越大,对超出ε带的样本惩罚越大,可能导致过拟合
- C值越小,允许更多的样本超出ε带,可能导致欠拟合
-
核系数γ(针对RBF核)
- 定义单个训练样本的影响范围
- γ值越大,样本影响范围越小,决策边界更复杂
- γ值越小,样本影响范围越大,决策边界更平滑
-
不敏感带宽度ε
- 定义预测值可以偏离真实值多少而不被惩罚
- ε值越大,模型允许的误差越大,支持向量越少
- ε值越小,模型对训练数据的拟合越精确
提示:在实际应用中,RBF核是最常用的选择,因为它可以处理非线性关系且只有两个关键参数(C和γ)需要调节,相比多项式核更简单有效。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MATLAB中的SVR实现与网格搜索
MATLAB的Statistics and Machine Learning Toolbox提供了完整的SVR实现,主要通过fitrsvm函数来完成。这个函数支持多种核函数和丰富的参数配置选项,使得SVR的实现变得非常便捷。
2.1 fitrsvm函数详解
fitrsvm函数的基本调用格式为:
matlab复制Mdl = fitrsvm(X,Y,'KernelFunction','rbf','BoxConstraint',C,'KernelScale','auto');
关键参数说明:
X: 训练数据特征矩阵(n×p),n是样本数,p是特征数Y: 响应变量(n×1)KernelFunction: 指定核函数类型,如'rbf'(默认)、'linear'、'polynomial'BoxConstraint: 惩罚参数CKernelScale: RBF核的γ参数,'auto'表示1/p(特征数的倒数)Epsilon: ε不敏感带宽度,默认为iqr(Y)/13.49(基于响应变量的四分位距)
2.2 网格搜索实现步骤
网格搜索(Grid Search)是最常用的超参数优化方法之一,其基本思想是为每个超参数指定一组候选值,然后遍历所有可能的组合,评估模型性能,最终选择表现最好的参数组合。
在MATLAB中实现网格搜索的典型流程:
- 定义参数网格
- 创建交叉验证分区
- 初始化最佳参数和性能指标
- 嵌套循环遍历所有参数组合
- 对每种组合训练模型并评估
- 记
