3. 农业传感器数据预处理基础
传感器采集到的原始数据几乎不可能直接用于建模或决策。以温室环境监测为例,一个空气温湿度节点每5分钟上报一次数据,一天就有288条记录;若同时接入土壤墒情、光照、CO₂浓度等十余类传感器,原始数据中会混杂通信丢包造成的空缺、网关重启导致的重复记录、不同设备时钟漂移引起的时间错位,以及传感器故障或电磁干扰产生的离群跳变。数据预处理的任务,就是在异常值识别之前把这些"脏"因素逐层清理,使后续的异常判定建立在可信、对齐、量纲一致的数据基础上。
数据清洗流程的整体骨架
工程上通常把预处理组织为一条有先后依赖的处理链:格式与字段规范化 → 重复记录去除 → 缺失值处理 → 时间序列对齐 → 重采样 → 数据标准化 → 异常值识别。顺序并非随意排列:缺失值必须在重采样之前处理,否则插值会作用在错误的采样网格上;标准化必须在异常值识别之前完成,否则量纲差异会掩盖真实离群点;而对齐则要先于重采样,保证同一时间戳上的多源数据真正对应同一物理时刻。下图给出了这条处理链的输入输出关系,以及异常值识别在其中的位置。
缺失值处理:先判断缺口性质,再选择填补方式
缺失值处理的关键不是"填上就行",而是先区分缺口成因。通信丢包通常表现为零散的单点缺失,可用线性插值或前向填充;设备断电、网关离线则形成连续长缺口,此时插值会凭空制造出并不存在的趋势,应当保留为缺失标记,交由后续模型或人工判断。以5分钟采样为例,若某温度序列在10:00—10:25连续缺失6个点,属于短缺口,可用前后有效值线性插值;若从10:00一直缺到12:00(25个点),则更可能是节点掉线,应标记为无效区间而非插值。
常用方法有三类:前向填充(用上一个有效值延续,适合变化缓慢的土壤温度)、线性插值(按时间距离加权,适合短缺口)、均值或中位数填充(适合随机性缺失,但会压缩方差)。实际工程中建议为每个填补值附加一个"是否插值"标志列,使下游分析能够区分真实观测与人工补全。
时间序列对齐与重采样
多源传感器往往各自独立计时,晶振漂移会让同一物理时刻的记录出现秒级甚至分钟级偏差。对齐的核心是建立一个统一时间基准:先通过网关NTP校时或记录设备上报的时钟偏移量进行校正,再把各序列的时间戳归并到同一时间网格上。若两序列采样时刻不完全重合,可采用最近邻匹配(取时间差最小的记录)或按时间加权合并。
重采样解决采样频率不一致的问题。降采样(如1分钟→5分钟)常用均值、最大值或末值聚合,其中温度宜用均值、降雨量宜用累加、开关量宜用末值;升采样(如10分钟→5分钟)则依赖插值。需要强调的是,重采样会改变数据的统计特性,聚合窗口越长,极端峰值被平滑得越明显,因此异常识别所用的窗口应与业务关注的时间尺度一致。
数据标准化与异常值识别的位置
标准化把不同量纲的传感器拉到可比尺度。Z-score标准化按 (x−μ)/σ 计算,适合近似正态的温度、湿度序列;极差标准化按 (x−min)/(max−min) 映射到[0,1],适合光照、CO₂等有明确物理区间的量。需要注意,μ和σ应使用训练期或历史基线数据估计,而不是包含待检异常点的当前窗口,否则异常值会抬高均值、拉大标准差,反而把自己"藏"起来。
异常值识别放在标准化之后,是因为3σ、IQR、马氏距离等判据都隐含"各维尺度可比"的前提。同时,在统计判据之前应先做物理量程校验——温度超出−40~80℃、湿度超出0~100%、土壤含水率出现负值,这类值无需统计即可判定为故障。统计判据负责捕捉"量程内但不合理"的跳变,物理校验负责拦截"量程外"的硬故障,两者互补。
一个可参照的处理参数示例
下表给出一组面向温室监测的合理假设参数,用于说明各环节如何落地,并非实测结果,实际项目应结合传感器手册与现场基线调整。
| 环节 | 示例参数 | 判断依据 |
|---|---|---|
| 去重 | 同一设备同一时间戳保留首条 | 网关重传导致重复上报 |
| 短缺口插值 | 连续缺失≤6点(30分钟)线性插值 | 通信丢包为主 |
| 长缺口标记 | 连续缺失>6点标记无效 | 疑似掉线,不制造趋势 |
| 重采样 | 统一为5分钟网格,温度取均值 | 与告警响应尺度一致 |
| 标准化 | Z-score,基线取近30天 | 基线不含待检窗口 |
| 物理校验 | 温度−40~80℃,湿度0~100% | 传感器量程与物理常识 |
| 统计判据 | |Z|>3 或 IQR 1.5倍 | 量程内跳变检测 |