时间序列特征工程要注意什么?
简化版
时间序列特征包括滞后值、滚动统计、日历周期、差分和趋势;所有特征必须只由预测时点之前的数据构造,并按预测 horizon 对齐。随机切分和中心滚动会直接泄漏未来。
详细版
-
lag k 的含义取决于采样频率与预测步长。
-
rolling 必须先 shift,避免纳入当前目标。
-
日历特征可用 sin/cos 表达周期连续性。
-
缺失时间点需先定义补齐与掩码策略。
-
多步预测要区分 direct、recursive 与已知未来协变量。
完整版教学
一、时间特征的核心是因果对齐
普通表格中同一行特征与标签天然对齐,时序任务必须显式写出 origin t 和预测目标 t+h。
任何使用 [t-W,t+h] 或中心窗口的统计,在离线都很漂亮,却在线无法获得。
只有先固定预测原点和当时可用的信息集,lag、rolling 与已知未来协变量的数字才有明确含义,也才能逐项审查是否穿越。
二、底层机制与公式
target=y_(t+h)
features={y_(t-1),...,rolling(y_<t),calendar(t),known_future(t+h)}
cyclic hour=(sin(2pi*h/24),cos(2pi*h/24))
三、带数字的推演
在 t=100 预测 h=3 的 y_103,lag1 必须是 y_99 或按定义最近已知值,不能误用 y_102。
24 小时滚动也只能覆盖 t 前的 24 个观测。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| Lag | 保留具体历史点 | 缺失/长周期维度多 |
| Rolling | 平滑历史 | 边界和泄漏风险 |
| 差分/趋势 | 突出变化 | 可能放大噪声 |
| 日历周期 | 已知未来、成本低 | 节假日需外部表 |
五、执行流程
定义 origin/horizon -> 时间轴切分 -> 只用 <origin 构造 lag/rolling
-> walk-forward 验证 -> 按 horizon 报指标 -> 上线回放同一特征函数
六、边界条件与工程代价
已知未来协变量如日历可使用 t+h 值,未知未来协变量如销量不可使用;必须按可用性分类。
数据修订会让历史值事后变化,金融/宏观任务需保存 vintage 数据,模拟当时发布版本。
记忆钩子:时序工程先写坐标:在 origin t,预测 t+h,当下真正已知什么。
七、常见误区与追问
-
误区:rolling(center=True) 可平滑噪声后训练。 中心窗口会使用未来。
-
追问:为什么随机切分不合适? 训练会看到验证时段之后的模式。
-
误区:所有 t+h 特征都泄漏。 预测时已知的日历、计划价格可能合法。
-
追问:多 horizon 怎么评估? 分别报告每个步长并按业务权重汇总。
-
追问:缺时间点怎么办? 先重建时间网格,并增加缺失/距离上次观测特征。
八、加强记忆
时序工程先写坐标:在 origin t,预测 t+h,当下真正已知什么。
Lag、rolling、周期都必须服从这条时间箭头。