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 完全可接受;但对于超速、断带这类毫秒级事件,同样的延迟就意味着模型失效。因此延迟指标必须与故障的物理演化时间尺度对照才有意义。
三、按现场故障代价设计指标权重
指标权重不是主观拍定的,而应由故障后果的代价结构推导。工程上常用"代价矩阵"方法:为 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 : 1 | 0.70 | 0.10 | ≤ 200 ms | 漏报率优先,允许高误报 |
| 关键设备预警(轴承、齿轮箱) | 10 : 1 | 0.45 | 0.25 | ≤ 5 s | 召回与误报平衡 |
| 辅助设备状态监测 | 1 : 5 | 0.20 | 0.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% 意味着每天可能产生数十条无效工单,运维侧仍会拒绝。这说明同一组指标在不同代价结构下会得出相反的验收结论,权重必须与场景绑定。
四、指标采集与验证流程要点
指标要可信,验证集必须能代表现场。建议按"时间切分 + 工况分层"构造验证集:用故障发生前一段时间的数据作为正样本,用同设备同工况的正常运行段作为负样本,并确保训练集与验证集在时间上不重叠,防止数据泄漏导致指标虚高。对多类故障,应分别计算每类的召回率与误报率,再按各类故障的代价加权汇总,而不是只报一个总体准确率。诊断延迟则需在推理链路上打时间戳实测,不能仅按窗口长度估算。
最终交付的验证报告至少应包含:混淆矩阵原始计数、六个指标值、按代价加权的综合评分、延迟的中位数与 P95,以及所选工作点对应的阈值。这样一份报告才能支撑"该模型是否可以在本场景上线"这一决策,而不是停留在"准确率 95%"这类无法判断风险的结论上。