公司动态
预测性维护的KPI指标体系:别只看准确率
预测性维护的KPI指标体系别只看准确率去年Q2我在浙江一家做汽车零部件的工厂做项目验收厂长拿着我们做的故障预测系统指着我鼻子问你这个东西准确率97%但我车间老师傅谁都不信你说怎么办我当场愣住。后来复盘才发现问题根本不在模型——我们用 XGBoost 1.7 在 NVIDIA T4 上训练测试集准确率确实到了 97.3%。但问题是剩下那 2.7% 的错误里有一半是把正常预测成了故障也就是误报。老师傅们被这些莫名其妙的报警搞得疲了干脆把整个系统的报警声音给静音了。说白了就是准确率高 ≠ 系统有用。这事儿如果你想不清楚做再多模型都是白搭。为什么准确率是个危险指标很多人觉得准确率越高越好但在预测性维护里高准确率往往意味着你根本没抓到真正的故障——因为故障样本本来就少。举个例子某工厂一个月生产 30 天设备故障可能只发生 2 次。你拿一个啥都不报的模型准确率能轻松上 96.7%。这种垃圾模型在教科书里要被挂黑板的但在现场因为不报警老师傅还觉得挺安静挺好……反过来想这种沉默型失败是最可怕的。那么问题来了评估指标到底该怎么选召回率、误报率、漏报率这三个必须先分清实际项目里我一般会用下面这三个基础指标搭一套监控面板召回率Recall / TPR真实故障里你抓到了多少。这个直接决定系统有没有存在的价值。误报率FPR / False Positive Rate正常状态里你错误报警了多少。这个决定老师傅信不信你。漏报率False Negative Rate真实故障里你漏掉了多少。这个决定会不会出安全事故。有段时间我们做了个对比实验用同一批数据、同一个特征集只调分类阈值。结果发现阈值从 0.5 降到 0.3 的时候召回率从 78% 跳到 94%但误报率从 4% 飙到 19%。老师傅立马就不干了。说白了就是这三个指标是跷跷板不可能同时最优。你怎么平衡得看你业务到底怕什么——停产更痛还是误报更烦。提前预警天数真正能变现的指标讲一个我特别看重的指标叫预警提前量Lead Time——从系统报警到设备真的坏了中间隔了多久。去年山东一家做化工的厂他们的反应釜搅拌轴出现问题征兆到彻底断裂历史上统计下来大概是 7-14 天。我们做的振动模型第一次报警距离实际断裂是 11 天第二次 18 天。厂长直接拍板这玩意儿值给我加到 10 台关键设备上。提前预警天数这个指标很难造假因为它绑死了设备真实寿命曲线。我们内部一般要求关键设备 Lead Time 至少 7 天以上非关键设备 3 天也能接受。代码层面怎么算我贴一段我们项目里真正在用的import pandas as pd def calc_lead_time(alarm_df: pd.DataFrame, failure_df: pd.DataFrame) - pd.DataFrame: 报警数据 故障记录 → 计算每次报警距离真实故障的天数 alarm_df 列: [equipment_id, alarm_time] failure_df 列: [equipment_id, failure_time] # 同设备报警和故障做最近邻匹配 merged pd.merge_asof( alarm_df.sort_values(alarm_time), failure_df.sort_values(failure_time), onalarm_time, byequipment_id, directionforward # 报警时间在故障时间之前 ) merged[lead_days] (merged[failure_time] - merged[alarm_time]).dt.days return merged.dropna(subset[lead_days]) # 踩坑提醒direction 必须严格backward 会让你算出负数把事后报警也算成有效预警。注意这里有个细节direction 用 forward 而非 backward意思是找比 alarm_time 更晚的 failure_time。这个反过来的话会把事后报警也算成有效预警那就成了笑话。MTTF、MTBF、可用率设备维度的健康度老板最关心的其实是三个时间维度的指标MTBFMean Time Between Failures平均故障间隔时间。这是设备可靠性的硬指标。MTTRMean Time To Repair平均修复时间。这个往往不怪 AI怪维修工的响应速度。可用率AvailabilityMTBF / (MTBF MTTR) × 100%我们公司给客户做月报的时候会把可用率画成趋势线。今年Q2某客户的冲压车间可用率从 91.2% 提升到 96.8%这个数字比模型准确率写进 PPT 里更有说服力。有个细节值得提MTTR 这个指标经常会被工程师忽略但如果你能把故障定位精度提高比如直接告诉老师傅是轴承外圈问题MTTR 能从 6 小时压到 2 小时。这块我们之前用过一个简单的方法把报警细分为轴、轴承、齿轮、密封四大类每一类对应不同的维修SOP。老师傅们立刻开始相信系统了。报警覆盖率 vs 报警关闭率业务闭环的关键我做项目最怕的两个指标是报警覆盖率Alarm Coverage应该报警的设备里有多少进入了模型监控范围。报警关闭率Alarm Closure Rate产生的报警里有多少被运维人员处理并关闭了。覆盖率决定系统有没有盲区。我们有个教训去年某风电场的齿轮箱断齿AI 系统没报上来。事后一查原因是这个齿轮箱的温度传感器在三个月前就坏了没人发现。这就是覆盖率的锅——传感器失效率得纳入监控。关闭率更现实。我见过某石化厂报警关闭率只有 38%意思是超过一半的报警没人处理。这种情况下你模型再好也没用因为报警没闭环。怎么改进我们当时的设计是报警必须强制 4 小时内要么确认、要么忽略并要求填写原因。一个月后关闭率从 38% 干到 85%。别小看流程的力量。反对意见指标越多越乱怎么办你是不是想问我上面说了这么多个指标团队怎么落地我的观点是KPI 不是越多越好而是越聚焦越好。我们给客户的标准三件套就三个召回率 ≥ 90%—— 系统要能逮住故障误报率 ≤ 10%—— 老师傅要能信你预警提前量 ≥ 7 天—— 业务要能排上维修计划其他指标都作为次级面板供深度分析用。你可能会问这个 90% 和 10% 怎么定的我的回答是没有银弹是和业务方反复磨出来的。我第一次去那个浙江工厂定的指标是召回率 ≥ 95%老师傅直接怼我你召回高了我们天天加班处理误报KPI 还考核我们咋办 退回 90% 之后皆大欢喜。一个不那么主流的观点很多人推崇自动化率无人值守报警占比觉得这越高越好。但反过来想真正的预测性维护系统一定是有人参与的系统。完全无人的报警要么你误报率高要么你根本不知道现场什么情况。我们后来把报警自动派单率控制在 60%-70%剩下 30% 需要运维人工确认——代价是多几个人但换来的是模型的持续反馈和优化。写在最后别只盯准确率那玩意儿看着漂亮用起来稀烂。3年下来我的体会是好的预测性维护系统是工程师、老师傅、模型三方共建的成果。KPI 不是给 AI 打的是给整套系统打的。如果你刚开始做这个项目先去车间蹲一周听听老师傅骂的最多的是什么——答案往往就在那里。一点碎碎念吧做预测性维护别只迷恋技术数字多去车间多和老师傅聊天会比多看两篇论文有用。