








研究背景
本代码集面向旋转机械(如轴承)的故障诊断 任务。基于凯斯西储大学(CWRU)轴承数据中心公开的驱动端振动加速度信号(采样频率12 kHz,转速1797 rpm),通过信号分解‑非线性特征提取‑深度时序分类 的全流程分析,实现不同故障类型(正常、内圈、滚动体、外圈)及不同损伤直径(0.007″、0.014″、0.021″)的10类状态识别 。核心创新在于引入复合多尺度气泡熵(CMBE) 表征ICEEMDAN分解后各IMF的复杂度,并结合贝叶斯优化(BO)的TCN‑BiLSTM混合网络提升分类精度与泛化性。
主要功能
| 代码文件 | 主要功能 |
|---|---|
shujuchuli_1797.m |
加载CWRU原始.mat数据,滑动窗口切分(窗长1000,步长1000,每段2048点),生成120样本/类×10类=1200样本的归一化数据集data_total_1797.mat。 |
main.m(特征提取) |
对第一个样本可视化ICEEMDAN分解结果、包络谱、峭度、能量熵、频谱 ;对所有样本提取前8个IMF的CMBE特征 (尺度1~10),形成1200×80的特征矩阵feature_vector.mat。 |
main.m(分类建模) |
加载特征,划分训练集(每类90样本)与测试集(每类30样本);利用BO优化TCN‑BiLSTM的超参数 ;训练最优模型并评估准确率、绘制混淆矩阵、进行SHAP可解释性分析。 |
算法步骤与技术路线
原始振动信号(12000 Hz)
↓ [滑动窗口分割]
每段2048点,120样本/类
↓
ICEEMDAN分解(Nstd=0.1, NR=80, MaxIter=8)
↓
前8个IMF分量
↓
复合多尺度气泡熵(CMBE)特征提取(尺度1~10,嵌入维m=2,r=0.15×std)
↓
特征矩阵(1200×80)
↓
训练/测试划分(90:30每类)
↓
贝叶斯优化TCN‑BiLSTM超参数
(numFilters, filterSize, dropout, numBlocks, bilstmUnits, LR等)
↓
最优TCN‑BiLSTM分类模型
↓
准确率评估 + 混淆矩阵 + SHAP特征重要性分析
公式原理
1. ICEEMDAN分解
- 改进的自适应噪声完备集合经验模态分解 ,在CEEMDAN基础上通过添加局部均值估计抑制残余噪声和伪模态。
- 对信号( x(t) ),第( k )阶IMF通过以下迭代获得:
rk−1(t)=x(t)−∑i=1k−1IMF~i(t)IMF~k(t)=1I∑i=1IE1(rk−1(t)+εk−1Ek−1(w(i)(t))) \begin{aligned} r_{k-1}(t) &= x(t) - \sum_{i=1}^{k-1} \widetilde{IMF}i(t) \\ \widetilde{IMF}k(t) &= \frac{1}{I}\sum{i=1}^{I} E_1\left(r{k-1}(t) + \varepsilon_{k-1} E_{k-1}(w^{(i)}(t))\right) \end{aligned} rk−1(t)IMF k(t)=x(t)−i=1∑k−1IMF i(t)=I1i=1∑IE1(rk−1(t)+εk−1Ek−1(w(i)(t)))
其中Ej(⋅)E_j(\cdot)Ej(⋅)为EMD的第jjj阶模态算子,w(i)(t)w^{(i)}(t)w(i)(t)为白噪声。
2. 复合多尺度气泡熵(CMBE)
- 气泡熵(Bubble Entropy) 克服了样本熵对参数敏感的缺陷,通过排序模式匹配概率 衡量复杂度。
- 对序列{xi}\{x_i\}{xi}重构相空间:X_i\^m = \[x_i, x_{i+1}, \\ldots, x_{i+m-1}\]
- 计算气泡排序模式 :将每个向量映射为排列模式π\piπ
- 气泡熵定义:
BE(m)=−∑p(π)lnp(π) BE(m) = -\sum p(\pi) \ln p(\pi) BE(m)=−∑p(π)lnp(π)
- 复合多尺度扩展 :在尺度τ\tauτ下对序列进行粗粒化平均 (yj(τ)=1τ∑i=(j−1)τ+1jτxiy_j^{(\tau)} = \frac{1}{\tau}\sum_{i=(j-1)\tau+1}^{j\tau} x_iyj(τ)=τ1∑i=(j−1)τ+1jτxi),再计算各尺度下的BE,形成多尺度熵曲线,本代码取前10个尺度值拼接为特征。
3. TCN‑BiLSTM网络
- 时间卷积网络(TCN) 由膨胀因果卷积残差块构成,感受野随层数指数增长。
- 膨胀卷积输出:F(s)=(x∗df)(s)=∑i=0k−1f(i)⋅xs−d⋅iF(s) = (x *{d} f)(s) = \sum{i=0}^{k-1} f(i) \cdot x_{s-d\cdot i}F(s)=(x∗df)(s)=∑i=0k−1f(i)⋅xs−d⋅i
- 双向长短期记忆网络(BiLSTM) 捕捉前后双向时序依赖:
h→t=LSTM(xt,h→t−1)h←t=LSTM(xt,h←t+1)Ht=[h→t;h←t] \begin{aligned} \overrightarrow{h}t &= \text{LSTM}(x_t, \overrightarrow{h}{t-1}) \\ \overleftarrow{h}t &= \text{LSTM}(x_t, \overleftarrow{h}{t+1}) \\ H_t &= [\overrightarrow{h}_t; \overleftarrow{h}_t] \end{aligned} h th tHt=LSTM(xt,h t−1)=LSTM(xt,h t+1)=[h t;h t] - 组合方式:TCN提取局部时序模式 → 展平为序列特征 → BiLSTM建模全局依赖 → 全连接分类。
4. 贝叶斯优化(BO)
- 采用高斯过程代理模型 + 期望提升(EI)采集函数 :
EI(x)=E[max(f(x)−f∗,0)] EI(x) = \mathbb{E}[\max(f(x) - f^*, 0)] EI(x)=E[max(f(x)−f∗,0)]
通过历史观测迭代更新后验分布,平衡探索与利用,以最小化验证损失为目标寻优。
参数设定
| 模块 | 参数名称 | 设定值/范围 | 说明 |
|---|---|---|---|
| 数据预处理 | 滑动窗口w |
1000 | 窗口移动步长 |
样本长度s |
2048 | 单个样本点数 | |
| ICEEMDAN | 信噪比Nstd |
0.1 | 噪声标准差系数 |
噪声添加次数NR |
80 | 集合平均次数 | |
最大层数MaxIter |
8 | 提取前8个IMF | |
| CMBE特征 | 最大尺度maxScale |
10 | 多尺度因子 |
嵌入维m |
2 | 相空间重构维度 | |
相似容限系数r_factor |
0.15 | 阈值 = 0.15×std(x) | |
| BO优化 | numFilters |
[8,32] 整数 | TCN卷积核数量 |
filterSize |
[2,6] 整数 | 卷积核尺寸 | |
dropoutFactor |
[0.05,0.3] | Dropout比率 | |
numBlocks |
[1,3] 整数 | TCN残差块数量 | |
bilstmUnits |
[32,128] 整数 | BiLSTM隐藏单元数 | |
InitialLearnRate |
[1e-4, 1e-2] 对数 | Adam初始学习率 | |
LearnRateDropFactor |
[0.5,0.9] | 分段学习率衰减因子 | |
| 训练设置 | 最大轮次MaxEpochs |
120(最终训练) | BO阶段为20 |
| 小批量大小 | 30 | Mini‑Batch Size | |
| 学习率下降周期 | 50 | 每50轮衰减一次 |
运行环境
- 软件平台:MATLAB R2024b
应用场景
- 工业预测性维护:对旋转设备(电机、风机、泵)的轴承进行在线状态监测与故障预警。
- 故障诊断算法研究 :作为信号分解‑熵特征‑深度分类范式的验证案例,可扩展至齿轮箱、往复机械等其他振动信号分析。