关于如何使用反事实预测法估算零售业以往店内促销活动成本效益的指南。.

阅读我们的文章

.

在为期 3 个月的实际项目中,我们开发了一个反事实预测模型(首先使用 Prophet,然后使用 XGBoost)并将其产业化,以评估一家连锁店过去店内促销活动的绩效,帮助需求规划人员选择促销活动。.

这个模型经过训练后,会预测过去没有促销活动时的假设销售额(称为基线)。实际促销销售额与基线之间的差额就是增量销售额,我们称之为提升。.

得益于手工制作的时间特征,我们的预测准确率达到了近 90%。.

业务背景

在规划未来的促销活动时,需求规划人员需要决定哪些产品组合将通过某种促销机制(如“-15%”、“买二送一 ”等)进行打折。

这些都是困难的决定,因为

  • 选择 促销太多 就会 没有 一个 有效 策略(顾客会习惯于促销活动,并倾向于等待下一次促销)。.
  • 选择 错误促销 将导致资金短缺和 损失.

对于大多数零售公司来说 活动选择 是由 根据他们的业务知识 和 过去的晋升业绩. .然而,“性能 过去的晋升 ”是 难以估计. .的确,促销活动确实会增加销售额(在大多数情况下),但如果我们不知道没有促销活动时的销售额是多少,又如何估算其效率或投资回报率(ROI)呢?这种没有促销活动的销售额假设值可以称为 底线. .换句话说,就是要能够估算出 增量销售 (或 振作)的促销活动,对应于 实际销售额减去基线.

为了回答这个问题,我们开发了一种工具,能够估算出以往活动的促销销售额提升,准确率接近 90%。.
这项任务颇具挑战性,因为我们的目标是预测 假设 在另一种情况下的销售额(这里指的是如果某产品没有开展促销活动)。这可以称为“......"。“反事实预测”.本文主要基于我们为一家法国连锁店所做项目的经验。.

其目的是介绍我们所使用的方法,并给出实施反事实预测解决方案时的提示和注意事项(见下文)。data 准备建模),解释 评价 最后讨论 极限 和 下一步 这种方法。.

什么是反事实预测,为什么难以预测?

反事实预测是以某种形式预测某种事物的过程: 会怎样 X 如果没有 Y.在我们的使用案例中、, X 销售和 Y 将是一次宣传活动。.

实际上有 多个字段 可以应用这一流程的地方: 缺货 (估计缺货造成的短缺)、任何 持续时间不长的特别活动 (Covid: does not work!),以便有足够的 data 来估计该反事实。.

晋升问题可以从 3 个角度来解决(按难度由高到低排序):

  • 1. 了解以往的晋升情况: 全面评估以往促销活动的效果(如销售额提升或投资回报率)。.

  • 2. 预测 性能 未来晋升 活动的特点(折扣产品、开始和结束日期、机制......)

  • 3. 优化促销计划:找到未来促销活动的最佳设置,最大限度地提高业务指标。.

在本文中、, 我们将重点关注第一步 因为这是我们项目的目标。不过,我们将在下面的章节中就如何解决后两个问题提出一些见解。.

有两个主要原因使得反事实预测成为一项具有挑战性的工作:

  • 有一个 缺乏文献或实例 在零售业和其他行业非常有用。.

  • 在反事实预测中、, 没有事实根据, 因为这是没有发生过的事情。因此,绩效评估似乎相当困难(幸运的是,我们想出了一个办法,将在评估部分介绍)。.

建议的方法

我们构建工具的方法如下:

  • 1. 火车 预测 推广日期之外的模式, 在没有任何计划促销的情况下,了解销售额的基本情况。.

  • 2. 预测 上的所有 data 点(实际上,只使用了推广期间的预测,但为了便于解释,保留各处的预测也不错)。.

  • 3. 比较 在每次促销活动期间,将预测基线与实际销售额进行比较,以推断其提升幅度。.

重要说明:目标是在过去的推广期使用预测。因为这项任务是 后天 分析 与传统预测不同的是 可以在以下日期进行培训  推断期, ,与促销活动相对应。这里没有 data 泄露的概念,因为我们试图解释过去发生的现象。因此,训练-推理工作流程是这样的:

实施

准备 data

要解决推广问题,必须使用正确的 data 格式。通常,我们可以使用两种类型的 data:

1.促销 data (与促销有关的描述性信息)

2.销售 data.

预处理后的 data 基本上是销售额 data,并加入了促销信息(左连接,见上图)。每一行的 “促销类型 ”非空,都对应着产品正在促销的日子。.

在首次实施之前,重要的是 评估 data 的质量. .以下是一些检查指导原则:

1.查找主要 问题 在 时间序列:

  • 间歇性 和/或非常 销量低 (很难学到基线)。.

  • 促销活动持续时间过长 和/或过于频繁(因此,没有足够的 data 点进行培训)。.

  • 一些 产品 在 多重促销 与此同时(这些销售增量是由哪种促销活动造成的?)

2.定义一个 粒度 为用例:

  • 时间 粒度:是每天还是每周进行分析?

  • 项目 粒度:按文章划分一个时间序列?按产品系列?有时,如果按时间元素计算的销售单位数量不够多,或者时间序列过于断续,就无法降低粒度。您可以 销售总额 将 更平滑, ,音量问题较少,但有时会 缺乏可解释性.

因此,如果时间序列足够清晰,一个好的起点就是采用最细粒度的方法(例如产品 X 日,尤其是在使用 Prophet 的情况下,就像我们在这个项目中所做的)。.

