3. 水质异常预警建模的数据基础
水质异常预警模型的可靠性,首先取决于进入模型的数据是否“干净、对齐、可解释”。传感器采集到的原始数据往往存在重复记录、量程溢出、短时掉线、时钟漂移、采样频率不一致等问题。如果直接把这些数据送入模型,模型学到的可能是设备故障模式,而不是水质异常模式。本节围绕一条从原始监测数据到建模特征表的处理链展开,重点说明每一步“做什么、怎么做、如何判断结果是否可用”。
一、数据清洗:先解决“记录本身是否可信”
数据清洗处理的是记录层面的问题,包括重复行、非法值、量程越界和单位不一致。以池塘养殖常用的溶氧、pH、水温、氨氮四类指标为例,可先定义一份合理的物理量程:溶氧 0~20 mg/L、pH 0~14、水温 -5~45 ℃、氨氮 0~50 mg/L。超出量程的值通常来自探头故障或通信误码,应标记为无效而非直接删除,以便后续统计缺失率。
重复记录常见于网关重传。判断依据是“同一设备编号 + 同一时间戳”出现多条记录,处理时保留采集时间最早或质量标志最优的一条。单位不一致则需要统一,例如部分设备以 μg/L 上报氨氮,建模前应统一换算为 mg/L。清洗阶段建议保留原始值、清洗后值和处理标记三列,形成可追溯的数据血缘,避免后续无法解释某条样本为何被剔除。
二、缺失值处理:区分“随机缺失”与“连续掉线”
缺失值处理不能一律插值。短时随机缺失(如单点丢包,连续缺失不超过 2~3 个采样点)可用线性插值或前向填充;而连续掉线(如探头结垢、断电导致数小时无数据)若强行插值,会制造出虚假的平稳段,掩盖真实异常。实践中可设定规则:连续缺失点数小于等于 3 时插值,超过阈值则整段标记为缺失,并在特征中增加“缺失时长”字段。
以 5 分钟采样为例,某溶氧序列在 10:00—10:20 连续缺失 5 个点,属于短时缺失,可用前后有效值线性插值;若 14:00—17:00 连续缺失 36 个点,则应保留缺失标记,并让模型知道该时段数据不可用。对于氨氮这类实验室或间歇采样指标,插值应更保守,通常只做前向填充并限制填充跨度。
三、异常值识别:把“设备异常”和“水质异常”分开
异常值识别是水质预警建模中最容易混淆的环节。溶氧骤降可能是真实的缺氧事件,也可能是探头被污泥覆盖;pH 突然跳到 14 往往是电极故障。常用方法包括基于统计的 3σ 或四分位距(IQR)规则、基于变化率的阈值判断,以及结合物理约束的组合规则。
例如对溶氧序列,可先计算一阶差分,若 5 分钟内变化超过 3 mg/L,且前后值均处于正常区间,则更可能是信号跳变而非真实缺氧;若溶氧持续下降并伴随水温升高、凌晨时段,则更可能是真实低氧风险。因此异常值识别应输出“疑似设备异常”和“疑似水质异常”两类标签,前者进入清洗流程,后者保留并作为预警样本的重要来源。这一步直接决定了后续正负样本的质量。
四、时间序列对齐与重采样:让不同频率的数据“站到同一时间轴上”
养殖现场往往同时存在 1 分钟、5 分钟、15 分钟甚至小时级的数据源,且各设备时钟可能存在漂移。对齐的第一步是统一时区与时间戳格式,第二步是按统一时间粒度重采样。若建模粒度为 15 分钟,可将 5 分钟溶氧数据聚合为 15 分钟窗口内的均值、最大值、最小值和有效样本数;最大值和最小值能保留短时极端波动,均值则反映整体水平。
重采样时要注意窗口边界与标签定义。例如以 15 分钟窗口的“结束时刻”作为该窗口标签,则 10:00—10:15 窗口记为 10:15。所有特征必须只使用该窗口及之前的数据,避免把未来信息带入当前样本。对于氨氮这类低频指标,可采用前向填充对齐到 15 分钟网格,同时保留“距上次实测时长”作为特征,让模型知道该值的时效性。
五、特征工程初步:把“原始读数”变成“可学习的信号”
完成清洗、缺失处理、异常标注和对齐后,即可构造初步特征。常用特征包括:滑动均值(如 1 小时、3 小时窗口)、滑动标准差、一阶差分与变化率、昼夜时段标记、滞后特征(如上一时刻溶氧)、缺失率与设备状态标记。以溶氧为例,凌晨 2:00—6:00 是低氧高发时段,加入“小时”或“是否夜间”特征有助于模型区分昼夜基线差异。
特征构造要防止数据泄漏:滑动统计只能使用当前及历史窗口;标准化参数应仅在训练集上拟合;标签窗口与特征窗口不能重叠。完成后的特征表应做到“一行一个时间窗口、一列一个特征、附带标签与缺失标记”,并保留设备编号与时间戳,便于回溯和分设备评估。
总体而言,本节的处理链不是一次性动作,而是需要与建模目标反复校准的工程过程。清洗规则、缺失阈值、异常判定条件和重采样粒度都应根据实际设备条件与预警提前量要求进行调整,并在特征表中留下清晰的处理痕迹,使模型结果既可解释、也可复现。