销量清洗与还原
把"卖出去的"还原成"想买的"。三类还原:节假日还原、活动还原、断货还原;每一行都必须能说清用了哪种方法、输入是什么、还原量是多少,可解释、可回溯。
参与还原 SKC-店
3,812行
占候选池 25.5%
合计还原量
+1,268件
还原后销量 = 原销量 × 1.086
断货还原占比
71.4%
最大项,直接影响目标库存
平均断货天数
4.2天/14天
断货天数加权,见 goal-factor
严重删失告警
63行
缺货 ≥ 10 天,标注为不可识别
可回溯率
100%
每行保留方法、参数、操作人、时间
① 节假日还原
口径
取去年同一节假日前后各 14 天的实际销售,计算节假日期间单日销售增长倍率 r,再按备货提前期折算备货倍率;还原时把落在节假日窗口内的日销量除以 r,把"被抬高的销量"压回常态水平,避免用被节假日抬高的 14 天去预测常态需求。
- 去年倍数 r
- 1.42(国庆 7 天实测)
- 今年备货倍率
- 1.35(提前 5 天起)
- 还原窗口
- 节前 3 天 ~ 节后 3 天
② 活动还原
口径
活动无历史可探索、范围小,因此不依赖去年数据,直接用业务维护的活动备货倍率做除法还原;未维护倍率的活动默认为 1.0 并生成待办提醒,绝不用模型"猜"促销效果。
- 参加活动行
- 412 行
- 已维护倍率
- 386 行(93.7%)
- 未维护(按 1.0 处理)
- 26 行
③ 断货还原
口径
断货时我们只观测到右删失的销量:S = min(D, X),其中 D 为真实需求、X 为可售库存;同时有一个缺货指示位。库存耗尽当天的观测不等于需求,直接拿 S 当 D 会系统性低估。常用做法:按同店同 SKC 的有货日日均销量插补缺货日,或用 Kaplan–Meier 对删失样本做生存曲线校正,缺口大的款用离线插补 + 在线 Thompson sampling 迭代。
- 观测模型
- S = min(D, X),X 为当日可售库存
- 缺货指示
- 当日 ATP ≤ 0 且当日有销量
- 校正方法
- KM 删失校正 / 有货日日均插补
- 严重删失
- 缺货 ≥ 10 天 → 标记"可识别性存疑"
!必须直说的边界:严重删失下存在可识别性问题。若一个 SKC-门店在整个 14 天窗口内几乎全程缺货,那么无论用什么算法,都无法仅凭销量数据区分"需求很小"和"需求很大但一直没货",此时只能借助相似款、品类趋势等外部信息给出区间而非点值。系统对该类行强制输出 P10–P90 区间并标注置信度低,不会给出一个看起来精确的假数字。
还原前 vs 还原后对照(F3)
每一行的"采用方法"即为可解释与可回溯的凭据,点击行可展开参数快照| SKC | 门店 | 近14天原销量 | 断货天数 | 节假日还原 | 活动还原 | 断货还原 | 还原后销量 | 放大倍数 | 采用方法 | 置信度 |
|---|---|---|---|---|---|---|---|---|---|---|
| 24AW-3182 | 浙江杭州武林银泰店 | 15 件 | 0 天 | +2 | — | — | 17 | 1.13× | 节假日除法还原(r=1.42,节前 3 天窗口) | 高 |
| 24AW-3405 | 浙江宁波天一银泰店 | 10 件 | 3 天 | +1 | — | +2 | 13 | 1.30× | 节假日还原 + 有货日日均插补(3 天) | 高 |
| 24AW-3890 | 浙江杭州西湖银泰店 | 7 件 | 6 天 | — | — | +4 | 11 | 1.57× | KM 删失校正(右删失 6/14 天) | 中 |
| 24AW-3714 | 浙江温州五马街店 | 7 件 | 11 天 | +1 | +2 | +9 | 19 | 2.71× | KM 校正 + 相似款区间约束(可识别性存疑) | 低 |
| 25SS-1108 | 江苏南京新街口店 | 12 件 | 0 天 | — | +3 | — | 15 | 1.25× | 活动倍率除法还原(倍率 1.30,业务维护) | 高 |
| 24AW-3520 | 浙江嘉兴八佰伴店 | 3 件 | 2 天 | — | — | +1 | 4 | 1.33× | 有货日日均插补(2 天) | 中 |
| 24AW-3902 | 江苏苏州印象城店 | 1 件 | 14 天 | — | — | +6 | 7 | 7.00× | 全窗口缺货 → 仅输出 P10–P90 区间,不给点值 | 低 |
| 25SS-1377 | 浙江绍兴银泰城店 | 0 件 | 0 天 | — | — | — | 0 | 不适用 | 无销量无缺货 → 不做还原,交 Croston 兜底 | 中 |
共 3,812 行,此处展示 8 行每页
还原量结构
为什么断货还原占比最高
因为库存不足是最高频的"销量失真"来源:节假日和活动一年只有几十天,而断码、缺货是日常状态。忽略断货还原,等于把最难补的款越补越少。
还原的可回溯要素(F3 验收项)
- 方法标识
- holiday_div / promo_div / km_censor / dow_interp / range_only
- 参数快照
- 倍率值、窗口起止、有货日集合、KM 权重
- 输入口径
- 销售流水版本号 + 库存快照版本号(同日 00:00)
- 操作留痕
- 自动批次 ID 或人工校正原因码 + 操作人 + 时间
- 结果绑定
- 还原后销量写入决策行 processed_sale,原销量留痕不覆盖
- 复盘入口
- 任一决策行可反查其还原过程(见 dec-model)
清洗流水线
还原在每日 02:10 批次内完成STEP 1
取数
POS + 库存快照
STEP 2
缺货标记
ATP ≤ 0
STEP 3
三类还原
并行计算
STEP 4
区间校验
P10 ≤ 点值 ≤ P90
STEP 5
写回
processed_sale
还原作业时间线
02:10:12
读取销售流水 41.2 万行、库存快照 3.2 万行
02:10:48
缺货标记完成:断货行 3,102 行,其中严重删失 63 行
02:11:30
节假日还原 228 件;活动还原 135 件(26 行倍率缺失已生成待办)
02:12:04
断货还原 905 件,KM 校正覆盖 812 行
02:12:20
区间校验通过,写回 processed_sale