








一、研究背景
滚动轴承是旋转机械中的关键部件,其健康状态直接影响设备的安全与效率。传统故障诊断依赖人工特征提取与分类器设计,但面对复杂、非平稳的振动信号,该方法泛化能力有限。近年来,信号分解(如ICEEMDAN)、多尺度熵特征(如复合多尺度气泡熵)与深度学习(如TCN-LSTM)相结合,成为智能故障诊断的研究热点。本代码基于凯斯西储大学(CWRU)轴承数据集,实现从原始振动信号到故障分类的端到端诊断流程,并利用贝叶斯优化自动调参,提升模型性能。
二、主要功能
- 数据预处理:将原始长序列振动信号按滑动窗口切分为多个样本(每类120个样本,每个样本2048点)。
- 信号自适应分解:对每个样本使用ICEEMDAN分解,提取前8个本征模态函数(IMF)。
- 特征提取:对每个IMF计算复合多尺度气泡熵(CMBE),形成特征向量(8个IMF × maxScale个尺度)。
- 分类模型:构建TCN-LSTM网络,采用贝叶斯优化(BO)自动搜索最优超参数,完成故障模式识别。
- 模型解释:使用SHAP值分析各特征对分类结果的贡献,绘制摘要图和依赖图。
- 性能评估:输出训练/测试准确率、混淆矩阵、优化结果摘要等。
三、算法步骤
-
数据加载与样本构建
- 加载10种状态(正常+9种故障)的.mat文件。
- 对每种状态,通过滑动窗口(步长1000,窗口大小2048)生成120个样本。
- 所有样本合并为
data_total_1797.mat。
-
ICEEMDAN分解(仅对第一个样本可视化)
- 参数:
Nstd=0.1(噪声标准差),NR=80(集成次数),MaxIter=8(最大分解层数)。 - 输出IMF分量,并绘制时域图、包络谱、峭度图、能量熵图、频谱图。
- 参数:
-
复合多尺度气泡熵提取
- 对每个样本的每个IMF,调用
CompositeMultiscaleBubbleEntropy函数。 - 尺度因子
tau从1到maxScale(=10),每个尺度下计算tau组粗粒化序列的气泡熵平均值。 - 最终特征向量维度 = 8 IMF × 10 尺度 = 80 维。
- 对每个样本的每个IMF,调用
-
TCN-LSTM模型构建与贝叶斯优化
- 数据集按类划分:每类前90个训练,后30个测试。
- 定义超参数空间:
numFilters、filterSize、dropoutFactor、numBlocks、lstmUnits、InitialLearnRate、LearnRateDropFactor。 - 贝叶斯优化目标函数:验证集分类误差(1-准确率)。
- 优化结束后,用最佳超参数重新训练完整模型(epochs=120)。
-
模型评估与解释
- 输出训练/测试准确率、混淆矩阵。
- 对测试集前50个样本计算SHAP值,绘制特征重要性条形图和依赖图。
四、技术路线
原始振动信号
滑动窗口切分
ICEEMDAN分解
IMF1...IMF8
复合多尺度气泡熵
特征向量80维
贝叶斯优化TCN-LSTM
故障分类结果
SHAP模型解释
核心技术栈:
- 信号处理:ICEEMDAN(改进的自适应噪声完备集合经验模态分解)
- 特征提取:复合多尺度气泡熵(CMBE)
- 分类器:时序卷积网络(TCN) + 长短时记忆网络(LSTM)
- 超参数优化:贝叶斯优化(高斯过程代理模型 + 期望改进采集函数)
- 可解释性:SHAP(Shapley加法解释)
五、公式原理
1. ICEEMDAN
改进的EMD方法,通过添加特定噪声并控制残差,减少模态混叠。第k阶IMF d~k\tilde{d}_kd~k定义为:
d~k=x−M(x+β0E1(w(i))) \tilde{d}_k = x - M(x + \beta_0 E_1(w^{(i)})) d~k=x−M(x+β0E1(w(i)))
其中 M(⋅)M(\cdot)M(⋅)为局部均值算子,E1(⋅)E_1(\cdot)E1(⋅)为第一阶EMD分解,w(i)w^{(i)}w(i)为白噪声。
2. 气泡熵(Bubble Entropy)
衡量时间序列复杂度。给定嵌入维数mmm和相似容限rrr,将序列重构为模式,统计模式出现的概率 ppp,气泡熵为:
BE=−∑plogp BE = -\sum p \log p BE=−∑plogp
本文中 m=2m=2m=2,r=0.15×std(x)r = 0.15 \times \text{std}(x)r=0.15×std(x)。
3. 复合多尺度气泡熵
对尺度因子 τ\tauτ,生成 τ\tauτ 组粗粒化序列:
yk(τ)=1τ∑i=kk+τ−1xi,k=1,2,...,τ y_k^{(\tau)} = \frac{1}{\tau} \sum_{i=k}^{k+\tau-1} x_i, \quad k=1,2,\dots,\tau yk(τ)=τ1i=k∑k+τ−1xi,k=1,2,...,τ
CMBE为所有粗粒化序列气泡熵的均值:
CMBE(x,τ,m,r)=1τ∑k=1τBE(yk(τ),m,r) CMBE(x,\tau,m,r) = \frac{1}{\tau} \sum_{k=1}^{\tau} BE(y_k^{(\tau)}, m, r) CMBE(x,τ,m,r)=τ1k=1∑τBE(yk(τ),m,r)
4. TCN-LSTM
- TCN :使用因果膨胀卷积 + 残差连接,捕获长期依赖。膨胀因子 d=2i−1d = 2^{i-1}d=2i−1。
- LSTM :记忆单元ctc_tct、输入门 iti_tit、遗忘门 ftf_tft、输出门 oto_tot 控制信息流。
- 组合:TCN提取局部时序特征,LSTM进一步建模序列全局依赖。
5. 贝叶斯优化
目标函数f(λ)f(\lambda)f(λ)(验证误差)建模为高斯过程:
f(λ)∼GP(m(λ),k(λ,λ′)) f(\lambda) \sim \mathcal{GP}(m(\lambda), k(\lambda,\lambda')) f(λ)∼GP(m(λ),k(λ,λ′))
采集函数采用期望改进(EI):
EI(λ)=E[max(0,fmin−f(λ))] EI(\lambda) = \mathbb{E}[\max(0, f_{\min} - f(\lambda))] EI(λ)=E[max(0,fmin−f(λ))]
6. SHAP值
基于博弈论Shapley值,特征 jjj的贡献为:
ϕ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)]
六、参数设定
| 参数名 | 值 | 说明 |
|---|---|---|
w |
1000 | 滑动窗口步长 |
s |
2048 | 每个样本长度 |
m(样本数) |
120 | 每类故障样本数 |
Nstd |
0.1 | ICEEMDAN噪声标准差 |
NR |
80 | 噪声添加次数 |
MaxIter |
8 | 最大分解层数(IMF数) |
maxScale |
10 | 复合多尺度最大尺度因子 |
m(熵) |
2 | 气泡熵嵌入维数 |
r_factor |
0.15 | 相似容限系数 |
tn |
90 | 每类训练样本数 |
maxEpochs(优化) |
20 | 贝叶斯优化中每次评估的epochs |
maxEpochs(最终) |
120 | 最终训练epochs |
miniBatchSize |
30 | 批大小 |
| 贝叶斯优化迭代次数 | 30 | 最大评估次数 |
超参数搜索空间(贝叶斯优化):
| 参数 | 范围 | 类型 |
|---|---|---|
numFilters |
[8, 32] | 整数 |
filterSize |
[2, 6] | 整数 |
dropoutFactor |
[0.05, 0.3] | 连续 |
numBlocks |
[1, 3] | 整数 |
lstmUnits |
[32, 128] | 整数 |
InitialLearnRate |
[1e-4, 1e-2] | 对数连续 |
LearnRateDropFactor |
[0.5, 0.9] | 连续 |
七、运行环境
- 软件:MATLAB R2024b
八、应用场景
- 工业旋转机械健康管理:如风力发电机、航空发动机、机床主轴、压缩机等设备的轴承故障在线监测与预警。
- 预测性维护:通过振动信号自动识别早期微弱故障(如内圈、外圈、滚动体损伤及不同损伤程度)。
- 自动化故障诊断系统:可嵌入数据采集系统或边缘计算设备,实现从信号采集到故障分类的实时处理。
- 算法研究平台:为信号分解、多尺度熵、深度学习及超参数优化提供可复现的代码框架,便于科研人员对比改进。