代码背景
支持向量回归(SVR)是一种有效的非线性回归工具,但其预测性能高度依赖于惩罚参数 c 和核函数参数 g 的取值。传统参数选择方法(如网格搜索、经验调参)效率低且易陷入局部最优。为此,引入智能优化算法自动寻优成为研究热点。本代码采用牛顿-拉夫逊优化算法(NRBO) 对SVR参数进行优化,旨在提升回归模型的精度与泛化能力。
主要功能
- 数据预处理:读取Excel数据,归一化,划分训练/测试集。
- 参数优化 :使用NRBO算法优化SVR的
c和g参数,以测试集RMSE最小化为目标。 - 模型训练与预测:利用最优参数训练SVR模型,并对训练集、测试集及新数据进行预测。
- 性能评估:计算RMSE、R²、MAE等指标,对比优化前后效果。
- 可视化分析:绘制优化迭代曲线、雷达图、预测对比图、误差柱状图、拟合散点图等。
- 特征解释:通过SHAP值分析特征重要性。
- 结果导出:保存精度指标和预测结果。
算法步骤
- 初始化:清空环境,设置全局绘图参数,添加必要路径。
- 数据导入 :读取
回归数据.xlsx,提取特征X和输出Y。 - 归一化 :将
X和Y映射到 [0,1] 区间。 - 划分数据集:按80%训练、20%测试的比例划分,可选是否打乱样本。
- NRBO参数优化 :
- 定义适应度函数为测试集RMSE。
- 设置参数边界:
c ∈ [0.1, 100],g ∈ [0.1, 100]。 - 运行NRBO算法(种群数10,迭代30次)寻找最优
c和g。
- 训练SVR模型 :使用最优参数训练SVR(RBF核,类型为
-s 3即epsilon-SVR)。 - 预测与反归一化:对训练集、测试集进行预测,并将结果反归一化回原始尺度。
- 性能对比 :
- 训练未优化的SVR模型(默认参数)作为对照。
- 计算优化前后模型的RMSE、R²、MAE。
- 可视化:生成多种图表并保存为PNG。
- SHAP分析 :调用
shapley_function计算特征SHAP值并绘图。 - 新数据预测 :读取
新的多输入.xlsx,用训练好的模型预测并保存结果。
技术路线
数据导入 → 归一化 → 训练/测试集划分 →
NRBO优化SVR参数(c, g) → 训练优化SVR →
预测 → 反归一化 → 指标计算 →
可视化(迭代曲线、雷达图、对比图、误差图等)→
SHAP特征分析 → 新数据预测 → 结果保存
公式原理
1. SVR基本原理
SVR旨在寻找一个函数 f(x)=w·φ(x)+b,使所有样本的预测误差不超过 ε,同时最小化模型复杂度:
min12∥w∥2+C∑i=1n(ξi+ξi∗) \min \frac{1}{2}\|w\|^2 + C\sum_{i=1}^{n}(\xi_i+\xi_i^*) min21∥w∥2+Ci=1∑n(ξi+ξi∗)
约束条件:
yi−f(xi)≤ε+ξi,f(xi)−yi≤ε+ξi∗,ξi,ξi∗≥0 y_i - f(x_i) \le \varepsilon + \xi_i,\quad f(x_i)-y_i \le \varepsilon + \xi_i^*,\quad \xi_i,\xi_i^* \ge 0 yi−f(xi)≤ε+ξi,f(xi)−yi≤ε+ξi∗,ξi,ξi∗≥0
核函数采用RBF:
K(xi,xj)=exp(−g∥xi−xj∥2) K(x_i,x_j)=\exp(-g\|x_i-x_j\|^2) K(xi,xj)=exp(−g∥xi−xj∥2)
2. NRBO优化算法
牛顿-拉夫逊优化算法(NRBO)是一种基于牛顿-拉夫逊迭代思想的元启发式优化算法。它通过模拟牛顿法寻找极值点的过程,结合群体智能策略,在搜索空间中逐步逼近全局最优解。在代码中,NRBO用于最小化适应度函数(测试集RMSE),从而找到最优的 c 和 g。
3. 适应度函数
RMSE=1n∑i=1n(yi−y^i)2 \text{RMSE} = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2} RMSE=n1i=1∑n(yi−y^i)2
4. 评价指标
- RMSE:均方根误差,衡量预测误差。
- R²:决定系数,反映模型拟合优度。
- MAE:平均绝对误差。
参数设定
| 参数 | 含义 | 取值范围/默认值 |
|---|---|---|
c |
SVR惩罚因子 | [0.1, 100] |
g |
RBF核参数 | [0.1, 100] |
N |
NRBO种群规模 | 10 |
Max_iteration |
优化迭代次数 | 30 |
label |
混沌映射类型(初始化策略) | 1(tent映射) |
ratio |
训练集比例 | 0.8 |
-p |
SVR损失函数参数 | 0.01 |
运行环境
- 操作系统:Windows / Linux / macOS
- 软件:MATLAB(推荐R2018b及以上)
- 必需工具箱/文件 :
- LIBSVM(用于SVR训练与预测)
- 自定义函数文件:
NRBO.m、fit.m、zhibiao.m、shapley_function.m、yuansvr.m、newpre.m等 - 雷达图绘制工具:
spider_plot文件夹 - 数据文件:
回归数据.xlsx、新的多输入.xlsx
应用场景
本代码适用于各类回归预测任务,典型应用包括:
- 工业过程软测量(如产品质量预测)
- 能源系统负荷/功率预测
- 环境监测(空气质量、污染物浓度)
- 金融时间序列分析(股价、汇率)
- 农业产量预测



