本节摘要:同样的脏序列,统计路线和深度路线的默认动作不同。缺失、异常、缩放、差分四件套里,统计侧常先差分再建模;深度侧常保留水平、把缩放当必选项。混抄两套默认会制造假自相关,或把泄漏做进验证集。
阅读完本节,你应当能够:
SOURCE 的数据准备清单是:收集、清洗(缺失填充/插值/删除、异常检测/平滑)、再做变换和缩放。冷库温度掉成空,可能是通讯中断;也可能是传感器冻住报了一串恒值。恒值不是缺失,但比缺失更坏,因为它看起来“很完整”。预处理的第一条对照:统计模型吃不到掩码,通常必须填成一个数;深度模型可以加缺失指示通道,让网络知道“这里是补的”。
填充方法本身会改相关结构。前向填充把最后一个真值复制下去,制造一段假的强自相关。线性插值在缺口两端之间拉直线,制造假的平滑。均值填充把缺口拉向全局水平,季节会被抹平。我的默认:缺口短于一个季节周期的 5%,深度侧用指示通道加线性插值;更长的缺口标成不可预报,不要硬补。统计侧短缺口可用季节性插值(用上周同一时刻),长缺口同样放弃。
异常平滑要克制。移动平均会把尖峰摊到邻域,对 MSE 友好,对真实冲击不友好。台风日港口吞吐量掉到接近零,那是信号。SOURCE 把异常检测和平滑并列,工程上要先分类再动手:故障剔除,事件保留。
原始 → 识别缺口类型 → 短缺口填+指示 / 长缺口放弃 → 识别异常类型 → 故障剔除 / 事件保留 → 再谈差分和缩放
SOURCE 把归一化/标准化写成:缩到 0-1,或均值 0 方差 1,以加速收敛、提高稳定。对深度这几乎是硬性的。LSTM 的门是 sigmoid/tanh,输入量级差两个数量级,门会饱和。统计 ARIMA 对水平更不敏感,差分后更是。对照坑在于:缩放参数必须只在训练集上估。用全序列的最大最小值做 MinMax,测试段的极值已经泄漏进训练。时间序列上这个错误特别隐蔽,因为你没有“随机打乱”,但你用了未来的最大值。
差分在统计侧几乎是入场券:去掉趋势和季节,让模型在平稳残差上工作。深度侧 SOURCE 也列了差分,但不是人人做。差分的代价是:预测要积分回去,误差会在积分里累积;水平信息丢掉,多步轨迹容易漂。不差分的代价是:网络把绝对水平当特征,分布一漂移就整体偏。我的做法是同一结构两份数据对照,选测试误差,不选信仰。
| 步骤 | 统计默认 | 深度默认 | 混用时会怎样 |
|---|---|---|---|
| 缺失 | 必须填成数值 | 可填可掩码 | 把掩码通道喂给 ARIMA 无意义 |
| 异常 | 稳健估计或删 | MSE 下必须处理 | 未处理的尖峰打爆梯度 |
| 缩放 | 可选 | 几乎必选 | 忘了反缩放,指标单位错 |
| 差分 | 常做 | 对照项 | 积分漏做,曲线差一个量级 |
| 窗口 | 较少强调 | 监督化核心 | 窗口跨过划分点即泄漏 |
滑动窗口是深度把序列变成监督问题的标准动作:用过去 L 步预测未来 H 步。SOURCE 在划分一节会强调时间顺序;这里先钉窗口规则。窗口的右端不能越过划分点伸进验证段。看起来只是“多拿了几个点”,实际上验证误差会掺进已经见过的未来。实现上先切大段(训练/验证/测试),再在各段内部滑窗,而不是先滑窗再随机抽样本。
错误:先对全序列滑窗,再随机分训练测试 正确:先按时间切大段,再在段内滑窗 窗口右端 <= 该段最后可用时刻
不规则采样在公交到站、靠泊记录里常见。统计路线几乎总是先重采样到规则网格,再建模。重采样会改变频谱:把不规则点摊到 15 分钟格上,等于低通。深度路线可以保持事件序列,用时间间隔作为额外通道,或用注意力处理变长。对照问题:若你最终要的是“每个整点的负荷”,事件模型还得投影回网格,不如一开始就网格化。若你要的是“下一艘船何时靠”,网格化会把事件抹掉。
平滑(移动平均、指数平滑)作为预处理,等于把一部分预测工作做在模型外面。对深度,轻度去噪有时能降方差;过度平滑会删掉模型本该学的高频。与其默认平滑,不如把平滑强度当成对照开关,看验证残差的高频是否被削掉太多。
⚠️ 常见坑:用测试段参与拟合的 MinMax 或标准化,再宣称泛化很好。时间序列泄漏不一定来自打乱,来自全局统计量同样致命。
💡 关键直觉:预处理是模型的一部分。统计的差分、深度的缩放、窗口边界,三件事写进同一份数据契约,权重文件单独没有意义。
港口吞吐量若按日,周末结构清晰,缺失常出现在节假日系统停报。用工作日均值去填节日,等于告诉模型“节日和普通工作日一样”,深度会把这个谎言学得很认真。节日应保留缺失指示,或填历史节日的同期值,而不是填邻近日。
预处理一旦被当成“训练前的一次性脚本”,上线就会用另一套脚本,数字对不上。契约至少五条。第一,缺口策略:短于阈值填并加指示,长于阈值不进窗口。第二,异常名单:故障剔除规则与事件保留规则,附时间戳。第三,缩放:MinMax 或标准化的均值方差只来自训练段,文件与权重同版本。第四,差分:做或不做、几阶、预测后如何积分,写死。第五,窗口:先切大段再滑,右端不越界。
变电站若夜间负荷接近零,MinMax 的下限会被低谷锁死,高峰被压到很窄的一段,网络对高峰不敏感。这时稳健缩放或按对数再缩放,需要对照,不是道德问题。港口若节假日系统停报,用邻近日填,等于教模型节日等于普通日,第 6 章再好的节日通道也救不回来,因为标签已经被填假。
因果填充与图像填充的差别再强调一次。序列右端是未来。任何“两端补齐到核长度”的默认,都可能把未来垫进卷积。预处理审查要看库函数的 padding 默认值,不要只看自己写的插值。
重采样到规则网格会低通。公交事件若最终仍按整点调度报,网格化合理;若最终报下一班何时到,网格化是错契约。契约第一句应是决策时刻的输出网格,而不是“数据看起来方不方”。
把五条契约贴在实验日志页眉。换模型族时先问契约变不变。不变,才是公平对照;变了,先当数据版本升级,再比误差。
很多泄漏不住在自己写的插值里,住在库的 padding、标准化 fit 范围、滑窗函数是否先切段。审查清单:卷积填充是否因果;标准化是否只 fit 训练段;滑窗是否在全序列上一次性切完再抽样本;节日缺口是否被工作日均值填假。四条任一条破,深度再准也是假。契约五条与权重同版本号。换族时先问契约变不变。变了算数据升级,再比误差。港口节日停报用邻近日填,等于把节日教成普通日,后面节日通道救不回来。夜间近零负荷用全局 MinMax,高峰被压窄,网络对高峰不敏感,要稳健缩放对照。
前向填充制造假强自相关,线性插值制造假平滑,均值填充抹季节。深度会把假结构学得很认真,比统计更危险,因为容量更大。所以缺口先分类:短缺口填加指示,长缺口不进窗口。缩放只 fit 训练段,全局最大最小是泄漏,时间序列上特别隐蔽,因为你没有打乱。先滑窗再随机抽,是把未来点送进训练的快捷方式;先切大段再段内滑,才合法。
因果填充与图像两端补零不是同一件事。审查卷积库默认 padding。差分对深度是对照项:做了要积分,误差会在积分里累积;不做则水平漂移时整体偏。两份数据同一网络比测试误差,不比信仰。不规则序列的输出网格由决策时刻决定,要整点报就网格化,要下一班何时到就保持事件。契约与权重同版本,换族先问契约变没变。
网络若不知道哪些点是补的,会把插值当成观测。短缺口线性插值加指示,等于告诉模型这里可信度低。长缺口硬补会在深度里变成一段假得非常认真的季节。统计模型没有掩码接口,必须填数,因此统计侧短缺口更依赖季节性插值,长缺口同样应放弃。两套默认不能混:把掩码通道喂给 ARIMA 无意义,把必须填满的序列假装深度已经知道缺口也无意义。审查时先看缺口分类日志,再看填充函数名。通讯中断造成的恒值看起来完整,比空值更坏,应当成缺口或故障,不要当正常低温。
缩放统计量只在训练段估计这一句,要和划分法律文本印在同一页。验证段若偷偷用了全局最大最小,后面所有族对照都在泄漏上比赛,深度会假赢,因为容量更大更容易记住越界的极值。
下一节问一个更刺的问题:既然深度能自动抽特征,滞后、日历、滚动统计还要不要手搓。