4. 生物工艺数据预处理工程
生物工艺数据(pH、溶氧 DO、温度、补料速率、尾气 CO₂/O₂、在线活细胞密度等)在进入建模之前,几乎不可能直接使用。传感器掉线、探头漂移、取样离线值滞后、批次起止时间不一致、量纲差异巨大,都会让模型把“测量伪影”当成“工艺规律”。数据预处理工程的目标不是把数据“修得好看”,而是让每一列数据在时间轴、量纲和统计特性上具备可比较、可建模的一致性,同时保留真实的工艺动态。
缺失值:先判断机制,再决定填补方式
缺失通常分三类:完全随机缺失(MCAR,如网络丢包)、随机缺失(MAR,如某探头在特定 pH 区间易失效)、非随机缺失(MNAR,如高黏度导致取样失败)。处理前应先统计缺失率与连续缺失长度。短缺口(≤3 个采样点)可用线性插值;中等缺口(4~15 点)建议用三次样条或基于相邻批次的同类曲线插值;长缺口(>15 点或跨越关键阶段)不应强行填补,应标记为无效区间并在建模时掩码。对补料速率这类阶跃型信号,插值会引入虚假的斜坡,宜用前向填充(ffill)保持“保持上一值”的物理含义。
# 示例:按信号类型选择填补策略(pandas)
df['pH'] = df['pH'].interpolate(method='linear', limit=3)
df['DO'] = df['DO'].interpolate(method='spline', order=3, limit=15)
df['FeedRate']= df['FeedRate'].ffill(limit=10)
df['VCD_off'] = df['VCD_off'].mask(df['VCD_off'].isna().rolling(20).sum()>15)
异常值检测:物理边界 + 统计规则双轨
异常值检测不能只依赖 3σ,因为工艺信号本身具有强趋势和阶段变化。推荐“物理硬边界 + 统计软规则”双轨:先用工艺知识设定绝对范围(如 pH 6.5~7.6、温度 35~38 ℃、DO 0~100%),越界直接判为无效;再用滑动窗口的稳健 z 分数(基于中位数与 MAD)识别局部突变。对离线取样数据,还要检查与在线趋势的方向一致性,例如离线 VCD 突然下降而在线电容信号持续上升,应优先怀疑取样或稀释误差。
噪声滤波与平滑:区分“测量噪声”和“真实动态”
在线信号常含高频噪声,但过度平滑会抹掉补料引起的 DO 尖峰和 pH 调节振荡。工程上常用三类方法:移动平均(简单、滞后大)、Savitzky-Golay(保峰、适合光谱与趋势)、指数平滑/一阶低通(适合实时控制回路)。选择时看两个指标:截止频率应高于工艺特征频率(如补料脉冲周期),且平滑后残差不应呈现系统性结构。对 DO 这类快速响应信号,窗口不宜超过 5~7 个采样点;对温度这类慢变量,可用 15~30 点窗口。
归一化:按建模需求选择尺度
不同信号量纲差异极大(pH 约 7,DO 约 50%,补料约 0.1 L/h),必须归一化。常用方法:Min-Max 映射到 [0,1](适合有明确物理边界的信号)、Z-score 标准化(适合近似正态、无固定边界的信号)、Robust Scaling(用中位数和 IQR,抗异常值)。注意:归一化参数必须只用训练批次拟合,再应用到验证和测试批次,否则会造成信息泄漏。对批次轨迹建模,建议按“批次内时间点”做纵向标准化,而不是把所有批次混在一起做全局标准化。
批次对齐:让不同批次在同一时间坐标上可比
批次间差异主要来自接种时间、补料启动时刻、诱导时刻不同。对齐策略分两类:时间对齐(按实际发酵时长重采样到统一网格,如每 0.5 h 一点)和事件对齐(以关键事件为锚点,如“补料开始”“诱导时刻”设为 t=0)。对生长阶段差异大的批次,推荐事件对齐 + 分段重采样:延滞期、指数期、生产期分别对齐,避免用全局拉伸扭曲动态。对齐后应检查各批次关键变量的轨迹包络是否合理,若某批次明显偏离,应回到原始数据核查而非直接删除。
数据清洗流程:从原始表到建模就绪集
把上述步骤串成可复现的流程,建议按以下顺序执行,并保留每一步的日志与中间产物:
- 数据审计:统计每个信号的采样频率、缺失率、量程、单位,确认时间戳是否单调、是否存在重复行。
- 时间轴统一:将所有信号重采样到统一网格(如 0.5 h),对高频信号降采样时先做抗混叠滤波。
- 缺失值处理:按信号类型选择插值/ffill/掩码,记录每个缺口的位置与处理方式。
- 异常值检测与标记:物理边界 + MAD 双轨,异常点先标记为 NaN 再回到缺失值流程,而不是直接删除整行。
- 滤波与平滑:按信号动态特性选择窗口与方法,检查平滑前后残差是否随机。
- 归一化:仅用训练批次拟合 scaler,保存参数并应用到全部批次。
- 批次对齐:按事件锚点或统一时间网格对齐,输出三维张量(批次 × 时间 × 变量)。
- 质量复核:绘制各批次关键变量轨迹包络、缺失率热图、异常比例统计,确认无系统性偏差后冻结数据集版本。
一个可执行的检查清单可以这样落地:每个信号记录“缺失率、异常率、平滑方法、归一化方法、对齐锚点”五个字段;每个批次记录“起止时间、关键事件时刻、清洗后有效时长”。当某批次有效时长低于总时长 70%,或关键阶段(如诱导后 24 h)缺失率超过 20%,应标记为低质量批次,在建模时降权或单独分析,而不是悄悄混入训练集。数据预处理不是一次性动作,而是与建模迭代同步进行的工程环节:模型表现异常时,第一件事往往是回到清洗日志,检查某个信号的插值或对齐是否引入了伪动态。