📦 特征工程 · 上

时间·滞后·滚动
供应链预测模型实战精讲

⭐ 核心三 pillar 时间特征 (年/月/周/日/节假日/促销) · 滞后特征 (Lag) · 滚动窗口统计 (Mean/Std)

📅 时间特征

  • year 年份 趋势
  • month 月份 (1-12) 季节
  • week 周数 (ISO) 周期
  • dayofweek 星期几 周模式
  • is_holiday 节假日标记 🎉
  • is_promotion 促销日 🔥
  • ➕ 季度、月初/末、星期特征

⏮️ 滞后特征

  • lag_1 前1天值 短期依赖
  • lag_7 前7天值 周周期
  • lag_30 前30天值 月度
  • lag_365 年同比 季节
  • 📌 多步滞后组合
  • 📌 差分滞后 (Δlag)

📊 滚动窗口

  • rolling_7_mean 7日均值 平滑
  • rolling_7_std 7日标准差 波动
  • rolling_14_mean 14日均值
  • rolling_30_std 30日标准差
  • ➕ 最大值、最小值、偏度
  • ➕ 指数加权移动平均 (EWM)
特征类别典型特征预测作用供应链场景
⏳ 时间month, week, dayofweek季节性、周期性节假日销量高峰
🎯 滞后lag_7, lag_14, lag_30自回归记忆库存补货依赖
📈 滚动rolling_7_mean, rolling_14_std局部趋势/波动需求稳定性评估
📌 事件is_holiday, is_promotion脉冲影响双十一、黑五
📦 原始时序 📅 时间特征 年/月/周/日/节假日/促销 ⏮️ 滞后特征 lag_1, lag_7, lag_30 … 📊 滚动窗口 rolling_mean / std 🧩 特征矩阵 (时间+滞后+滚动) 🚀
⭐ 特征工程流程:从原始时序到多维特征矩阵
🐍 Python 代码示例 特征构建 (Pandas)
# ===== 时间特征 =====
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['week'] = df['date'].dt.isocalendar().week.astype(int)
df['dayofweek'] = df['date'].dt.dayofweek
df['is_holiday'] = df['date'].isin(holiday_list).astype(int)
df['is_promotion'] = df['date'].isin(promotion_dates).astype(int)

# ===== 滞后特征 (Lag) =====
df['lag_1'] = df['sales'].shift(1)
df['lag_7'] = df['sales'].shift(7)
df['lag_30'] = df['sales'].shift(30)
df['lag_365'] = df['sales'].shift(365)   # 年同比

# ===== 滚动窗口统计 =====
df['rolling_7_mean'] = df['sales'].rolling(window=7).mean()
df['rolling_7_std']  = df['sales'].rolling(window=7).std()
df['rolling_14_mean'] = df['sales'].rolling(window=14).mean()
df['rolling_30_std']  = df['sales'].rolling(window=30).std()

# 可选:指数加权移动平均
df['ewm_7'] = df['sales'].ewm(span=7, adjust=False).mean()
💡 最佳实践:
✅ 滞后阶数根据ACF选择 ✅ 滚动窗口适配业务周期 (7/14/30) ✅ 节假日+促销日 构建哑变量 ✅ 避免数据泄露 (shift)