4. 验证数据集构建与划分
现场故障诊断模型能否真正落地,往往不取决于算法多先进,而取决于数据集是否“像现场”。现场数据通常呈现三个棘手特征:类别极不平衡(正常样本占绝大多数,某些故障样本可能只有个位数)、标签稀缺(大量数据无标注,标注依赖专家且成本高)、工况漂移(负载、转速、环境温度变化导致同一故障的特征分布发生偏移)。因此,训练集、验证集、测试集的构建不能简单随机切分,而必须围绕“分布一致性”和“时间外推能力”来设计。
一、划分策略:先按工况分层,再按时间切分
随机切分(如 train_test_split)在现场数据上极易造成“数据泄漏”:同一段连续采集的样本被同时分到训练集和测试集,模型在测试集上表现虚高,上线后迅速失效。推荐采用“工况分层 + 时间块切分”的两级策略。
第一步,按工况标签分层。假设现场数据包含三种典型工况:空载(L0)、中载(L1)、满载(L2),每种工况下又包含正常(N)与若干故障(F1、F2)。先统计每个“工况×状态”组合的样本量,形成分层表。第二步,在每个组合内部按采集时间排序,取前 70% 作为训练集、中间 15% 作为验证集、最后 15% 作为测试集。这样测试集在时间上晚于训练集,能真实反映模型对“未来数据”的泛化能力,也便于观察工况漂移带来的性能衰减。
对于样本量极少的故障类别(例如 F2 仅 12 条),若强行按 70/15/15 切分,测试集只剩不到 2 条,评估结果毫无统计意义。此时应采用“留一法 + 交叉验证”:将稀有故障样本轮流作为验证对象,其余用于训练,最终报告平均指标与最差指标。若某类故障样本少于 5 条,建议不单独划分测试集,而是将其全部纳入验证集,并在报告中明确标注“样本不足,指标仅供参考”。
二、不平衡处理:在训练集上做,验证/测试集保持原始分布
一个常见错误是对整个数据集做 SMOTE 或欠采样后再切分,导致验证集和测试集被人为“平衡”,评估结果偏离现场真实分布。正确做法是:只在训练集内部进行重采样或加权,验证集和测试集严格保持现场原始比例。
具体操作上,可采用“类别权重 + 局部过采样”组合。以三分类为例,正常样本 8000 条、F1 故障 400 条、F2 故障 40 条,则类别权重可设为 wN=1、wF1=20、wF2=200,直接传入损失函数(如 PyTorch 的 CrossEntropyLoss(weight=...))。若使用过采样,仅对 F2 在训练集内复制或生成合成样本至 400 条左右,避免生成过多导致过拟合。验证集仍保留 40 条 F2 的原始分布,这样计算出的 F2 召回率才具有现场参考价值。
三、标签稀缺:主动学习与弱标注结合
现场标注成本高,建议采用“主动学习 + 规则弱标注”的混合流程。先用少量已标注数据训练一个初始模型,再对未标注数据计算预测熵或置信度,挑选熵最高的样本交给专家标注。每轮标注 50~100 条,重新训练并评估,通常 3~5 轮即可显著提升稀有故障的识别率。
对于有明确物理阈值的数据,可先用规则生成弱标签。例如振动烈度超过 ISO 10816 报警线时,先标为“疑似故障”,再由专家复核确认。弱标签样本在训练时赋予较低权重(如 0.3),避免噪声标签主导梯度。需要强调的是,弱标注只能用于训练集,验证集和测试集必须使用专家确认的硬标签。
四、工况漂移:用时间外推测试集量化衰减
工况漂移的验证不能只看随机划分的测试集。建议额外构建一个“时间外推测试集”:取最近一个完整月份的数据,且该月份包含至少一次工况切换(如从 L1 切换到 L2)。用训练好的模型直接推理,观察准确率、F1 和混淆矩阵的变化。若外推测试集上 F1 下降超过 15%,说明模型对工况变化敏感,需要引入工况归一化或在线自适应。
下面这张图展示了从现场原始数据到三类数据集的完整构建路径,重点标出了分层、时间切分、不平衡处理和漂移验证四个关键环节。
五、可执行的划分检查清单
在实际项目中,建议按以下清单逐项确认,避免常见陷阱:
| 检查项 | 合格标准 | 常见错误 |
|---|---|---|
| 时间顺序 | 训练集时间早于验证集,验证集早于测试集 | 随机打乱后切分,造成数据泄漏 |
| 工况覆盖 | 训练集覆盖所有工况,测试集包含至少一次工况切换 | 训练集只有 L0,测试集出现 L2 |
| 稀有类样本 | 每类测试样本 ≥ 5 条,否则改用交叉验证 | F2 测试集仅 1 条,指标无意义 |
| 不平衡处理位置 | 仅训练集重采样/加权,验证测试保持原始分布 | 全局 SMOTE 后再切分 |
| 标签质量 | 验证/测试集使用专家确认硬标签 | 弱标签混入测试集 |
| 漂移评估 | 额外报告时间外推测试集指标 | 仅报告随机划分指标 |
最后需要强调,数据集构建不是一次性任务。随着设备老化、工艺调整或季节变化,现场分布会持续漂移。建议每季度重新评估一次测试集与当前数据的分布差异(如用 KL 散度或简单的特征均值对比),当差异超过阈值时,及时补充新工况样本并重新划分,使验证数据集始终与现场保持同步。