3.拥有 明确的晋升范围促销活动包括哪些产品/产品系列?促销活动是否在全国范围内策划?(如果不是,就不能将某一产品在全国所有商店的销售情况汇总起来)。

检查并准备好 data 后,就可以开始建模了。.

建模

首次迭代和主要收获

我们 开始 我们的首次迭代 先知 因为它使我们能够 底线 非常 很快, 轻松添加 回归者, 和 解读 由于采用了加法分解,结果自然而然就出来了。.

以下是我们在项目中主要的迭代改进总结:

基本上 主要改进 来自 回归者 我们补充道:

  • 处理 特别活动 (黑色星期五特别重要)
  • 时滞 (即使先知模型是自回归模型,我们也增加了过去销售额和未来销售额的滞后期,事实证明这对模型的准确性非常有用)。.

最后,调整衡量预测准确性的方法(见下文 "评估 "部分)也有助于更准确地评估性能。.

我们为什么要改用 XGBoost?

尽管先知具有良好的性能和可解释性,但我们意识到 XGBoost 最合适, 原因是多方面的:

  • 我们曾 超过 1000 个时间序列 意即 1000 多个先知模型 来训练。.
  • 先知已 费解 非线性关系 特征之间的关系及其对目标的影响。这 特征交叉 该问题在 本条.
  • 我们到达了 相同性能 虽然 减少 系数 10 培训时间.

评估和限制

评估

如上所述,在反事实预测中没有基本事实,这使得绩效评估比传统预测更为复杂。.

不过,我们找到了一种方法来衡量我们的业绩,或者说尽可能精确地估计我们的业绩。方法如下

在经典预测中,我们通常使用 交叉验证 战略(此处:, 扩展窗口)在某一验证期(如可用的 data 的最后一年)。在这一验证期内,我们测量性能的实际窗口在每个折叠中都会发生变化 (“评估窗口”前 data 用于滞后特征 (“Data用于预测”).在促销用例中、, 我们在评估窗口后添加一些 data 以重现 培训-推理工作流程 建议的方法 “一节中描述。.

因此,我们可以将这种交叉验证策略应用于 data子集,其中没有促进, ,以预测精度 (FA) 作为衡量标准。.

通过这种方法,我们能够达成以下共识 预报精度接近 90% 这与我们在其他经典预测项目中取得的成绩不相上下。.

尽管这种性能可以令人满意,但我们的方法也有一些局限性。.

限制

  • 首先,有些 外部因素 是 不考虑. .例如,媒体宣传。这些外部因素可能会对销售产生(积极的)影响,因此我们 可能会高估 的 振作 所研究的促销活动产生的.
  • 其次是 持久促销:的确 移除 相当数量的 日期 从 培训 dataset。.

  • 最后但并非最不重要的一点是,整体宣传效果有待提高 考虑到 多重效果,如 蚕食、光环效应、预期/储存效应, 详见最后一节。.

更进一步和今后的步骤

改进建模

在衡量促销活动的净影响时,可以加上几种效果:

  • 蚕食:一种产品正在促销,因此更具吸引力,这将对同类产品的销售产生负面影响。.

  • 光环:产品正在促销,因此更具吸引力,这将对 “经常一起购买 ”产品的销售产生积极影响。.

  • 期待:顾客在促销前购买的折扣产品较少,因为他们知道价格会更有吸引力。.

  • 存储:顾客在促销活动后购买的折扣产品较少,而在促销活动期间购买的商品比平时多。.

由于选择的粒度(家庭层面)的原因,前两个影响未被纳入我们的分析,而后两个影响在我们的项目时间内很难彻底量化。.

概括地说 净增销售额 可以用瀑布图来表示促销活动:

超越后验分析

如前所述,一旦完成了对过去晋升情况的(后)分析 (A阶段),就可以 进一步 由 预测 未来 晋升 (B阶段),最后提出一个 优化 的 促销计划 (C阶段).

当然,预测(估算)促销活动的未来盈利能力比估算以前促销活动的盈利能力要难,因为我们有以下条件 促销期间没有 data. .我们的想法是 再利用 的 模型 在 A 阶段开发 使用 data 不是历史上的 data,而是 根据经典预测模型预测的 data, 具体如下

首先,在可用的 data(直到今天)上训练经典预测模型:

然后,使用该模型进行预测(预测的时间段必须涵盖 “基线模型 ”将使用的时间特征范围):

最后,在第一个模型预测的基础上,利用时间特征使用训练有素的基线模型,估算出基线,从而得出销售额提升:

当然,由于两个叠加模型的误差是相关的,因此这一过程的不确定性更大。.

最后,为了优化推广计划,该战略包括利用前一阶段所做的工作来 选择 的 最佳推广参数组合 以便 优化 a 业务指标 如投资回报率。.

结论

使用 反事实预测 解决业务问题是 殊为不易 在文献中可以找到。.

然而,我们看到,这可能是一个 强大工具 的问题 评估 彻底 性能 的 过去的晋升, 通过 预测假设销售额 (底线)。我们还探讨了自回归(Prophet)或梯度提升(XGBoost)模型的特征工程建议。最后,我们详细介绍了进一步完善分析的一些指导原则,这些指导原则比单纯的后验分析更进一步。.

感谢在这个项目中与我合作的 data 科学家们:Kasra 和 Ombeline。还要感谢 Artefactors 谁校对了这篇文章。.

中号 Blog by Artefact。.

本文最初发表于 Medium.com.
在我们的 Medium Blog 上关注我们!