3. 遥测数据预处理实战

卫星遥测序列在进入异常识别与告警模型之前,必须先经过一轮系统化的预处理。原始遥测从星上采集、下行传输、地面接收、解帧到入库,中间会经历丢帧、误码、传感器漂移、采样节拍不一致、量纲差异等多重干扰。如果直接把这些数据送入阈值判断或机器学习模型,误报和漏报都会显著上升。本节以一条典型的卫星电源分系统遥测序列为例,完整走一遍缺失值、野值、噪声、时间对齐、重采样与归一化的处理链路,并说明每一步的判断依据与结果观察方式。

一、先看清数据问题的来源与形态

假设我们拿到的是某卫星在轨 24 小时内的母线电压、蓄电池组电流、太阳阵输出功率、温度四类遥测,原始采样周期并不统一:母线电压 1 s 一帧,蓄电池电流 2 s 一帧,温度 8 s 一帧,太阳阵功率 4 s 一帧。数据中还存在三类典型问题:一是地面站切换或星地链路中断导致的连续缺失;二是单点跳变型野值,例如母线电压在 27.8 V 附近突然出现 31.2 V 的孤立点;三是高频噪声,表现为相邻采样点之间的小幅抖动。这些问题在时间轴上分布不同,处理顺序也不能随意颠倒。

遥测预处理链路:从原始序列到可建模序列 原始遥测(多源、多周期、含缺陷) 母线电压 1s 蓄电池电流 2s 太阳阵功率 4s 温度 8s 缺失 / 野值 / 噪声 ① 缺失值处理 短缺口(≤3点)线性插值;长缺口(>3点)标记为无效段,不插值,避免伪造趋势 输出:带 valid_mask 的序列,后续统计与建模均跳过无效段 ② 野值检测与剔除 滑窗中位数 + MAD:|x−med| > 5×1.4826×MAD 判为野值;单点替换为窗口中位数 连续野值段不替换,转为缺失值,交由①的规则处理 ③ 噪声抑制 Savitzky-Golay 滤波(窗口 11,2 阶多项式),保留趋势与峰值,抑制高频抖动 对温度等缓变量可用滑动平均;对电流等快变量慎用,防止削峰 ④ 时间对齐 + 重采样 统一到 1 s 栅格:前向填充 + 线性插值 对齐后各通道时间戳严格一致 ⑤ 归一化 Z-score:x' = (x − μ) / σ,按通道独立计算 μ、σ 仅用训练段统计,防止信息泄漏

二、缺失值:先判断缺口性质,再决定补不补

缺失值处理的第一步不是插值,而是给每个缺口打标签。工程上通常按连续缺失点数分档:连续缺失不超过 3 个采样点,视为短缺口,可用线性插值补齐;连续缺失超过 3 个点,视为长缺口,应保留为无效段,不插值。原因很直接:卫星遥测中的长缺口往往对应链路中断或设备关机,此时真实物理量可能已经发生阶跃变化,插值会人为制造一条平滑的假趋势,反而干扰后续异常检测。

以母线电压为例,若在 10:15:03 至 10:15:05 连续缺失 3 个点,前后值分别为 27.82 V 和 27.85 V,线性插值得到 27.83 V、27.84 V、27.85 V,这是合理的。但若在 10:20:00 至 10:20:40 连续缺失 40 个点,前后值分别为 27.80 V 和 26.90 V,此时不应插值,而应把这一段标记为 invalid,后续统计均值、方差、告警判断都跳过该段。实现上建议在数据表中增加一列 valid_mask,取值 1 表示有效、0 表示无效,所有下游处理都先检查该列。

三、野值:用中位数与 MAD 构造稳健判据

野值检测最忌讳直接用均值和标准差,因为野值本身会把均值和标准差拉偏。更稳健的做法是滑动窗口中位数与 MAD(Median Absolute Deviation)。对每个采样点,取以它为中心的窗口(例如 21 个点),计算窗口中位数 med 和 MAD,若满足 |x − med| > k × 1.4826 × MAD,则判为野值。k 通常取 4 到 6,本示例取 5。1.4826 是让 MAD 在正态分布下与标准差可比的换算系数。

以母线电压序列为例,窗口内中位数为 27.81 V,MAD 为 0.02 V,则阈值约为 5 × 1.4826 × 0.02 ≈ 0.148 V。若某点值为 31.20 V,偏离中位数 3.39 V,远超阈值,判为野值,替换为窗口中位数 27.81 V。需要特别注意的是,如果连续多个点都是野值,不应逐点替换,而应把这一段整体转为缺失值,再按缺失值规则处理,否则会连续伪造出多个中位数点。

