GLADS - 开始建模前需要做出的 5 个选择

简要说明

我们都知道,需求预测总是充满挑战。在本系列文章中,您将了解针对实际问题开发复杂预测模型所面临的主要挑战。我们的模型必须在预测准确性方面击败需求规划人员的基准预测,并能轻松部署到其他国家。首先,我们希望为您提供一些有用的提示,告诉您在训练自己的模型之前应该做出哪些选择。.

对这个系列有什么期待?

我们的目标是为您提供超越 Kaggle 竞赛的见解和良好实践。在线预测竞赛的问题在于,它们往往忽略了现实世界中的限制因素,如损坏的 data、无法提前获得的 data 等。.

本系列的每篇文章都将讨论您可能遇到的难题,而 Kaggle 讨论中并没有明确的答案:

  • GLADS : 开始前需要做出的 5 个选择
  • 在频繁的促销活动中进行准确预测
  • 建立可视化工具来评估模型
  • 预测无历史记录产品的销售额 data
  • 在生产阶段自动执行 data 质量检查
  • 在不同国家推广预测模型
  • GLADS 框架

    需求预测一直是帮助企业进行决策、物流优化和业务洞察学习的有力工具。然而,要建立一个准确、稳健的预测模型仍是一项挑战,基于机器学习的方法也因各种限制而难以在实际业务中应用。挑战可能来自企业和 data 两方面。为了帮助企业主和 data 科学家克服这些困难,我们根据自己的经验总结了您需要做出的五种选择。我们称之为 GLADS,它代表着

    • 选择正确的 data 的粒度

    • 选择正确的 地平线长度

    • 选择正确的 预测算法

    • 选择正确的 销售驱动因素

    • 选择正确的 成套 SKU

    在这段话中,我们将简要说明我们选择 GLADS 的原因、理由和方式。.

    G:data 的粒度

    是什么?

    data 的粒度是指销售描述的详细程度。通常有两个维度:项目和时间(频率)。例如,您是否按 SKU/类别/BU/国家描述销售情况?是否按小时/天/周/月/年记录销售情况?

    为什么重要?

    不同时间粒度的时间序列示例 [Jiang, Yexi & Perng, Chang-shing & Li, Tao & Chang, Rong.(2012).智能云容量管理。10.1109/NOMS.2012.6211941.]

    虽然 data 原始数据越详细,Data 科学家在进行销售预测时就有越多的选择,但粒度的选择并不那么简单。显然,更高的粒度可以在描述销售时保留更多信息,但也会给 data 带来大量噪音。选择合适的粒度是对 data 进行去噪处理的必要步骤,可以尽可能多地保留信息,为下一步建模奠定坚实的基础。.

    如何选择?

    粒度的选择应考虑两个主要因素:业务需求和 data 本身的特征。.

    根据您的业务需求:业务需求始终是首先要考虑的问题。在某些情况下,每月的销售额就足够了,而在其他情况下,您可能需要预测每个小时的销售额。不同行业的业务需求千差万别,请务必先了解业务需求,然后再开始构建模型。.

    基于 data 特性:如果 data 的粒度与业务需求相冲突,您首先想到的应该是以另一种方式收集 data。虽然有些算法可以通过模拟或机器学习帮助您提高 data 的粒度,但使用伪 data 建立模型会带来太多不确定性。然而,有时需要将 data 聚合到较低的粒度,在这种情况下,data 太不稳定,方差很大,data 聚合是稳定 data 和提高模型性能的有用工具。.

    L:地平线长度

    是什么?

    预测范围的定义说明

    预测模型的时间跨度基本上是指预测应在未来多长时间内执行。如果我们准备的预测时间跨度为两个月,那么这就意味着我们的模型将以一定的粒度给出距离当前时间两个月后的预测结果。.

    为什么重要?

    虽然在评估预测模型时,模型的准确性往往被用作唯一的性能指标,但在现实世界中应用模型时,时间跨度可能是至关重要的。就像天气预报一样,预测未来几小时内的气温总是比预测一周后的气温更准确。销售预测也是一样,预测时间越长,准确率就越低。然而,在商业应用中,情况恰恰相反。通常情况下,没有必要预测未来一天的销售情况,因为很少有决策可以在夜间做出和执行,而了解未来几周或几个月的情况可能会非常有帮助。不要盲目,不考虑时间跨度,建立一个无法在现实世界中应用的模型。.

    如何选择?

    时间跨度的长短完全取决于业务需求。例如,如果预测将用于帮助优化仓库调度,那么预测第二天的销售额可能没有帮助。因此,应根据从了解未来到实际操作所需的时间来设定预测范围。或者更直白地说:你应该提前知道多少数字?需要提醒您的是,如果 data 的时间覆盖范围不够长,则时间跨度过长会减少训练样本的数量。.

    A:预测算法

    是什么?

    多年来,销售预测方法一直在不断发展,因此算法也多种多样。在谈到销售预测时,最流行的工具是来自 statsmodel 和 Prophet 的 ARIMA,基于树的回归模型也被应用于销售预测任务中。与此同时,深度神经网络也从未被排除在机器学习的候选名单之外。.

    为什么重要?

    Data 科学家的工作可能不是为一项特殊任务开发一种全新的算法,如今他们面临的主要挑战是选择正确的算法和为算法定制 data 处理。在选择算法时,如果不考虑可用的 data、业务背景或对模型透明度的要求,很可能会使模型变成停留在服务器中的大量参数,而得不到适当的应用。.

    如何选择?

    在为您的案例选择最佳算法之前,应该了解每个算法分支的一些一般概念。.

    不同预测算法的比较

    ARIMA:ARIMA:使用纯粹的经典统计方法为时间序列建立模型,而不使用能代表数据集特征的其他特征。.

    先知:Prophet 是 Facebook 设计的一款高级预测工具,可以自定义事件和节日,但不能添加静态功能。.

    ARIMA 和 Prophet 都无法为多个时间序列建立模型,而且误差会随着时间跨度的增加而叠加。.

    树状模型:基于树的模型通常用于分类和回归问题,但通过一些特殊的 data 处理技巧,它也可用于时间序列预测。我们可以建立一个表格,其中的每个特征都代表特定时间戳上的序列值,然后通过预测时间与时间窗口的滚动来进行预测。基于树的集合模型是目前建立销售预测模型最有效的方法之一,因为人们可以在模型中定制更多的特征,而无需在特征工程方面做太多工作。.

    神经网络:神经网络方法因其性能而永不过时。我们总能通过类似的特征工程过程,建立类似 LSTM 的神经网络和基于树的模型。不过,在采用这种方法之前,应始终对模型的透明度、所需的 data 量和训练效率进行估算。.

    D:销售驱动因素

    是什么?

    一个商业常识是,商品的销售会受到其他因素(节假日、事件、活动、媒体、天气等)的巨大影响。如果能够捕捉到这些驱动因素,就更有可能利用驱动程序 data 改进预测,尤其是当某些驱动因素可以在预测前就知道或设置好时。.

    销售驱动因素示例

    为什么重要?

    销售预测模型如果只使用历史销售额,就很难取得令人满意的效果,因为顾客的行为会受到太多因素的影响。超市的销售额可能会受到天气的影响,化妆品品牌的销售额可能会受到促销活动的拉动。根据我们的经验,不同驱动因素的影响可能非常大,以至于在节日期间销售额有时会翻倍,这可能会对模型预测造成巨大误差。尽管如此,对营销人员和物流部门来说,分析驱动因素的影响始终是一个有趣的话题:什么是影响销售额的关键因素?如果未来安排了大型活动,销售额会如何变化?如何在不同情况下优化物流?

    如何选择?

    转换为时间序列:给定与潜在驱动因素相关的 data,我们首先要做的是将这些 data 转换为时间序列,这样我们就可以分析驱动因素与某一 sku 的销售额之间的共同关系。 然而,这可能真的很棘手。最简单的方法是将一组事件编码为二进制变量,表示其中至少有一个事件是否在某段时间内发生。在此基础上,还可以将事件编码为数字时间序列。例如,同一天发生的事件数量、当天发生事件的城市数量等。还可以添加一些定制的转换,例如根据业务经验使用其他形式的波代替方波。.

    相关性研究:接下来,我们需要研究两个时间序列之间的相关性。我们建议使用 TLCC(时间滞后交叉相关),因为事件的影响可能出现在事件之前或之后。例如,宣传活动通常在推出几天后生效,而人们往往会在节日前一周准备礼物。因此,偏移可能是正的,也可能是负的,而绝对值则需要根据业务经验加以限制,否则就太难解释为什么今天的销售额会受到 2018 年圣诞节的影响。.

    S: SKU 套件

    是什么?

    大多数情况下,销售 data 是按 SKU(库存保管单位)收集的,因此,在 SKU 层面建立预测模型时,一个重要的问题是,是为每个 SKU 训练一个单独的模型,还是使用所有可用的 SKU 训练一个模型。前者侧重于单个 SKU 并区分其特征,而后者则受益于庞大的训练 data 量,并节省了模型参数储备空间。.

    为什么重要?

    我们之所以可以用所有 SKU 来训练模型,是因为模型学习到的大多数信号都是相似的,因此,如果我们能够最大限度地提高用于训练的 data 之间的相似性,我们就可以在尊重每个 sku 的特殊性和训练 data 的数量之间进行优化权衡。.

    如何选择?

    根据这一假设,我们提出了两种不同的 SKU 分组方法。.

    业务方式:由于一个类别的销售情况可能相似,因此按类别对 SKU 进行分组是一种实用的方法,可以从某些 SKU 的共同模式中获益。有时,您甚至可以利用子类别来找到最合适的 SKU。.

    Data 科学途径:对 SKU 进行分组的 data 科学方法是应用聚类算法。在上一节中,我们提到了对 SKU 和驱动程序之间相关性的分析,我们可以利用同样的方法来计算各 SKU 之间的相关性。事实上,相关性可视为距离,因此可对所有 SKU 对的距离矩阵应用聚类算法,然后在每个聚类上对模型进行单独训练。.

    基于时间序列模式相似性的 SKU 聚类示例

    结论

    作为结论,这里有一个简短的 “GLADS ”版本,供您在进行预测选择时参考:

    • Gdata 的粒度:根据实际的 data 粒度进行选择,并查看是否需要根据 data 差异进行聚合。.

    • L地平线的长度:根据业务需要预测未来多长时间,并关注 data 的更新频率

    • A预测算法:没有一个单一的模型可以满足所有需求,请根据您的 data 特性谨慎选择

    • D销售的河流:从业务洞察或 data 科学工具中尽可能找出有效的驱动因素,这将大有裨益。.

    • S一组 SKU:不要只针对单一的 SKU 训练模型,要尝试获取一组过去有类似模式的 SKU。.

    归根结底,这些选择只能帮助你在预测项目开始时有一个良好的开端,或者在过程中帮助你调整方法。不过,细节决定成败,我们稍后将发布一些与此主题相关的更详细的方法论。. 毕竟,预测没有终点,总是需要做得更好.

    您可以在我们的 Medium 博客上找到更多关于我们和我们项目的信息