【Retail Industry】在零售业中实施Amazon Forecast:从POC到生产的过程

2023-09-13 18:00

Amazon Forecast是一个完全托管的服务,利用统计和机器学习(ML)算法提供高度准确的时间序列预测。最近,基于Amazon Forecast,我们帮助了我们的一位零售客户在8周内实现准确的需求预测。这个解决方案相对于WAPE指标的手动预测平均提高了10%。这直接节省了每月16小时的劳动力成本。此外,我们估计通过提供正确数量的商品,销售额可能增加高达11.8%。在本文中,我们介绍了从概念验证(POC)到生产实施需求预测系统的工作流程和关键要素,重点关注零售业面临的挑战。



零售业需求预测的背景和当前挑战


需求预测的目标是从历史数据中估计未来的需求,以帮助存储补货和容量分配。通过需求预测,零售商能够在其网络中的每个位置上定位合适数量的库存以满足需求。因此,准确的预测系统可以在不同的业务功能中带来各种好处,例如:

1. 通过提供更好的产品供应可用性,减少店内调货浪费,增加销售额。

2. 提供更可靠的洞察,以改善容量利用率,并主动避免容量供应中的瓶颈。

3. 减少库存和生产成本,提高库存周转率。

4. 提供更好的整体客户体验。


当大量高质量数据存在时,机器学习技术展示出极大的价值。如今,基于经验的补货管理或需求预测仍然是大多数零售商的主流。为了改善客户体验,越来越多的零售商愿意用基于机器学习的预测替代基于经验的需求预测系统。然而,在将基于机器学习的需求预测系统投入生产时,零售商面临着多个挑战。我们将这些不同的挑战总结为三类:数据挑战、机器学习挑战和操作挑战。


数据挑战

对于生成准确的基于机器学习的预测,大量干净、高质量的数据是关键要求。需要收集和整合高质量的数据,包括历史销售和与销售相关的数据(如库存、商品定价和促销)。来自多个资源的数据的多样性要求现代数据平台来统一数据孤岛。此外,及时获取数据对于频繁和精细的需求预测是必要的。


机器学习挑战

开发先进的机器学习算法需要专业知识。为适当的问题实施正确的算法需要深入的领域知识和机器学习能力。此外,从大量可用数据集中学习需要可扩展的机器学习基础设施。此外,要在生产中维护机器学习算法需要机器学习能力,以分析模型退化的根本原因并正确重新训练模型。

为了解决实际业务问题,生成准确的预测只是问题的一部分。决策者需要在不同分位数处获得概率预测,以做出重要的客户体验与财务结果的权衡决策。他们还需要向利益相关者解释预测,并进行假设分析,以调查不同情景可能如何影响预测结果。


操作挑战

降低维护具有成本效益的预测系统的操作工作量是第三个主要挑战。在需求预测的常见场景中,每个位置上的每个商品都有自己的预测。需要一个能够随时管理数十万个预测的系统。此外,业务终端用户需要将预测系统集成到现有的下游系统中,例如现有的供应链管理平台,以便他们可以在不修改现有工具和流程的情况下使用基于机器学习的系统。

在业务规模庞大、动态且不断增长的情况下,这些挑战尤为严峻。为了解决这些挑战,我们分享了一个减少快速验证潜在业务收益工作量的客户成功故事。通过使用Amazon Forecast进行原型设计来实现这一目标,Amazon Forecast是一个完全托管的服务,可以提供准确的预测结果,无需管理底层基础设施资源和算法。


使用Amazon Forecast进行基于机器学习的预测系统的快速原型设计

根据我们的经验,我们经常看到零售客户愿意在其销售数据上启动概念验证。这可以在几天到几周的时间内完成快速原型设计,具体取决于数据复杂性和可用资源来进行模型调优过程的迭代。在原型设计期间,我们建议使用冲刺方式来有效管理流程,并将概念验证划分为数据探索、迭代改进和自动化阶段。


数据探索

数据探索通常涉及与数据科学家或业务智能分析师的深入讨论,以熟悉历史销售数据集和可能影响预测结果的可用数据来源,如库存和历史促销活动。在项目的早期阶段,最有效的方法之一是从数据仓库中汇总销售数据,将其作为目标数据集。这是基于预测结果通常受目标数据集模式主导的事实。数据仓库通常存储日常业务数据,短时间内全面理解这些数据通常会耗费大量时间和精力。我们建议集中精力生成目标数据集,并确保该数据集是正确的。这些数据探索和基线结果通常可以在几天内实现,这可以确定目标数据是否可以进行准确的预测。我们将在本文的后面讨论数据的可预测性。


迭代

在获得基线结果后,我们可以继续添加更多相关数据,以了解这些数据对准确性的影响。通常,这是通过深入研究其他数据集来完成的;有关更多信息,请参阅《使用相关时间序列数据集》和《使用商品元数据数据集》。

