


代码研究背景
该代码针对机械系统关键部件(滚动轴承)的剩余寿命预测 问题,利用卷积神经网络从历史退化数据中学习特征与剩余寿命之间的非线性映射关系。采用某公开轴承数据集(PHM2012),以Bearing 1‑2为训练集、Bearing 3为测试集,实现端到端的剩余寿命(RUL)回归预测。
主要功能
- 数据加载与划分:读取预处理的轴承特征数据,按轴承编号划分训练集(1‑2)和测试集(3)。
- 数据标准化:基于训练集计算均值和标准差,对训练/测试数据进行Z‑score标准化。
- CNN模型构建:定义包含卷积层、批归一化、ReLU激活、Dropout和全连接层的回归网络。
- 模型训练:采用Adam优化器,设置验证集(从训练集中拆分20%)、学习率衰减、早停策略(输出验证损失最小的模型)。
- 预测与评估:在测试集上预测RUL,计算RMSE、MAE、R²和运行时间。
- 可视化分析:绘制真实值‑预测值对比、置信区间、残差分布、误差直方图及性能雷达图。
算法步骤
-
数据准备
- 加载PHM2012数据集,其中每个轴承对应一个特征矩阵(样本×特征)及其标签向量(RUL,线性递减至0)。
- 拼接训练轴承的数据和标签,测试轴承单独保留。
-
标准化
- 计算训练集各特征的均值μj\mu_jμj 和标准差 σj\sigma_jσj。
- 对训练集和测试集分别执行Xnorm=(X−μ)/σX_{norm} = (X - \mu) / \sigmaXnorm=(X−μ)/σ,并处理可能产生的NaN(赋0)。
-
数据重排
- 将二维数据(样本数×特征数)重塑为四维数组:
[特征数, 1, 1, 样本数],以适应imageInputLayer(单通道二维图像输入)。
- 将二维数据(样本数×特征数)重塑为四维数组:
-
划分验证集
- 从训练集中随机抽取20%作为验证集,用于训练过程中的监控和模型选择。
-
构建CNN网络
- 输入层:特征数×1×1。
- 卷积层:两个卷积核大小[3,1],滤波器数量16→32,填充为"same"保持空间维度。
- 批归一化与ReLU激活。
- Dropout层(丢弃率0.2)防过拟合。
- 全连接层(输出1个神经元)用于回归。
- 回归层(均方误差损失)。
-
训练网络
- 设置训练选项(Adam、初始学习率0.005、每50轮衰减为一半、L2正则化0.001、最大轮数100、批大小64等)。
- 调用
trainNetwork进行训练,并返回最佳验证损失对应的模型。
-
测试与评估
- 用
predict对测试集进行前向传播得到预测RUL。 - 调用自定义函数
evaluateModel计算RMSE、MAE、R²。
- 用
-
可视化与保存
- 生成含4个子图的综合分析图及高质量对比图。
- 将模型、预测值、性能指标、标准化参数等保存为
.mat文件。
技术路线
原始特征数据 → 数据划分 → Z‑score标准化 → 重塑为CNN输入格式
↓
划分训练/验证集 → 定义CNN结构(Conv‑BN‑ReLU‑Conv‑BN‑ReLU‑Dropout‑FC‑Regression)
↓
Adam优化训练(学习率衰减、L2正则、Early‑stopping by val loss)
↓
测试集预测 → 性能评估(RMSE/MAE/R²) → 可视化(对比图、残差、误差分布等)
公式原理
-
Z‑score标准化
xij′=xij−μjσj,μj=1N∑i=1Nxij, σj=1N−1∑i=1N(xij−μj)2 x'{ij} = \frac{x{ij} - \mu_j}{\sigma_j}, \quad \mu_j = \frac{1}{N}\sum_{i=1}^{N}x_{ij},\; \sigma_j = \sqrt{\frac{1}{N-1}\sum_{i=1}^{N}(x_{ij}-\mu_j)^2} xij′=σjxij−μj,μj=N1i=1∑Nxij,σj=N−11i=1∑N(xij−μj)2 -
卷积操作 (2D卷积,但卷积核高度为3、宽度为1,实际作用于特征维)
对于输入 X∈RF×1X \in \mathbb{R}^{F \times 1}X∈RF×1,卷积核 W∈R3×1W \in \mathbb{R}^{3 \times 1}W∈R3×1,输出特征图 Y=X∗W+bY = X * W + bY=X∗W+b,其中 ∗*∗ 表示互相关运算。
-
批归一化
x^=x−μBσB2+ϵ,y=γx^+β \hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}, \quad y = \gamma \hat{x} + \beta x^=σB2+ϵ x−μB,y=γx^+β -
Dropout:训练时以概率 (p)(此处 (p=0.2))随机丢弃神经元,测试时保留所有输出并乘以 (1-p)。
-
损失函数(回归层) :均方误差
L=1N∑i=1N(yi−y^i)2 L = \frac{1}{N}\sum_{i=1}^{N}(y_i - \hat{y}_i)^2 L=N1i=1∑N(yi−y^i)2 -
Adam优化器:结合动量与自适应学习率的一阶梯度优化算法,更新规则略。
-
评估指标
- RMSE=1N∑i=1N(yi−y^i)2\text{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_i-\hat{y}_i)^2}RMSE=N1∑i=1N(yi−y^i)2
- MAE=1N∑i=1N∣yi−y^i∣\text{MAE} = \frac{1}{N}\sum_{i=1}^{N}|y_i-\hat{y}_i|MAE=N1∑i=1N∣yi−y^i∣
- R2=1−∑(yi−y^i)2∑(yi−yˉ)2R^2 = 1 - \frac{\sum (y_i-\hat{y}_i)^2}{\sum (y_i-\bar{y})^2}R2=1−∑(yi−yˉ)2∑(yi−y^i)2
参数设定
| 参数 | 值 | 说明 |
|---|---|---|
| 验证集比例 | 0.2 | 从训练集中拆分 |
| 最大训练轮数 | 100 | Epochs |
| 小批量大小 | 64 | Mini‑batch size |
| 初始学习率 | 0.005 | Adam初始步长 |
| 学习率衰减策略 | piecewise | 每50轮乘以0.5 |
| L2正则化系数 | 0.001 | 权重衰减 |
| 梯度阈值 | 1 | 防止梯度爆炸 |
| Dropout比率 | 0.2 | 丢弃率 |
| 卷积核数量 | 16 → 32 | 逐层增加通道数 |
| 卷积核大小 | [3, 1] | 在特征维度上滑动 |
| 填充方式 | 'same' | 保持输出长度与输入相同 |
运行环境
- 软件:MATLAB R2020b 或更高版本。
应用场景
- 工业预测性维护:根据传感器振动、温度等监测数据,预测设备剩余使用寿命,优化维修计划。
- 轴承健康管理:适用于旋转机械(风力发电机、航空发动机、机床主轴)的轴承退化跟踪。
- 其他时序回归任务:如电池容量衰减预测、电子元器件寿命预测等,只需替换相应特征数据集。