4. 探索性数据分析与异常模式发现
在完成数据清洗与预处理之后,建模工作并不会直接跳到算法训练。真正决定模型上限的一步,是探索性数据分析(EDA)。水质异常预警面对的是溶解氧、pH、水温、氨氮、电导率等多参数时间序列,这些数据往往同时叠加了昼夜节律、投饵周期、天气扰动、设备漂移和偶发事故。EDA 的任务,就是把这些混在一起的结构拆开,先回答三个问题:数据长什么样、参数之间怎么联动、异常在时间轴上呈现什么模式。本节围绕可视化、相关性、周期性、异常事件标注与统计分析四条主线展开,并给出可直接套用的分析流程。
一、先看整体形态:时间序列可视化与分布可视化
第一步永远是画图,而不是算统计量。对每个关键参数绘制完整时间序列折线图,横轴为时间、纵轴为实测值,并在同一张图上叠加预警阈值线(例如溶解氧下限 3 mg/L、氨氮上限 0.5 mg/L)。这样能一眼看出:数据是否存在长时间断档、是否有阶跃式跳变(常见于传感器更换或校准)、异常是孤立尖峰还是持续偏移。示例数据中,某池塘溶解氧在连续三天凌晨 4:00–6:00 跌至 2.6–2.9 mg/L,白天回升至 7 mg/L 以上,这种“日周期 + 凌晨低谷”的形态,仅靠均值统计完全看不出来。
分布层面,用直方图或核密度图观察每个参数的偏态与多峰。若溶解氧分布出现明显双峰,往往意味着数据混合了两种运行状态(如增氧机开/关),此时应考虑按状态分层建模,而不是用一个全局阈值。箱线图则适合按小时、按月份分组,快速比较不同时段的分布差异与离群点密度。
二、相关性分析:找出联动参数与冗余参数
相关性分析有两个目的:一是发现物理上合理的联动关系,二是识别高度冗余的参数以简化模型。对连续参数计算 Pearson 相关系数,对存在明显非线性或异常值较多的参数改用 Spearman 秩相关。以示例数据为例,水温与溶解氧呈负相关(r ≈ −0.62),符合升温导致溶解氧饱和度下降的物理规律;pH 与溶解氧在白天光合作用强时同步上升,呈正相关(r ≈ 0.48);而氨氮与溶解氧在夜间低氧时段同步恶化,呈负相关(r ≈ −0.55)。
需要提醒的是,相关性高不等于因果,也不等于可以直接用于预警。两个参数若都受“昼夜”这一共同因素驱动,其相关性可能是伪相关。因此建议在计算相关系数前,先对数据进行按小时去均值处理,观察“去周期后”的偏相关是否依然成立。此外,相关系数矩阵应配合散点图矩阵一起看,避免被个别极端点拉高或拉低系数。
三、周期性分析:把昼夜节律从异常中剥离
水质参数普遍存在强日周期。溶解氧在午后达到峰值、凌晨跌至谷底;水温滞后于气温约 2–3 小时;pH 随光合作用白天升高、夜间下降。若不做周期分解,凌晨的低溶解氧会被误判为“异常”,而实际上它是可预期的正常节律。常用做法有两种:一是按小时分组计算均值与分位数,画出 24 小时周期曲线,观察峰谷位置与幅度;二是用 STL 分解(趋势 + 季节 + 残差),把日周期项剥离后,对残差序列做异常检测。
以示例数据为例,按小时聚合后溶解氧最低点稳定出现在 5:00 前后,峰值在 14:00 前后,日内振幅约 4.2 mg/L。这意味着预警阈值不应是固定值,而应设为“小时基线 − 偏移量”的动态阈值。例如 5:00 的基线为 3.8 mg/L,取 1.5 倍标准差作为偏移,则动态下限约为 2.9 mg/L;而 14:00 的基线为 8.0 mg/L,动态下限约为 6.5 mg/L。这样既保留了凌晨低氧的敏感性,又避免了白天正常波动触发误报。除日周期外,还应检查周周期(投饵、换水安排)和月周期(天气过程),可用自相关函数(ACF)图辅助判断:若 ACF 在滞后 24 小时、48 小时处出现显著峰值,说明日周期成立。
四、异常事件标注与统计分析
异常标注是连接 EDA 与监督建模的桥梁。标注时应区分三类事件:突发型(如溶解氧 30 分钟内骤降 2 mg/L 以上)、持续偏移型(如 pH 连续 6 小时偏离基线 0.5 以上)、设备型(如电导率出现恒定值或阶跃,多为探头故障)。每类事件记录起止时间、涉及参数、峰值偏离度、可能诱因(投饵、暴雨、停电、增氧机故障),形成事件表。
统计分析的重点不是算出一个漂亮的总数,而是看事件的分布规律。建议统计:各参数事件频次、事件在 24 小时内的分布(是否集中于夜间)、事件持续时间分布、事件间的共现关系(溶解氧骤降是否总伴随氨氮上升)。示例统计显示,溶解氧类事件 68% 发生在 0:00–6:00,且其中 72% 伴随氨氮同步上升,这提示两类参数应联合建模,而非各自独立设阈值。事件表还可直接转化为监督学习的标签:以事件起始时刻前 2 小时为预警窗口,窗口内样本标为正例,其余标为负例,从而把 EDA 成果直接接入下一阶段的特征工程与模型训练。