在某些情况下,通过使用数据集的行为类似的子集来训练模型,或者从数据集中删除稀疏数据,可以提高Amazon Forecast的准确性。在这个迭代改进阶段,对所有机器学习项目来说都很具有挑战性的一部分是,当前迭代取决于前一迭代的关键发现和见解,因此严格的分析和报告是成功的关键。

分析可以定量和经验性地进行。定量方面是指在回测期间进行评估,并比较准确性指标,如WAPE。经验性方面是指可视化预测曲线和实际目标数据,并利用领域知识来纳入潜在因素。这些分析有助于您更快地迭代,以弥合预测结果和目标数据之间的差距。此外,通过每周报告呈现这些结果通常可以增强业务终端用户的信心。


自动化

最后一步通常涉及POC到生产过程的讨论和自动化。由于机器学习项目受到总项目时间的限制,我们可能没有足够的时间来探索每一种可能性。因此,在项目期间通过发现潜在领域通常可以赢得信任。此外,自动化可以帮助业务终端用户评估更长时间的预测,因为他们可以使用现有的预测器来生成使用更新数据的预测。

可以从技术和业务角度评估生成的结果来评估成功标准。在评估期间,我们可以估计以下潜在好处:

1. 增加预测准确性(技术)- 计算与实际销售数据相关的预测准确度,并与现有的预测系统(包括手动预测)进行比较。

2. 减少浪费(业务)- 减少过度预测以减少浪费。

3. 提高备货率(业务)- 减少不足预测以提高备货率。

4. 估算毛利增加(业务)- 减少浪费和提高备货率以增加毛利。

我们将开发工作流程总结在以下图表中。

在接下来的章节中,我们将讨论在实施过程中需要考虑的重要元素。


开发预测系统的逐步工作流程

目标数据集生成

第一步是为Forecast生成目标数据集。在零售业中,这指的是零售商品(SKU)的历史时间序列需求和销售数据。在准备数据集时,一个重要方面是粒度。我们应该从业务需求和技术需求两方面考虑数据的粒度。

业务定义了生产系统中的预测结果:

1. 预测范围 - 预测的时间步数。这取决于底层业务问题。如果我们想每周补充一次库存水平,那么每周的预测或每日的预测似乎是合适的。

2. 粒度 - 预测的粒度:时间频率,如每日或每周,不同的店铺位置和同一商品的不同尺寸。最终,预测可以是每个店铺的SKU的组合,带有每日的数据点。


尽管前面提到的预测范围和粒度应该根据业务需求来定义优先级,但我们可能需要在需求和可行性之间进行权衡。以鞋类业务为例。如果我们想预测每个店铺级别的每种鞋子尺码的销售,数据很快就会变得稀疏,模式难以找到。然而,为了补充库存,我们需要估计这个粒度。为了做到这一点,替代方案可能需要估计不同鞋尺码之间的比率,并使用这个比率来计算细粒度的结果。

我们经常需要平衡业务需求和可用于预测的数据模式。为了定量评估数据模式,我们提出使用数据可预测性。


数据可预测性和数据模式分类

从目标数据集中我们可以获得的一个关键洞察是它产生高质量预测的能力。这可以在机器学习项目的早期阶段进行分析。当数据显示季节性、趋势和周期性模式时,预测表现出色。


要确定可预测性,有两个主要的系数:需求时间的可变性和需求数量的可变性。需求时间的可变性意味着两个需求实例之间的时间间隔,它衡量了需求在时间上的规律性。需求数量的可变性意味着数量的变化。下图展示了一些不同的模式。产品的可预测性极大地影响了预测的准确性。有关更多信息,请参阅需求分类:为什么可预测性很重要。

值得注意的是,这种可预测性分析是针对每个细粒度商品(例如,SKU-Store-Color-Size)的。在需求预测生产系统中,不同商品通常遵循不同的模式是相当常见的。因此,将遵循不同数据模式的商品分开是很重要的。一个典型的例子是快速移动和慢速移动的商品;另一个例子可能是数据密集和数据稀疏。此外,细粒度商品更容易产生不均匀的模式。例如,在一个服装店里,一个热门商品的销售可能每天都很平稳,但如果我们进一步将该商品按颜色和尺码分开销售,销售很快就会变得稀疏。因此,从SKU-Store-Color-Size降低粒度到SKU-Store可以改变数据模式,从不均匀变为平滑,反之亦然。


此外,并不是所有商品都以相同的方式对销售做出贡献。我们观察到,商品贡献往往遵循帕累托分布,其中排名前的商品贡献了大部分销售额。这些顶级商品的销售通常很平稳。销售额较低的商品通常不均匀且不稳定,因此很难估计。添加这些商品可能实际上会降低顶级销售商品的准确性。基于这些观察,我们可以将商品分成不同的组,对顶级销售商品进行Forecast模型训练,将销售额较低的商品视为特殊情况进行处理。


数据丰富和额外数据集的选择

