PKS 点位异常检测 —— 方案讨论稿(v0.2)
状态:待讨论,未实施。记录已达成共识 + 备选思路 + 遗留问题。
一、已确认的基础事实
- 分析单元 =
(import_batch_id, YSJ_k),30/31/32 ↔ 7/8/9 号机。
- 41 列物理量不同:温度℃ / 压力MPa / 振动mm/s / 电流A / 频率Hz / 阀位% / 转速RPM,阈值一律逐列自学习,不跨列统一。
- 剔除备用测点:YSJ 33 / 34 / 35(备用RTD、备用AI)。
- 运行状态权威来源 =
开机停机表/8号机.xls、9号机.xls(事件级日志:时间=日期,时间点=当天小数时刻,状态=开机/关机);7号机暂无表。
- 运行状态退路(表缺失或不可信时):YSJ_41 转速(≈995=开机) + wave_file 时间戳。
- 采样:pks_long_sample 主键 (import_batch_id, sample_time),5s 一条;窗口 2025-04-01 ~ 2026-05-01,覆盖完整无空。
- 季节/慢水平变化处理:采用滚动参照(最近 N 个运行日的中位数 + MAD 作正常带),随季节漂移,不追坏段。
二、数据读取(性能)
- 不做逐列全量 20M 行扫描。
- 一次性服务端分钟级聚合全部启用列(AVG/MIN/MAX/COUNT + 运行标记),落
cache/,之后 38 列全部在本地分钟级序列上分析。
三、推荐方案:运行期多列异常初筛(分层)
- 运行时间轴:解析开机停机表 → 每机运行区间;7号用 rpm/wave_file 推断;启停过渡段单独标记。
- 点位字典:按 site_point 建 YSJ_n → 单位/描述/类别;明显标错的 unit 以实测修正;剔除 33-35。
- 每列正常模型:只统计运行段 → 运行日指标(日水平中位数、波动跨度、日内突变强度);滚动参照 + MAD 得季节自适应正常带。
- 两层事件识别:
- 慢速/水平类:日级 z 分(|z|>4 且持续若干运行日)。
- 快速/突发类:分钟级速率/越界,该列自校准 + 滞回定界。
- 可选补充:同点跨机差分(三台同跑时差掉环境,只留单机偏差)。
- 排序与人工确认:每列每年出 top-N;跨机同向变化降权(判环境/负荷),单机单独优先;前端高亮原始曲线;人工标注回写,坏段不进正常模型。
四、备选/待议:时间窗口无监督模型
- 结论:能做但不能靠它抵抗季节。季节鲁棒性取决于“参照”:
- 无参照(学全量分布)→ 扛不住季节;
- 全局最近邻 → 夏季窗口会被去年同期掩护,反而漏检;
- 局部/近期参照 + 先季节去趋势 → 扛得住快变。
- 慢漂移在统计上无法与“合法慢变化”区分,换任何无监督模型也一样,需外部参照或标注兜底。
- 纯无监督的坑:间歇运行需先按运行态硬分割;38 列异质需标准化/分组;分数不可解释、无天然段边界、需滞回定界;超参校准成本高。
- 建议角色:作为组合层(对“去趋势残差 + 每列统计量”做多测点联合异常检测 + 排序),不是季节与运行态问题的替代品。
五、遗留问题(下次讨论)
- 开机后过渡段(爬坡)算正常物理还是异常候选?建议:稳态分析排除,启动特性单独一条。
- 8号机窗口内仅约 96 天开机(长停偶开),确认是真实工况还是采集问题(决定“正常模型”可学多少运行日)。
- 初筛范围:38 列全含,还是先温度+压力两类跑通?
- 输出形态:事件库 + 每列 top-N 清单/图表,还是整表 excel?
- 人工标注回写是否第一版就纳入闭环?
- 是否需要先解析 8/9号 正式运行区间、7号 rpm 推断区间并做一致性核对,再进入建模?