四、噪声:滤波要区分缓变量与快变量

噪声抑制的目标是去掉高频抖动,同时保留真实趋势和真实峰值。对温度这类缓变量,滑动平均即可;对母线电压、蓄电池电流这类既含趋势又可能含真实尖峰的量,推荐 Savitzky-Golay 滤波。它本质是在滑动窗口内做多项式最小二乘拟合,再取拟合值作为输出。示例参数:窗口长度 11,多项式阶数 2。这个组合对 1 s 采样的母线电压既能压掉 0.05 V 级别的随机抖动,又不会明显削掉持续 2 到 3 个点的真实电压跌落。

判断滤波是否过度,可以观察两个指标:一是滤波前后峰值差,若真实跌落峰值被削掉超过 20%,说明窗口过长或阶数过低;二是残差序列,若残差中仍存在明显周期性,说明噪声未被充分抑制。实际调参时建议先在历史正常段上试,再拿到含异常段的数据上验证,确保异常特征没有被滤掉。

五、时间对齐与重采样:统一到同一时间栅格

多源遥测的采样周期不同,直接合并会产生大量空值。标准做法是选定一个基准栅格,例如 1 s,然后把各通道重采样到该栅格上。对于比基准慢的通道(如 8 s 的温度),采用前向填充加线性插值:在两个已知点之间按时间比例插值,超出已知范围的两端用前向填充或后向填充。对于比基准快的通道,则按栅格点取最近值或做降采样平均。

时间对齐还有一个容易被忽略的细节:时间戳必须统一到同一时标和同一精度。星上时间、地面接收时间、UTC 之间可能存在偏移,若不对齐,后续做多通道关联分析时会出现“电压已经跌落、电流还没变化”的假象。建议在预处理阶段统一转换为 UTC,并保留原始时间戳列以便追溯。

六、归一化:按通道独立统计,防止信息泄漏

归一化的目的是让不同量纲的通道在模型中具有可比性。Z-score 是最常用的方式:x' = (x − μ) / σ。关键在于 μ 和 σ 必须只用训练段数据统计,不能用全量数据,否则测试段的信息会泄漏到训练中,导致评估结果虚高。对每个通道独立计算 μ 和 σ,例如母线电压 μ ≈ 27.8 V、σ ≈ 0.15 V,蓄电池电流 μ ≈ 12.5 A、σ ≈ 3.2 A,温度 μ ≈ 22 ℃、σ ≈ 4 ℃。归一化后所有通道都落在均值 0、标准差 1 附近,便于统一设置告警阈值或送入神经网络。

预处理顺序建议:缺失值标记 → 野值检测与替换 → 噪声滤波 → 时间对齐与重采样 → 归一化。顺序颠倒会带来问题,例如先归一化再滤波,野值会被缩放到难以识别的范围;先重采样再处理缺失值,插值会跨越长缺口,伪造趋势。

七、处理结果如何观察与判断

完成上述步骤后,建议从三个角度检查结果。第一,看有效数据比例:若某通道 valid_mask 为 1 的比例低于 80%,说明该通道缺失严重,需要回溯链路或调整该通道的可用性策略。第二,看野值替换数量:若单日替换点数超过总点数的 1%,说明阈值可能过松或该通道本身不稳定,需要复核。第三,看归一化后的分布:正常段应近似均值 0、标准差 1,若某段明显偏离,往往对应真实异常,这正是后续告警模型需要捕捉的信号。

下面给出一份可直接参考的预处理参数记录表,用于在真实项目中留痕和复现。

处理环节 关键参数 示例取值 判断依据
缺失值 短缺口阈值 ≤3 点插值,>3 点标记无效 避免跨越链路中断伪造趋势
野值 窗口 / k 值 21 点,k=5 |x−med| > 5×1.4826×MAD
噪声 SG 窗口 / 阶数 11 点,2 阶 峰值削减 <20%,残差无周期
时间对齐 基准栅格 1 s,UTC 各通道时间戳严格一致
归一化 统计量来源 仅训练段 μ、σ 防止测试段信息泄漏

把这套流程固化下来,遥测序列就从“原始、杂乱、多缺陷”的状态,转变为“时间一致、量纲统一、缺陷可控”的可建模序列。后续的异常识别与告警,才有可靠的数据基础。