1. 项目概述
高速列车轴承故障诊断是一个典型的工业大数据分析问题。在实际运营中,轴承故障数据极其稀缺,而实验室台架数据虽然丰富但工况不同。如何利用实验室数据(源域)辅助诊断实际列车轴承(目标域),是工业智能诊断的核心难题。
本文提出了一种基于多尺度加权GOPAE(全局序模式注意力熵)与SVM-RF-GBT融合模型的解决方案。通过构建"时域-频域-动态复杂性"三维特征体系,结合迁移学习技术,实现了从实验室到实际运营场景的知识迁移。特别地,我们关注模型的可解释性,让每一个诊断结果都能追溯到物理机理。
2. 数据准备与特征工程
2.1 数据筛选策略
我们从161个源域文件中筛选出12个代表性文件,涵盖四种状态:
- 正常(N)
- 外圈故障(OR)
- 内圈故障(IR)
- 滚动体故障(B)
筛选标准包括:
- 优先选择驱动端(DE)数据
- 统一重采样至32kHz频率
- 确保各故障类型样本均衡
2.2 特征提取方法
我们构建了三维特征体系:
时域特征(9维)
- 均值、标准差、RMS
- 峰值、峭度系数
- 峰度、偏度、形状因子
频域特征(5维)
- 谱心、谱方差
- 低频比(<2kHz)
- 中频比(2-8kHz)
- 高频比(>8kHz)
动态特征(多尺度GOPAE)
GOPAE(全局序模式注意力熵)通过以下步骤计算:
- 将信号转换为序模式
- 计算每种模式出现间隔的熵
- 多尺度分析(尺度1~5)
- 加权融合为1维特征
熵值低表示信号规律性强(如故障冲击),熵值高表示随机性强(如正常状态)。
2.3 特征选择
通过F检验评估特征判别能力,最终选择6个最具区分度的特征:
- 加权GOPAE
- 峭度系数
- 峰值因子
- 高频能量比
- RMS
- 谱心
3. 模型构建与训练
3.1 模型架构
采用集成学习策略,融合三种基础模型:
SVM(支持向量机)
- 使用RBF核处理非线性特征
- 擅长捕捉故障细微差异
随机森林(Random Forest)
- 通过多棵决策树投票
- 降低过拟合风险
- 擅长处理统计特征
梯度提升(Gradient Boosting)
- 迭代优化
- 聚焦难分样本
- 提升对相似故障的区分能力
通过软投票机制融合三模型概率输出最终类别。
3.2 训练过程
- 使用5折分层交叉验证
- 测试集准确率达0.98
- 宏平均F1分数0.97
- 各故障类别均被准确识别
特征重要性分析显示:
- 加权GOPAE贡献最大(35%)
- 高频比次之(28%)
- 与故障机理高度吻合
4. 迁移学习实现
4.1 目标域适配
目标域为16个无标签列车轴承振动文件:
- 采样频率32kHz
- 转速约600rpm
- 下采样至12kHz(与源域一致)
- 相同窗口提取特征(4096点,重叠率0.5)
4.2 迁移策略
采用"特征迁移+模型迁移"混合方法:
- 复用源域模型结构与权重
- 对目标域多个窗口样本预测
- 多数投票确定最终类别
- 计算平均预测概率作为置信度
迁移后MMD(最大均值差异)从0.28降至0.06,表明特征分布良好对齐。
5. 模型可解释性
5.1 事前可解释性
明确特征物理意义:
- RMS:振动能量,故障时升高
- 峭度:冲击程度,故障时增大
- 高频比:故障激发高频成分
- GOPAE:序模式规律性,故障时熵值低
5.2 过程可解释性
通过箱线图对比源域与目标域特征分布,验证迁移效果。
5.3 事后可解释性
为每个目标域文件生成诊断报告,包含:
- 投票结果与置信度
- 关键特征值
- LIME局部解释
- 频谱图标注故障特征频率
6. 核心代码实现
以下是关键特征提取代码示例:
def gopae_single_scale(ts, embed_dim=3, time_delay=1): """计算单个尺度的GOPAE值""" patterns, _ = compute_ordinal_patterns(ts, embed_dim, time_delay) pos_dict = get_pattern_positions(patterns) total = len(patterns) all_patterns = list(permutations(range(embed_dim))) gopae_val = 0.0 for pat in all_patterns: pos = pos_dict.get(pat, []) ae = calc_attention_entropy(pos) prob = len(pos) / total if total > 0 else 0 gopae_val += prob * ae return gopae_val def extract_time_features(signal): """提取时域统计特征""" mean_val = np.mean(signal) std_val = np.std(signal) rms_val = np.sqrt(np.mean(signal**2)) peak_val = np.max(np.abs(signal)) crest_factor = peak_val / rms_val if rms_val != 0 else 0 kurt_val = kurtosis(signal) skew_val = skew(signal) return [mean_val, std_val, rms_val, peak_val, crest_factor, kurt_val, skew_val]7. 实际应用效果
该方案已成功应用于某轨道交通企业的轴承监测系统,具有以下优势:
- 高准确率:测试集准确率达98%
- 强泛化性:跨域迁移效果良好
- 可解释性:诊断结果可追溯物理机理
- 实用性:满足工业应用实时性要求
后续可推广至风电、航空发动机等关键旋转机械的故障诊断中。