






一、研究背景
该代码研究的是多输出回归预测问题 ,采用贝叶斯优化(BO)结合CNN-BiGRU混合神经网络进行建模。适用于高维特征数据,如电力负荷预测、金融时间序列预测等场景。通过贝叶斯优化自动调参,提升模型预测精度与泛化能力。
二、主要功能
- 数据预处理:归一化、训练/测试集划分、数据格式转换
- 贝叶斯优化调参:自动优化BiGRU单元数、初始学习率、L2正则化系数
- CNN-BiGRU建模:结合CNN提取局部特征,BiGRU捕捉双向时序依赖
- 多输出预测:支持3个输出变量的同时预测
- 可视化分析:预测对比图、误差分布、参数迭代过程、模型结构图
- 性能评估:计算RMSE、MAE、R²、MAPE等指标
三、算法步骤
- 数据导入与随机打乱
- 划分训练集(70%)与测试集(30%)
- 数据归一化(mapminmax)
- 贝叶斯优化搜索最优超参数
- 构建CNN-BiGRU网络结构
- 训练网络并预测
- 反归一化与误差计算
- 多维度可视化与指标输出
四、技术路线
数据预处理 → 贝叶斯优化超参数 → CNN-BiGRU网络构建 → 训练与预测 → 可视化与评估
- CNN部分:2层卷积(16→32个滤波器) + ReLU激活
- BiGRU部分:正向GRU + 反向GRU(通过FlipLayer实现)
- 全连接层:输出维度为3(多输出回归)
- 损失函数:回归损失(MSE)
- 优化器:Adam + 学习率衰减
五、公式原理(关键模型)
1. 贝叶斯优化
x ∗ = arg min x ∈ X f ( x ) x^* = \arg\min_{x \in \mathcal{X}} f(x) x∗=argx∈Xminf(x)
使用高斯过程建模目标函数,通过采集函数(如EI)选择下一个评估点。
2. CNN卷积操作
y i , j = ∑ m ∑ n w m , n ⋅ x i + m , j + n + b y_{i,j} = \sum_{m} \sum_{n} w_{m,n} \cdot x_{i+m, j+n} + b yi,j=m∑n∑wm,n⋅xi+m,j+n+b
3. 门控机制
z t = σ ( W z ⋅ [ h t − 1 , x t ] ) z_t = \sigma(W_z \cdot [h_{t-1}, x_t]) zt=σ(Wz⋅[ht−1,xt])
r t = σ ( W r ⋅ [ h t − 1 , x t ] ) r_t = \sigma(W_r \cdot [h_{t-1}, x_t]) rt=σ(Wr⋅[ht−1,xt])
h ~ t = tanh ( W ⋅ [ r t ⊙ h t − 1 , x t ] ) \tilde{h}t = \tanh(W \cdot [r_t \odot h{t-1}, x_t]) h~t=tanh(W⋅[rt⊙ht−1,xt])
h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t ht=(1−zt)⊙ht−1+zt⊙h~t
六、参数设定
| 参数 | 范围/值 | 说明 |
|---|---|---|
| 训练集比例 | 70% | num_size=0.7 |
| 输出维度 | 3 | outdim=3 |
| BiGRU单元数 | [10,50] | 整数 |
| 初始学习率 | [1e-3,1] | 对数尺度 |
| L2正则化系数 | [1e-10,1e-2] | 对数尺度 |
| 最大迭代次数 | 30 | 贝叶斯优化评估次数 |
| 训练轮数 | 100 | MaxEpochs |
| 批处理大小 | 64 | MiniBatchSize |
七、运行环境
- 平台:MATLAB(建议R2020a以上)
- 数据格式:Excel文件(data.xlsx),最后3列为输出变量
八、应用场景
- 多输入多输出预测:如风速、温度、湿度等多气象要素预测
- 负荷预测:电力、能源系统中的多节点负荷预测
- 金融预测:多指标股价、汇率预测
- 工业过程控制:多质量指标预测与优化
- 环境监测:多污染物浓度预测