11.3 时间索引、重采样与滚动窗口
聚类与 PCA 把行当成可交换点。时间序列打破了这个假设:顺序不能丢,间隔包含含义,明天才可用的特征不能解释今天做出的预测。开始预测前,必须先建立时间数据契约。
本节沿用每日订单量。每个值都要声明时区、区间归属、可用时刻、聚合规则,以及缺少时间戳究竟表示零活动还是采集缺失。
把事件时间戳转换成可信日历箱
应有意识地使用 pd.to_datetime。不含偏移量的字符串是无时区时间(timezone-naive),带时区的是有时区时间(timezone-aware)。tz_localize 为无时区墙上时钟声明时区,tz_convert 则把已有时区的时间转换到另一个区域。夏令时切换可能产生歧义或不存在的本地时刻,因此要保留原始 UTC,并记录转换策略。
解析后需要审计索引:
- 它是否为预期时区的
DatetimeIndex?
- 是否单调排序?
- 重复事件 ID 是否为错误,而重复时间戳只是同时发生的合法事件?
- 时间缺口表示预期无活动、传感器停机,还是批次漏传?
- 该时间是事件发生、系统摄入,还是值真正可用的时刻?
resample 本质上是按时间分组后聚合。把事件行转换为小时运营表时,不同字段使用不同归约:
hourly = (
events.set_index("event_time")
.resample("1h", closed="right", label="right", origin="start_day")
.agg(
orders=("order_id", "size"),
revenue_yuan=("revenue_yuan", "sum"),
avg_wait_min=("wait_min", "mean"),
)
)计数和流量通常使用 sum 或 size;温度等状态量可能采用 mean、last、min 或 max。聚合具有语义。把平均等待时长求和,或把订单总数取平均,都能产生数值,却不是计划测量的对象。
两个参数回答不同的边界问题。closed 决定恰好落在边缘的事件属于哪一段,label 决定结果时间戳使用区间左端还是右端。粗心的组合可能把较晚观测聚合后标到较早时刻,在预测表中形成前视。
重采样实验把时间轴变成一张工作台。你可以直接在原始事件流上刻出任意不等宽边界,再写一条可执行的小型聚合表达式,例如 count()、sum(revenue) 或 mean(wait)。边界事件用橙色显示,因此改变端点归属会让真实记录跨到相邻箱,而输出标签仍是独立选择。
降采样会把许多细粒度观测合并为较少粗区间。升采样会创建更细索引,因而出现新的缺失位置。asfreq 改变频率却不聚合。前向填补、插值或填零都会对数据生成过程作出声明,没有一种只是中性格式化。应保留观测/覆盖标志,让填补值与实测值可以区分。
让每个滚动特征遵守可用时刻边界
滚动统计会概括移动中的局部历史。固定计数窗口 rolling(7) 使用七行;时间偏移窗口 rolling("7D") 使用七个日历日内所有行。日期缺失或观测不规则时,两者成员不同。
窗口宽度为 的尾随均值可写成:
定义故意结束在 。如果特征用来预测 ,把 放进自己的均值就是答案泄漏。在 pandas 中,要先 shift 目标再 rolling:
past_orders = daily["orders"].shift(1)
daily["orders_lag_1"] = daily["orders"].shift(1)
daily["orders_lag_7"] = daily["orders"].shift(7)
daily["orders_mean_7d"] = past_orders.rolling(
"7D",
min_periods=4,
).mean()min_periods 声明至少需要多少证据。开头的 NaN 是诚实结果:早期行没有足够历史。删除它们会改变合格训练人群,用全局均值填补又可能泄露未来。所选策略必须能在原预测时刻真实运行。
center=True 会把窗口标到中点,两侧观测共同贡献,适合描述性平滑;作为实时预测特征通常无效,因为右半窗口位于未来。指数加权均值会给予近期历史更高权重,但同样要 shift 并审计可用性。
滚动实验要求你亲手涂出一个特征读取的每个观测,包括自定义和不连续足迹,并自行放置预测原点。每个依赖都会同时接受事件时间与可用延迟检查;未来值、目标值和尚未到达的来源会变成橙色,从而把“离线表里已经存在”与“决策时已经可用”的区别变成可见事实。
滚动窗口不能只检查公式。生产数据可能延迟到达或被修订。如果昨天最终总量直到 02:00 才生成,午夜预测就不能使用它,即使事件日期更早。要同时追踪事件时间与可用时间,并在预测协议需要时设置 gap。
原始序列始终要与衍生特征一起画。滚动曲线会隐藏缺口、结构突变、尖峰与插值区段。应增加覆盖率或样本数图,而不能让平滑线暗示证据完整。
现在已经得到规则序列和无泄漏历史特征。最后一节会分离趋势、季节与余项,再在从未参与拟合的未来窗口上评估预测规则。