专业需求计划,Holt-Winters和XGboost

哈伯,你好!

该网站上有许多文章预测各种快速消费品的售罄,而其他产品类别并不那么受欢迎。 此外,通常会提前几天预测零售业,而不是提前两个月预测分销商-尽管后者比定货零售商更倾向于定性预测。 另外一个挑战是,在选择预测技术的意义上,有必要考虑分销商很大一部分的保守性。 可以很容易地想象到预测公司中间业务的做法:在人造Excel工具中从SAP +主数据收集销售额,在这种情况下,自动化受到相当简单的预测方法的限制,与HoltWinters形式的火箭科学的平均/线性趋势相差不远。

碰巧的是,在值班期间,我遇到了一家廉价装饰化妆品品牌(约500 SKU)的制造商,并看到保守的预测以低KPI的形式带来了可悲的后果。 有必要对计划系统(包括预测过程)进行少量更改,然后我将讨论我的研究。

现状贝卢姆


多年来,该品牌的主要头痛是服务水平极低( CSS =已发货/已订购 ),大大低于公司的平均水平,基于平均销售额的预测Forecast =平均销售额 )加剧了该水平。 恶性循环:客户订购量大,未收到全部数量,下一次需求增加,我们仅根据已满足的需求计划未来。

基于此,我们决定不预测销售量,而是预测已清除重复的订单(即,如果客户每周要购买100件和订单,我们假设每月需求为100件,而不是400件),那么这里进一步的销售,我们将称清除重复的订单。 在提高服务水平之后,条款之间的差异得以拉平。 公司使用公式( 预测准确性=(1-事实与预测之间的差异模块的总和)/预测 )来估计公司中预测的准确性,我们将使用它。 重要事项:这种情况下的预测是滞后2的预测,即 如果我们评估10月份的准确性,则将10月份的销售额与8月份的预测进行比较。 认为超过35%的结果可以解释为令人满意的。 顺便说一句,这里值得注意的是,实际上我们最初并不期望准确性会提高-我们期望服务水平会提高,我们将根据向客户发货的货物质量评估结果。

我不需要花太多时间来进行培训的样本-尽管该公司没有分析DWH,但是按月上传的订单数已经被收集并清除了一个小的Python周期。 同样,我们获得了主数据。 由于最大的噪音(我们害怕添加的噪音多于有用的信息),因此在计算中必须忽略事件和促销,因为最大的零售商会定期进行促销,而无需达成协议或通知,估计事件的数量等。

作为模型,我们决定使用3个分支-朴素,指数平滑和机器学习。

天真的预测


天真的预测仍在使用的主要原因是人类易于理解。 确实,如果公司习惯于使用5 Why方法来详细分析每个代码,则平均预测将非常合适。 客户平均每月订购10件吗? 按照逻辑,他下个月将订购10件。 结果不是我们预期的结果,客户订购了50件? 可能是客户根本不知道如何预测/自动订单已损坏/机器人大怒等。您应该实施联合预测并交换文件以减轻压力并提高预测准确性(当然是个玩笑,但有些道理)。

为了使方法更具相关性,我们建议商品的季节性与类别的季节性相同(使用statmodels包标识季节性,图片显示3个主要结果)。

图片

我们采用了4种方法-整个销售历史的平均值和中位数(准确度分别为0.32和0.30)和最后6个点(0.36和0.26)。 0.36将是我们的基准-将来我们必须获得更好的结果。

ESM预测


指数平滑通常是需求计划中的最终梦想,并且很容易理解为什么。 前额的准确性评估显示,就准确性而言,ESM和ML的可比性结果最少,它们被包括在所有工业预测系统(JDA,Oracle RDF等)中,计算速度更快且更易于解释-这就是经典比所有生物都活着的原因。 另一方面,由于特征准备不足,结果可能并不完全真实。

为了进行预测,我们使用了相同的statmodels包。 首先,我们在整个销售历史中采用Holt类,并具有明确的团体季节性和最后6分(准确度0.34和0.37)。

接下来,我们将SKU分为2组-HoltWinters班级预测了历史悠久的产品,而对于较短的历史,我们将Holt保留6分。 结果好得多-0.44,这很容易解释。 如果在顶层看来所有商品都是孪生兄弟,那么转到子类别,我们可以看到不同之处。

图片

机器学习预测


标准方法的主要缺点是缺乏计算深度,因为 我们不会使用所有可用信息。 例如,事件的历史记录:通常,在经典方法中,我们应该从历史记录中减去发生的管道,进行基线预测,并使用适当的日历添加计划的管道。 如果事件的记录不够准确,结果可能会令人失望(对于Holt-Winters,我们设法达到-5 pp的准确性)。 可以提出许多原因-例如,KAM类别被低估以显示超额完成并获得奖金。 如果我们从方法( Forecast = Baseline + Pipes )转到基于要素的预测,那么我们将能够获得更多可用信息。 为此,我们已编制了50种功能的列表(价格,主数据,销售,拆分客户等)。 在Sklearn库中,我们采用了基本的Lasso / Ridge / KNN回归器,它通常会很快赢得胜利,但是在我们的案例中,只有KNN满意,准确度为0.44。 随机森林在小样本中具有良好的性能,在我们的例子中,准确性为0.48。 好吧,当然,我们没有忘记Xgboost,它经过一点交叉验证就产生了最好的结果-0.51。 以下是每个模型精度的图表

图片

顾虑


关于在预测销售中使用ML的保守主义者可以做什么? 例如,反馈:许多电子商务和线下零售商都使用神经网络和梯度增强技术,并定期用疯狂的订单吓you您。 是的,当然,如果零售商会衡量预测的准确性,那么结果可能是乐观的,但这在某种程度上是一种自我实现的预言:如果出现错误,则打开网络的销售/黑色星期五/生日等。

因此,对我们来说,重要的是证明Xgboost的结果不仅更准确,而且更稳定(而不是随机轮盘,因为似乎没有准备好的滑翔机)。 为此,我们比较了HoltWinters的分布和Xgboost的误差分布,并确保后者的结果在零附近具有较密的中心,并且是轻尾的

图片

图片

中间结果


自从开始撰写本文/首次运行预测以来,由于取得了积极的成果,另外2个品牌的装饰性化妆品已转换为Xgboost。 到11月底,服务水平的平均增长为+ 16%,即 达到了公司的平均水平

品牌品牌十一月SL FY1920财年11月SL三角洲
品牌173%89%16%
品牌280%85%5%
品牌363%93%30%
合计73%89%16%

Source: https://habr.com/ru/post/zh-CN479308/


All Articles