我不推荐 Neal等人使用的方法。. 他们的数据是独一无二的,原因有两个:
他们正在处理食品数据,这些数据通常比其他零售产品销售数据更密集、更稳定。一个特定的地点每周将销售数十个牛奶盒或鸡蛋包,并且几十年来一直在销售这些相同的产品,而时装或汽车零件每 3 或 4 周销售一件商品的情况并不少见,并且只有一两年的数据可用。
他们预测的是仓库而不是商店。一个仓库覆盖多个商店,因此他们的数据比平均水平还要密集。实际上,仓库通常用作商店的自然聚合/分组级别,因此它们实际上已经在执行商店数据的分组。
由于数据的性质,他们可以直接对单个时间序列进行建模。但大多数零售商的数据在单个 sku/商店级别上过于稀疏,以至于他们无法实现这一目标。
正如 zbicyclist 所说,这个问题通常使用分层或多梯队预测来解决。商业需求预测包都使用某种形式的分层预测
这个想法是将产品和商店分组到相似的产品和区域中,生成汇总预测并用于确定整体季节性和趋势,然后使用自上而下的方法与为每个单独的 sku 生成的基线预测进行协调。 /存储组合。
除了提到的挑战 zbicyclist 之外,更大的问题是找到产品和商店的最佳组合是一项艰巨的任务,需要结合领域专业知识和经验分析。产品和商店通常按详细的层次结构分组在一起(按部门、供应商、品牌等...对于产品,按地区、气候、仓库等...对于位置),然后将其与历史销售额一起输入预测算法数据本身。
解决 meraxes 评论
Corporación Favorita Grocery Sales Forecasting Kaggle Competition 中使用的方法怎么样,它们允许模型从几个(可能不相关的)产品的销售历史中学习,而无需进行任何明确的分组?这仍然是一种有效的方法吗?
他们通过使用 store、item、famlily、class、cluster 作为分类特征来隐式地进行分组。
我刚刚通读了一点 Rob Hyndman 关于分层预测的部分。在我看来,采用自上而下的方法可以提供对总体水平的可靠预测;然而,它的巨大缺点是由于聚合而丢失信息,这可能会影响底层节点的预测。它也可能“无法捕捉和利用单个系列特征,例如时间动态、特殊事件”。
与此相关的三点:
- 他指出的缺点取决于数据的分组。如果您汇总所有产品和商店,那么是的,这将是一个问题。例如,聚合所有地区的所有商店会混淆任何地区特定的季节性。但是你应该只聚合到相关的分组,正如我所指出的,这需要一些分析和实验才能找到。
- 在零售需求的具体案例中,我们并不担心“聚合丢失信息”,因为往往底层节点(即SKU/Store)的时间序列包含的信息很少,这也是我们将它们聚合到更高的原因。水平放在第一位。
- 对于 SKU/商店特定事件,我们团队处理它的方式是在生成预测之前删除事件特定影响,然后在生成预测之后将它们添加回来。有关详细信息,请参见此处。