诊断准确率98%别高兴太早:数据泄漏排查

电机、变压器故障诊断项目里最熟悉的画面:准确率 98%,混淆矩阵几乎全绿,损失曲线漂亮得像教科书。换一台设备、换一批传感器、换个负载工况,性能直接跳水。问题多半不在网络结构,在数据划分——模型没学会"轴承故障",它记住的是设备编号、采集批次、文件命名规则,甚至测试台的背景噪声。这叫数据泄漏,而且是电气数据特别容易踩的那类。

电气数据的三重泄漏温床

时序信号连续采集(同一次运行几小时的相邻窗口高度相似)、设备个体差异显著(每台电机有自己的振动指纹)、故障样本与工况强耦合(某些故障只在特定转速下采到)——三个特点叠加,让"随机划分"这个默认动作几乎必然出错。

把 10 分钟振动信号切成 1 秒窗口、重叠 50%,然后全量随机打乱按 8:2 分:训练集和测试集里会出现来自同一时刻的窗口,不只是同分布,几乎是复制品。这时测出来的准确率,衡量的是模型认相似窗口的能力,不是泛化能力。

五种泄漏,逐一对号

类型 典型现场 正确做法
同批采集跨集合 一次实验的窗口随机分进两边 以采集批次为最小分组单位
记住设备而非故障 正常样本全来自电机A,故障全来自B 做一次留一设备测试
预处理偷看测试集 全量数据算均值方差、全量 PCA 划分后只用训练集拟合变换
捷径特征 故障样本统一用了更高采样率 元数据单独训练基线分类器
测试集反复调参 按测试结果挑层数、种子、阈值 测试集只在方案冻结后用一次

第二种最隐蔽也最致命:不输入设备编号,模型照样能从底噪、安装刚度、供电谐波里认出设备。排查它最有效的手段就是留一设备测试——训练时完全不见某台设备,只在它身上测。性能大幅下滑,设备指纹依赖实锤。

第三种的范围比多数人以为的大:标准化参数、PCA、特征筛选、异常值阈值、最佳频段选择,全都是"参数估计",任何一步用了全量数据都是泄漏。时序场景还要多防一条——用未来数据补过去的缺失值。

一条元数据基线,成本极低

抓捷径特征有个便宜到不该不做的办法:只用元数据训练一个小分类器——采样率、设备号、批次号、工况,不带任何信号数据。如果这个小模型就能把标签分对一大半(AUC 超过 0.9),主模型的漂亮分数基本可以判定为作弊所得,回头重查数据组织方式。配套动作是把文件名、目录结构盲化,别让 fault_01.csv 这种命名直接剧透。

分组交叉验证的正确姿势

窗口级随机划分换成 GroupKFold,让同一设备或批次的所有窗口始终在同一折:

from sklearn.model_selection import GroupKFold
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

cv = GroupKFold(n_splits=5)
for train_idx, test_idx in cv.split(X, y, groups):
    model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=2000))
    model.fit(X[train_idx], y[train_idx])
    scores.append(model.score(X[test_idx], y[test_idx]))

两个实战细节:groups 的定义要跟着验证目标走——验跨设备泛化就用设备编号,验跨批次泛化就用批次号,选错对象验证了个寂寞;GroupKFold 要求分组数不少于折数且不做分层,类别不平衡场景改用 StratifiedGroupKFold,时间漂移明显的数据再加一档时间外推测试(早期数据训练、晚期数据测试)。

报什么指标,决定模型能不能上现场

准确率在现场几乎无用。该报的是:故障召回率(漏掉真故障的代价)、每小时误报次数(运维会不会被告警淹没)、检测延迟、最差工况下的表现(只报平均值等于藏雷)、置信度校准(模型说 90% 置信时是不是真有九成把握)、以及边缘设备上的时延和资源占用。低速轻载时漏关键故障、每小时十几次误报的模型,准确率再高也进不了现场。

AI 放在哪一层,比模型多准更重要

涉及过流、超温、绝缘这类安全场景,AI 不该替代确定性保护。分层架构是底线:硬件保护是安全底线,PLC 规则做确定性联锁停机,AI 做趋势预警和辅助诊断,人做最终处置确认。AI 输出先当建议值,跨设备、跨工况、长周期验证过了再逐级放权——而且无论它多准,传统保护必须能独立工作。

一句话收束:这个领域最危险的不是分数低,是分数很高却回答了错误的问题。数据按设备、批次、时间隔离干净,指标贴近现场,AI 待在明确的边界里——这三件事比堆网络层数值钱得多。

0

评论0

请先
显示验证码
没有账号?注册  忘记密码?