You need to enable JavaScript to run this app. 面向大规模产品销售时间序列的Python自动化离群点校正流程咨询
优惠活动
大模型
产品
解决方案
定价
更多

面向大规模产品销售时间序列的Python自动化离群点校正流程咨询

月度产品销售序列自动化离群点校正与预测落地流程

核心执行顺序(全流程Python可批量跑通,无需逐序列人工干预)


1. 前置数据对齐与基础校验

  • 统一所有产品序列的月度时间索引,对齐时间粒度,对短期缺失值做线性插值补全,保证每个序列的时间范围完全覆盖2016.01-2019.12。
  • 严格划分训练/预测边界:所有统计计算、离群识别、模型训练仅使用2016-2018年的训练窗口数据,2019年数据仅作为预测精度校验的预留集,全程不参与任何前置处理步骤,杜绝数据泄露导致的精度虚高。
  • 平稳性检验作为离群检测的辅助步骤而非硬门槛:对每个训练窗口内的序列做ADF平稳性检验,仅当p值大于0.05时,临时对序列做对数变换后再进入离群检测环节,避免趋势/长期均值漂移把正常高点误判为离群;预测阶段不需要手动做平稳性变换,后续自动适配的预测模型会内置差分逻辑处理非平稳序列。
  • 产品层级数据的轻量化用法:100个产品组的数据仅作为离群判定的阈值参考,不参与单产品序列的数值替换。比如统计同组产品在各月份的普遍波动幅度,当单产品单月涨幅远超同组95%分位的波动水平时,适当上调离群判定阈值,减少把全组共性大促误判为单产品离群的情况,完全适配产品级预测的核心目标。

2. 批量自动化离群点识别(针对峰值型离群)

放弃全局3σ这类对非平稳序列完全失效的检测方法,用两种抗离群干扰的方法交叉验证,降低误判率:

  • STL分解检测:对训练窗口内的序列用statsmodels.tsa.seasonal.STL拆分为趋势项、季节项、残差项,对残差序列用*绝对中位差(MAD)*计算判定阈值:残差绝对值超过3倍MAD的点标记为候选离群。MAD的抗干扰能力远高于标准差,不会被已有的大峰值拉偏判定阈值。
  • 滚动窗口基线检测:对每个时间点,取前后各3个月的不含目标点的窗口数据,计算窗口内的中位数基线与95分位波动范围,当目标点数值超过中位数基线+2倍窗口波动范围时,标记为候选离群。
  • 判定规则:两个方法都标记的点,正式纳入需要校正的离群集合;仅单个方法标记的点,作为低置信度异常点保留原始值,不强制校正,避免误删真实需求信号。

对应示例2的两个典型峰值:2016年6月、2018年7月的4万级峰值,在STL分解中残差会远高于MAD阈值,在滚动窗口检测中前后相邻月份的基线仅1.5万左右,会被同时标记为正式离群点,检测覆盖率满足要求。

3. 离群点自动校正

  • 校正规则:对正式标记的离群点,替换为STL分解得到的同期趋势值+季节值,剔除离群的残差成分,不做删除、不直接用前值硬接,最大限度保留序列的季节性与趋势特征。
  • 二次校验:校正后的数值必须落在对应时间窗口的10分位-99分位区间内,超出区间的校正结果作废,保留原始值,避免把真实的需求爬坡误改为偏离合理范围的数值。

4. 批量预测模型适配(适配数千产品的规模化场景)

  • 对校正完成的2016-2018年训练序列,用pmdarima的auto_arima做批量参数搜索,开启stepwise模式自动识别序列的趋势、季节性、差分参数,自动适配每个产品的序列特征,输出2019年12个月的全量预测值。
  • 对无明显趋势、季节性的低波动序列(如示例1的个位数销售序列),直接用3个月滚动中位数做预测即可,计算速度快、精度稳定,避免过度参数搜索带来的计算资源浪费。

常见误区澄清

不需要为了满足平稳性要求提前对全序列做差分、对数变换:平稳性的作用是让离群检测的基线计算更准确,而非必须满足的前置门槛;预测阶段的auto_arima模型会自动处理非平稳序列,提前手动变换反而可能引入额外的误差。
不要把产品组的聚合数值直接替换到单产品序列中:聚合值会稀释单产品的真实销售波动,导致单产品预测的偏差变大,组级数据仅作阈值调整参考即可。

内容的提问来源于stack exchange,提问作者bprsch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 08:27:09