当我们想要使用额外的数据集来提高预测结果的性能时,我们可以依赖于时间序列数据集和元数据数据集。在零售领域,根据直觉和领域知识,诸如库存、价格、促销以及冬季或夏季季节等特征可以作为相关时间序列导入。确定特征的有用性的最简单方法是通过特征重要性。在Forecast中,通过可解释性分析来完成。Forecast预测器可解释性帮助我们更好地理解数据集中的属性如何影响目标的预测。Forecast使用一种称为影响分数的度量来量化每个属性的相对影响,并确定它们是否增加或减少了预测值。如果一个或多个属性的影响分数为零,那么这些属性对预测值没有显著影响。这样,我们可以快速去除对预测值影响较小的特征,并迭代添加潜在的特征。需要注意的是,影响分数测量属性的相对影响,这些影响分数会与所有其他属性的影响分数一起进行标准化

与所有机器学习项目一样,通过额外的特征来提高准确性需要进行迭代实验。您需要尝试多种数据集组合,同时观察对模型准确性的增量变化的影响。您可以尝试通过Forecast控制台或使用Forecast API的Python笔记本运行多个Forecast实验。此外,您可以通过AWS CloudFormation进行入驻,它部署了AWS提供的常见用例的现成解决方案(例如,使用机器学习提高预测准确性的解决方案)。Forecast会自动分离数据集并生成用于评估预测器的准确性指标。有关更多信息,请参阅评估预测器的准确性。这有助于数据科学家更快地进行迭代,以获得性能最佳的模型。


高级改进和处理特殊情况

我们提到,预测算法可以从数据中学习季节性、趋势和循环特征。对于具有这些特征以及适当的数据密度和数量的商品,我们可以使用Forecast生成估算。然而,在面对不均匀的数据模式,特别是当数据量较小时,我们可能需要以不同的方式处理它们,例如基于规则集的经验估算。


对于密集的SKU,我们通过使用表现类似的时间序列数据集的子集来进一步提高Forecast的准确性。我们使用的子集分离策略包括业务逻辑、产品类型、数据密度以及算法学习的模式。生成子集后,我们可以为不同的子集训练多个Forecast模型。有关一个这样的示例,请参阅Amazon Forecast使用的时间序列数据的集群。


走向生产:更新数据集、监控和重新训练

让我们探讨一个带有Forecast的示例架构,如下图所示。每当终端用户在Amazon Simple Storage Service (Amazon S3)上 conslidates 一个新的数据集时,它会触发AWS Step Functions来协调不同的组件,包括创建数据集导入作业、创建自动预测器和生成预测。在生成预测结果后,Create Forecast Export步骤会将其导出到Amazon S3供下游使用者使用。有关如何配置这个自动化管道的更多信息,请参阅使用AWS CloudFormation进行自动化。它使用CloudFormation堆栈自动部署数据集到S3存储桶并触发Forecast管道。您可以使用相同的自动化堆栈来使用自己的数据集生成预测。


将最近的趋势纳入预测系统有两种方法:更新数据或重新训练预测器。

要使用反映最新趋势的更新数据生成预测,您需要将更新后的输入数据文件上传到一个S3存储桶(更新后的输入数据仍然应包含所有现有数据)。Forecast不会在导入更新的数据集时自动重新训练预测器。您可以像通常一样生成预测。Forecast预测从更新后的输入数据的最后一天开始的预测范围。因此,最近的趋势将纳入Forecast生成的任何新推断中。

然而,如果您希望您的预测器基于新数据进行训练,您必须创建一个新的预测器。当数据模式(季节性、趋势或周期性)发生变化时,您可能需要考虑重新训练模型。如在Amazon Forecast连续监测预测器准确性中提到的,预测器的性能会随着时间的推移而波动,原因包括经济环境或消费者行为的变化等因素。因此,可能需要重新训练预测器,或者需要创建新的预测器,以确保继续进行高度准确的预测。借助预测器监控的帮助,Forecast可以跟踪您的预测器的质量,允许您减少操作工作量,同时帮助您更明智地决定是否保留、重新训练或重建您的预测器。


结论

Amazon Forecast是一个基于机器学习的时间序列预测服务,专为业务指标分析而建立。通过结合历史销售和其他相关信息,如库存、促销或季节等,我们可以实现需求预测的高精度预测。在8周内,我们帮助一家零售客户实现了准确的需求预测,与手动预测相比提高了10%。这直接节省了每月16小时的人工工时,并估计销售额可能增加高达11.8%。

本文分享了将您的预测项目从概念验证阶段带入生产的常见实践。立即开始使用Amazon Forecast,为您的业务实现高度准确的预测。



云与应用现代化
——
扫描关注微信公众号
获取更多云端资讯
联系我们
——

模板表单-2(1)

  • 姓名*

  • 电话*

  • 邮箱*

  • 公司*

  • 职称*

  • 地址*

  • 需求*