3. 诊断模型验证的指标体系

诊断模型训练完成之后,真正决定它能否上线的,不是训练集上的损失曲线,而是它在现场工况下的一组可量化指标。这些指标回答的是同一个问题的不同侧面:模型在多大程度上能"抓准故障",又在多大程度上"不误伤正常"。本节围绕准确率、召回率、F1、误报率、漏报率与诊断延迟六个核心指标展开,并给出按现场故障代价设计指标权重的可操作方法。

一、从混淆矩阵出发的六个指标

所有分类指标都源自同一个 2×2 混淆矩阵。以"是否存在某类故障"为二分类目标,定义:TP(真实有故障且模型报警)、FN(真实有故障但模型未报警)、FP(真实无故障但模型报警)、TN(真实无故障且模型未报警)。六个指标的定义与工程含义如下:

  • 准确率 Accuracy = (TP+TN)/(TP+FP+FN+TN):整体判对的比例。在故障样本极少的现场数据中,准确率会被大量正常样本"稀释",一个全部判正常的模型也可能有 98% 的准确率,因此它不能单独作为验收依据。
  • 召回率 Recall = TP/(TP+FN):也叫查全率、灵敏度,表示真实故障中被抓到的比例。它直接对应"漏报"风险,是安全相关场景的第一指标。
  • 精确率 Precision = TP/(TP+FP):报警中真正是故障的比例,对应"误报"风险,决定运维人员是否还愿意相信这套系统。
  • F1 = 2·Precision·Recall/(Precision+Recall):精确率与召回率的调和平均,用于在两者之间取平衡,适合需要单一综合分排序的场景。
  • 误报率 FPR = FP/(FP+TN):正常样本中被误判为故障的比例,是运维负担的直接度量。
  • 漏报率 FNR = FN/(TP+FN) = 1 − Recall:故障样本中被漏掉的比例,是安全风险的直接度量。

需要注意,误报率与漏报率是一对"此消彼长"的量:把报警阈值调低,召回率上升、漏报率下降,但误报率随之上升;阈值调高则相反。因此指标设计的关键不是"全部拉满",而是找到与现场代价匹配的工作点。

二、诊断延迟:被忽视的时间维度

前五个指标只衡量"判得对不对",不衡量"判得多快"。诊断延迟定义为从故障真实发生(或首次可观测征兆出现)到模型输出报警的时间差,通常用中位数与 P95 两个统计量描述。它由三部分构成:数据采集与传输延迟、特征窗口长度、模型推理与后处理(如连续 N 帧确认)延迟。例如某振动监测模型采用 2 秒滑窗、每 500 ms 推理一次、要求连续 3 次超阈值才报警,则最坏情况下的确认延迟约为 2 s + 3×0.5 s = 3.5 s。对于轴承早期磨损这类缓变故障,3.5 s 完全可接受;但对于超速、断带这类毫秒级事件,同样的延迟就意味着模型失效。因此延迟指标必须与故障的物理演化时间尺度对照才有意义。

诊断模型验证指标体系与代价加权 ① 混淆矩阵(二分类) 实际:有故障 实际:无故障 TP 命中 FP 误报 FN 漏报 TN 正确排除 模型报警 模型静默 ② 六个核心指标 准确率 (TP+TN)/总数 — 易被正常样本稀释 召回率 TP/(TP+FN) — 对应漏报风险 精确率 TP/(TP+FP) — 对应误报风险 F1 2PR/(P+R) — 综合平衡分 误报率 FP/(FP+TN) 漏报率 = 1 − 召回率 ③ 阈值权衡:误报率与漏报率此消彼长 阈值 低(敏感) 高(保守) 误报率 ↑ 漏报率 ↓ 代价最优工作点 ④ 诊断延迟构成 采集传输 特征窗口 推理+连续确认 总延迟 = 三者之和,须与故障演化时间尺度对照

三、按现场故障代价设计指标权重

指标权重不是主观拍定的,而应由故障后果的代价结构推导。工程上常用"代价矩阵"方法:为 FN 和 FP 各赋一个相对代价,再据此构造加权评分。设漏报一次故障的代价为 CFN,误报一次的代价为 CFP,则加权损失可写为:

Loss = C_FN × FN + C_FP × FP
加权评分 Score = 1 − Loss / (C_FN × N_pos + C_FP × N_neg)

其中 N_pos 为故障样本数,N_neg 为正常样本数。

代价比 CFN/CFP 决定了权重倾斜方向。下面给出三类典型场景的示例参数(属教学假设,非实测数据),用于说明权重如何随代价变化:

场景C_FN : C_FP召回率权重误报率权重延迟上限验收侧重
安全联锁(如超速、断带)100 : 10.700.10≤ 200 ms漏报率优先,允许高误报
关键设备预警(轴承、齿轮箱)10 : 10.450.25≤ 5 s召回与误报平衡
辅助设备状态监测1 : 50.200.55≤ 60 s误报率优先,控制运维负担

表中"召回率权重 + 误报率权重 + 延迟权重 = 1",延迟权重可按场景取 0.05~0.25。以关键设备预警为例,若某模型在 200 个故障样本、1800 个正常样本的验证集上得到 TP=170、FN=30、FP=90、TN=1710,则:

召回率 = 170/200 = 0.850
精确率 = 170/(170+90) = 0.654
F1 = 2×0.654×0.850/(0.654+0.850) = 0.741
误报率 = 90/1800 = 0.050
漏报率 = 30/200 = 0.150
加权损失 = 10×30 + 1×90 = 390
加权评分 = 1 − 390/(10×200 + 1×1800) = 1 − 390/3800 = 0.897

可以看到,F1 为 0.741 看似一般,但按 10:1 代价加权后评分达 0.897,说明该模型在"漏报代价高"的场景下是可接受的。反之,若把同一模型放到辅助设备场景(CFN:CFP=1:5),加权损失变为 1×30 + 5×90 = 480,评分降至 1 − 480/(200+9000) = 0.948,但此时误报率 5% 意味着每天可能产生数十条无效工单,运维侧仍会拒绝。这说明同一组指标在不同代价结构下会得出相反的验收结论,权重必须与场景绑定。

设计权重时建议遵循三条经验:一是先确定 CFN/CFP 的量级(安全类通常 ≥ 50,预警类 5~20,监测类 ≤ 1),再分配权重;二是延迟权重只在故障演化时间与延迟同量级时才显著提高,否则会给模型施加无意义的实时性压力;三是权重方案应在验证前冻结并写入验收文档,避免看到结果后反向调权重。

四、指标采集与验证流程要点

指标要可信,验证集必须能代表现场。建议按"时间切分 + 工况分层"构造验证集:用故障发生前一段时间的数据作为正样本,用同设备同工况的正常运行段作为负样本,并确保训练集与验证集在时间上不重叠,防止数据泄漏导致指标虚高。对多类故障,应分别计算每类的召回率与误报率,再按各类故障的代价加权汇总,而不是只报一个总体准确率。诊断延迟则需在推理链路上打时间戳实测,不能仅按窗口长度估算。

最终交付的验证报告至少应包含:混淆矩阵原始计数、六个指标值、按代价加权的综合评分、延迟的中位数与 P95,以及所选工作点对应的阈值。这样一份报告才能支撑"该模型是否可以在本场景上线"这一决策,而不是停留在"准确率 95%"这类无法判断风险的结论上。