


MATLAB 代码实现了一个基于贝叶斯优化(BO) 的 TCN-BiLSTM(时间卷积网络 + 双向长短期记忆网络) 分类模型,主要用于数据分类任务。以下是对代码的详细分析:
1. 研究背景
在时间序列分类任务中,单一模型往往难以同时捕捉局部时序特征 (如TCN)和全局双向依赖关系 (如BiLSTM)。TCN 通过因果卷积和残差块提取多尺度时序特征,而 BiLSTM 能进一步建模序列中的长期上下文信息。但这类组合模型的超参数众多,手动调参效率低。因此,引入贝叶斯优化自动搜索最佳超参数,提升模型性能与泛化能力。
2. 主要功能
- 数据导入与预处理
- 基于贝叶斯优化的超参数自动搜索
- 构建并训练 TCN-BiLSTM 分类网络
- 模型评估(准确率、混淆矩阵)
- SHAP 可解释性分析(特征重要性、依赖图)
- 保存优化结果与模型
3. 算法步骤
-
数据准备
- 从 Excel 读取数据,最后一列为类别标签
- 按类别分层划分训练集(70%)与测试集(30%)
- 数据归一化(mapminmax)并转换为 cell 格式供网络输入
-
贝叶斯优化
- 定义超参数空间(如卷积核数、核大小、dropout、残差块数、BiLSTM单元数、学习率等)
- 设置目标函数(TCN-BiLSTM 在验证集上的分类误差)
- 运行贝叶斯优化,寻找最优超参数组合
-
模型训练
- 使用最佳超参数构建 TCN-BiLSTM 网络
- 设置训练参数(Adam优化器、学习率调度等)
- 在训练集上训练网络
-
模型评估
- 在训练集与测试集上预测
- 计算准确率,绘制预测对比图与混淆矩阵
-
可解释性分析(SHAP)
- 对部分测试样本计算 SHAP 值
- 绘制特征重要性条形图、特征依赖图等
4. 技术路线
- TCN 模块:通过多个残差块提取时序特征,每个块包含膨胀卷积、批归一化、激活函数和 dropout
- BiLSTM 模块:双向 LSTM,捕捉前后文依赖
- 贝叶斯优化:基于高斯过程代理模型,通过采集函数(如期望改进)高效搜索超参数空间
- SHAP 分析:基于 Shapley 值解释模型预测结果
5. 公式原理
TCN 残差块:
y=Activation(x+F(x)) y = \text{Activation}(x + F(x)) y=Activation(x+F(x))
其中 F(x)F(x)F(x)为膨胀卷积、BN、激活、dropout 的组合。
贝叶斯优化目标:
x∗=argminx∈Xf(x) x^* = \arg\min_{x \in \mathcal{X}} f(x) x∗=argx∈Xminf(x)
其中 f(x)f(x)f(x)为验证误差,通过高斯过程后验均值与方差进行优化。
SHAP 值:
ϕj=∑S⊆F∖{j}∣S∣!(∣F∣−∣S∣−1)!∣F∣!(f(S∪{j})−f(S)) \phi_j = \sum_{S \subseteq F \setminus \{j\}} \frac{|S|!(|F|-|S|-1)!}{|F|!} \left( f(S \cup \{j\}) - f(S) \right) ϕj=S⊆F∖{j}∑∣F∣!∣S∣!(∣F∣−∣S∣−1)!(f(S∪{j})−f(S))
表示特征 jjj 对预测的贡献。
6. 参数设定
| 参数 | 取值范围 / 设定值 |
|---|---|
| numFilters | 8 ~ 32 |
| filterSize | 2 ~ 6 |
| dropoutFactor | 0.05 ~ 0.3 |
| numBlocks | 1 ~ 3 |
| bilstmUnits | 32 ~ 128 |
| InitialLearnRate | 1e-4 ~ 1e-2(对数变换) |
| LearnRateDropFactor | 0.5 ~ 0.9 |
| MaxEpochs(优化) | 20 |
| MaxEpochs(最终训练) | 120 |
| miniBatchSize | 30 |
7. 运行环境
- MATLAB R2023b
8. 应用场景
适用于多分类数据,例如:
- 人体活动识别(传感器数据)
- 心电图(ECG)分类
- 工业设备故障诊断
- 金融时间序列分类