🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》


这是 水果销量预测、时序预测精度提升最大的特征工程手段,也是 AutoGluon / LightGBM 最吃的特征。


一、核心概念(30秒看懂)

时序预测 = 用过去预测未来
所以必须构造:

  1. 滞后特征(Lag):昨天销量、上周同日销量、上上周销量
  2. 滑动窗口(Rolling Window):近7天均值、近14天最大值
  3. 滚动统计:均值、中位数、标准差、增长率

水果销量最强规律:
今天销量 ≈ 上周同一天销量
今天销量 ≈ 近7天平均销量

在这里插入图片描述


二、工程实践3步法(标准流程)

所有时序特征必须按 SKU(商品) 分组计算!
不能全表混算!

第1步:数据预处理(必须做)

  1. 按 商品 + 日期 排序
  2. 补齐连续日期(无缺失天)
  3. 确保时间单调递增
    在这里插入图片描述
# 伪代码
df = df.sort_values(['sku', 'date']).reset_index(drop=True)

三、第2步:构造滞后特征(Lag Features)

最有效、必加的 6 个滞后特征

# 按商品分组
g = df.groupby('sku')['sales']

# 1天前(昨天)
df['lag_1'] = g.shift(1)

# 2天前
df['lag_2'] = g.shift(2)

# 3天前
df['lag_3'] = g.shift(3)

# 7天前(上周同日,最强!)
df['lag_7'] = g.shift(7)

# 14天前(上上周同日)
df['lag_14'] = g.shift(14)

# 30天前
df['lag_30'] = g.shift(30)

在这里插入图片描述

业务价值

  • lag_1:短期趋势
  • lag_7:周规律(水果销量最强)
  • lag_14:双周稳定性
  • lag_30:月度趋势

四、第3步:滑动窗口 + 滚动统计(Rolling)

最实用 8 个特征(直接复制)

g = df.groupby('sku')['sales']

# 近7天均值
df['roll_mean_7'] = g.shift(1).rolling(7, min_periods=1).mean()

# 近14天均值
df['roll_mean_14'] = g.shift(1).rolling(14, min_periods=1).mean()

# 近30天均值
df['roll_mean_30'] = g.shift(1).rolling(30, min_periods=1).mean()

# 近7天标准差(波动大小)
df['roll_std_7'] = g.shift(1).rolling(7, min_periods=1).std()

# 近7天最大值
df['roll_max_7'] = g.shift(1).rolling(7).max()

# 近7天最小值
df['roll_min_7'] = g.shift(1).rolling(7).min()

# 近7天总和
df['roll_sum_7'] = g.shift(1).rolling(7).sum()

# 环比增长率(今日/昨日-1)
df['growth_rate_1'] = df['lag_1'] / df['lag_2'] - 1

✅ 工程关键:必须加 shift(1)

shift(1) = 只用过去数据预测今天
不加会造成数据泄露,模型上线必崩!


五、最强组合特征(精度暴涨)

这是生鲜/水果行业隐藏必杀技:

# 7日均值与上周同日加权(最准)
df['lag7_roll7_mean'] = (df['lag_7'] + df['roll_mean_7']) / 2

# 趋势特征:7日均 - 14日均
df['trend_7_14'] = df['roll_mean_7'] - df['roll_mean_14']

# 波动系数:标准差/均值
df['volatility_7'] = df['roll_std_7'] / df['roll_mean_7']

六、最终特征清单(直接喂给 AutoGluon)

lag_1, lag_7, lag_14
roll_mean_7, roll_mean_14
roll_std_7
roll_max_7, roll_min_7
trend_7_14
volatility_7
lag7_roll7_mean

这 10 个特征 = 时序预测 90% 的精度来源


七、工程避坑 4 条铁律

  1. 必须按 SKU 分组
  2. 必须排序
  3. 必须 shift(1) 防止数据泄露
  4. 必须补齐连续日期

违反任何一条,预测必崩!


八、一句话总结

滞后特征看历史同期
滑动窗口看趋势波动
加权组合看精准度
shift(1) 保工程安全

更多推荐