振动模型结果.md 6.0 KB

7/8/9 号机振动泛化模型结果(机组相对特征)

本实验重构于 models/vibration/(振动算法与振动模型)+ models/common/(公共层),与压力模型完全独立。 3 小时模型已用新代码完整复现,指标与本文件完全一致(见 models/results/verification/verification_report.json)。 振动算法输出位于 models/results/vibration/振动异常段.csv,训练样本位于 models/datas/vibration/,模型位于 models/datas/artifacts/vibration/。

目标:把 7/8/9 号机振动数据全部纳入,用机组相对(泛化)特征训练一个共享振动模型,解决原振动模型“绝对振动值导致跨机组误报、召回不稳”的问题。

一、方法

1. 泛化特征(去掉绝对振动值)

振动规则的核心信号是“相对本机近期稳健基线(前 7×24 = 168 个有效小时)的偏离”。因此特征以近期基线相对量为主,机组编号只用于选基准、不进模型输入。

删除的绝对特征:各侧 *_avg_mean/max/range、*_peak_mean/max/range、*_slope。

使用的特征(每侧 coupling、chain):

  • 近期基线偏离(z 分数):{side}_avg_dev、{side}_peak_dev
  • 近期基线相对比例:{side}_avg_rel_last、{side}_peak_rel_last、{side}_avg_rel_mean、{side}_peak_rel_max
  • 机组归一化:{side}_avg_z、{side}_peak_z、{side}_avg_slope_z(train 正常窗口 median/MAD)
  • 报警比例:{side}_high_ratio_mean、{side}_high_high_ratio_mean
  • 共享:both_sides_rising、running_coverage_mean/min

特征重要度(3h)显示“相对比例 + 偏离”主导:chain_peak_rel_max 32.9%、chain_peak_dev 19.1%、coupling_peak_rel_max 8.1%、coupling_avg_dev 7.8%。

2. 基线口径(与扫描器一致)

振动基线用机组完整有效历史在窗口前 7×24 小时内的稳健基线,跨停机周期取历史、排除重启后首个有效小时,与 scan_pks_fault_evolution.py 完全一致。

3. 数据与切分

  • 窗口:3 小时与 6 小时各一套;标签:重叠即异常(含 1~2 小时短阶段,用前后小时补足);重启后首个有效小时不作样本。
  • 数据来源:复用 models/datas/hourly/pks_hourly_full.csv(--hourly-csv,不查库);阶段来源 models/results/vibration/振动异常段.csv。
  • 切分:6.5 / 2 / 1.5,seed 20260921,事件组不拆,按(机组、标签)分层,保证每机组 train 有正常事件组。
  • 异常事件分配用 --positive-basis groups(每个事件等权),避免个别长事件整组落入同一划分。

二、数据范围

  • 候选窗口:14,139(正常 13,908、异常 231)。
  • 异常事件 25 个:7 号机 8、8 号机 8、9 号机 9(三台机组都有异常)。
版本 train validation test
3h 9,302(正常 9,112/异常 190,16 事件) 2,657(2,637/20,5 事件) 2,180(2,159/21,4 事件)
6h 8,951(8,731/220,16 事件) 2,625(2,599/26,5 事件) 2,332(2,299/33,4 事件)

跨集合事件组泄漏:0。

三、训练

| 版本 | 采样 | 轮数 | 早停 | 最佳轮次 | 最佳验证 logloss | |---|---|---|---:|---|---:|---:| | 3h | --all-normal | 请求 800 | 359 轮 | 309 | 0.02262 | | 6h | --all-normal | 请求 800 | 382 轮 | 332 | 0.03350 |

四、验证集

版本 阈值 查准率 召回率 F1 PR-AUC
3h 0.916630 70.00% 70.00% 70.00% 70.40%
6h 0.864419 72.41% 80.77% 76.36% 77.21%

五、封存测试集

3 小时窗口

测试集 2,180 窗口(正常 2,159、异常 21)。

类别 查准率 召回率 F1 样本数
正常 99.72% 99.72%(特异度) 99.72% 2,159
异常 71.43% 71.43% 71.43% 21

综合:准确率 99.45%、平衡准确率 85.58%、PR-AUC 82.70%;事件召回 4/4。

分机组:

机组 正常窗口 正常误报率 异常窗口 异常召回 异常查准
7 号机 676 0.00% 9 77.78% 100.00%
8 号机 702 0.71% 12 66.67% 61.54%
9 号机 781 0.13% 0 — —

6 小时窗口

测试集 2,332 窗口(正常 2,299、异常 33)。

类别 查准率 召回率 F1 样本数
正常 99.14% 99.91%(特异度) 99.52% 2,299
异常 86.67% 39.39% 54.17% 33

综合:准确率 99.06%、平衡准确率 69.65%、PR-AUC 86.40%;事件召回 4/4。

分机组:7 号机误报率 0.00%、召回 60.00%;8 号机误报率 0.00%、召回 22.22%;9 号机误报率 0.22%。

六、版本对比

版本 测试查准率 测试召回率 F1 PR-AUC 事件召回
旧振动模型(6h,绝对特征) 24.15% 100.00% 38.91% 75.66% 1/1
振动泛化 3h 71.43% 71.43% 71.43% 82.70% 4/4
振动泛化 6h 86.67% 39.39% 54.17% 86.40% 4/4

结论:泛化特征显著改善了振动模型的查准率(旧模型 24% → 3h 71%)。3h 的 F1 与召回更均衡(71/71),6h 查准率更高但召回只有 39%。振动故障确认以“不漏”优先,推荐 3h。

七、规则联合辅助输出

  • 3h:models/results/vibration/振动模型辅助确认.csv,14,139 行
    • 模型辅助确认异常 219、保留规则异常人工复核 12、继续观察 13、正常 13,895
  • 6h:本轮未重新生成(models/vibration/run_pipeline.py 保留 --window-hours 6 参数化路径)

八、限制

  • 振动异常阶段短(多为 1~2 小时),测试异常窗口仅 21~33 个、4 个事件,指标波动较大。
  • 9 号机测试集没有异常事件,其正常误报率可评估,但异常召回不作结论。
  • 标签来自扫描器规则阶段,未经维修记录或人工确认,指标代表对规则标签的泛化。
  • 模型定位为规则辅助确认,不替代扫描器的阶段划分。