这段代码实现了一个基于**鲸鱼优化算法(WOA)优化支持向量回归(SVR)**的时间序列预测模型。以下从多个维度对该代码进行简要分析:
1. 研究背景
在实际工程与科研中,许多问题可归结为时间序列预测(如负荷预测、流量预测、股票价格等)。传统SVR模型对惩罚参数 (c) 和核参数 (g) 敏感,人工调参效率低且难以获得全局最优。因此,引入鲸鱼优化算法对SVR关键参数进行自动寻优,可有效提升模型预测精度与稳定性。
2. 主要功能
- 读取Excel数据,构建时间序列预测样本
- 利用WOA算法自动优化SVR的惩罚参数 (c) 和核函数参数 (g)
- 训练SVR模型,并对训练集与测试集进行预测
- 反归一化预测结果,计算多项评价指标(RMSE、MAE、MAPE、R²、RPD等)
- 绘制适应度曲线、预测对比图、误差直方图、线性拟合图等,直观展示模型效果
3. 算法步骤
- 数据预处理:读取数据,根据延时步长 (kim) 和预测步长 (zim) 构造样本矩阵
- 数据集划分:按比例(70%)划分训练集与测试集
- 归一化:对输入与输出进行[0,1]区间归一化
- 参数优化:WOA算法以SVR训练集的均方误差为目标函数,优化 (c) 和 (g)
- 模型训练与预测:使用最优参数训练SVR模型,对训练集和测试集进行预测
- 结果反归一化与评估:计算多种误差指标,绘制可视化图表
4. 技术路线
- 优化算法:鲸鱼优化算法(WOA)
- 预测模型:支持向量回归(SVR),核函数选用径向基函数(RBF)
- 数据重构:通过时间延迟嵌入法将单变量时间序列转化为多变量回归问题
- 评价体系:RMSE、MAE、MAPE、R²、RPD等指标综合评估模型性能
5. 公式原理
(1)SVR目标函数
SVR通过最小化以下目标函数寻找回归函数:
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∗)
其中 CCC为惩罚参数,ξi,ξi∗\xi_i, \xi_i^*ξi,ξi∗为松弛变量。
(2)WOA位置更新
WOA模拟座头鲸的捕食行为,主要包含三种机制:
- 包围猎物 :D=∣C⋅X∗(t)−X(t)∣, X(t+1)=X∗(t)−A⋅DD = |C \cdot X^*(t) - X(t)|,\ X(t+1) = X^*(t) - A \cdot DD=∣C⋅X∗(t)−X(t)∣, X(t+1)=X∗(t)−A⋅D
- 螺旋更新 :X(t+1)=D′⋅ebl⋅cos(2πl)+X∗(t)X(t+1) = D' \cdot e^{bl} \cdot \cos(2\pi l) + X^*(t)X(t+1)=D′⋅ebl⋅cos(2πl)+X∗(t)
- 随机搜索 :X(t+1)=Xrand−A⋅∣C⋅Xrand−X(t)∣X(t+1) = X_{\text{rand}} - A \cdot |C \cdot X_{\text{rand}} - X(t)|X(t+1)=Xrand−A⋅∣C⋅Xrand−X(t)∣
其中A,CA, CA,C为系数向量,X∗(t)X^*(t)X∗(t) 为当前最优解。
(3)归一化
采用 mapminmax 实现线性归一化:
x′=x−xminxmax−xmin x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}} x′=xmax−xminx−xmin
6. 参数设定
| 参数 | 值 | 说明 |
|---|---|---|
| (kim) | 2 | 使用前2个历史值作为输入 |
| (zim) | 1 | 预测未来1个时间点 |
| 训练集比例 | 0.7 | 70%数据用于训练 |
| (c) 范围 | [0.1, 800] | 惩罚参数优化区间 |
| (g) 范围 | [0.1, 800] | 核参数优化区间 |
| 种群数 | 20 | WOA种群大小 |
| 迭代次数 | 30 | WOA最大迭代次数 |
| SVR类型 | -s 3 | ε-SVR |
| 核函数 | -t 2 | 径向基核函数(RBF) |
7. 运行环境
-
软件平台:MATLAB
-
数据格式:Excel文件(data.xlsx),最后一列为预测目标
8. 应用场景
该方法适用于具有时间序列特性的回归预测问题,例如:
- 电力负荷预测
- 股票价格趋势预测
- 环境监测数据(如PM2.5、水质指标)预测
- 工业过程参数预测
- 交通流量预测

