最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
开启左侧

[模型实践] 新零售中的智能补货(II)— 需求预测

[复制链接]
发表于 2020-4-17 17:34:10 | 显示全部楼层 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 乔帮主 于 2020-4-17 17:52 编辑

文章作者:阿里零售通算法团队
出品社区:DataFun
注:3月15日,深圳,阿里零售通技术沙龙,识别文末二维码报名。

上一期讲到,要让新零售的补货系统根据当前库存状况智能地生成补货策略,除了要通过库存模型对现实的情况进行抽象,简化为整数规划模型之外,我们还需要对未来的需求分布进行精准的预测并作为库存模型的重要输入。这一期分享一下我们在零售通场景下销量预测的一些实践和经验。

▪ 总体方法

不管是传统零售还是新零售,需求预测永远都是一个意义重大且极具挑战性的问题。一方面,如果能准确预测出未来的需求,那么它将作为最可靠的依据,帮助公司精准决策;另一方面,未来的需求受到很多不确定因素(比如用户教育、市场推广、营销计划甚至天气等因素)的影响,导致准确的需求预测就像窥探“天机”一样困难。

传统零售在线下渠道的数字化上投入的资源不多,导致许多需求预测全靠从业人员的“专家经验”。这种纯粹凭个人经验和感觉的预测方式使得供应链库存经常高企,同时又有很多爆品的缺货发生。新零售带来的渠道数字化变革使得所有的预测和决策都“有数可循”,从根本上解决了“人治”带来的诸多困难和不确定性,使得完全通过数据驱动的需求预测和智能补货成为可能。

在机器学习的范畴,需求预测是一个典型的“回归”(Regression)问题。算法可以通过历史数据,以真实销量作为数据样本,不断调整模型参数,自动的学习到预测的最优解。我们需求预测的总体方法也是以机器学习模型作为主线的不断迭代。

1.webp.jpg

基于机器学习的销量预测总体方法

这里,我们的预测模型经历了从均值模型,到时间序列模型,再到机器学习模型融合,最后到深度学习的尝试这一系列优化,最终在我们的预测线上系统中取得了理想的结果。下面将分别详细介绍每一次技术迭代的细节与其中的思考。

▪ 均值模型 & 时间序列模型

顾名思义,均值模型对历史一段时间的销量求均值,并作为未来每个时刻的需求预测:

2.jpg

时间序列模型是分析时间序列并进行预测的一种最通用的方法。在金融领域中,该方法得到了最广泛的应用。它主要通过对历史序列的分析和建模,将序列中的“趋势”和“白噪声”分离出来,最后通过对趋势的预测得到未来一段时间需求的变化。一些典型的时间序列模型有自回归滑动平均模型(ARMA)[1],差分整合移动平均自回归模型(ARIMA)[2],自回归条件异方差模型(GARCH)[3];还有一系列指数平滑模型,比如三次指数平滑模型(Holt-Winters)等。

3.jpg

我们在零售通平台上对不同的时间序列模型都做了深入的试验和构建。总体来看,每个模型都在部分单品上表现优秀,但在其余品上无法做到准确的预测。究其原因,还是因为时间序列模型仅仅使用“历史的销量序列”来做预测。显然,我们的数据还包含了比销量丰富得多的数据,比如品仓特征,流量,动销用户数,运营计划等。这些都会对未来的需求产生不同程度的影响,而使用好这类数据只能通过机器学习模型进行预测。

▪ 机器学习模型

前面讲到,需求预测是一种典型的回归问题。因此我们可以用机器学习的标准范式和流程进行解决,这里就不再具体详述,而主要向大家分享两点在实际处理中的经验。

1. 特征工程。不同于其它机器学习模型,需求预测所构建的特征大多都是从历史的时间序列得到的。因此,如何从历史的时间序列中抽取特征就成为决定模型预测是否准确的关键。通常的时间序列抽取方法有滑动窗口平均值(比如过去7天平均、过去30天平均等),序列统计特征(最大最小值、方差、偏度、峰度等)。除此之外,我们在实践中还构建了很多高阶的特征,比如利用时间序列模型得到的预测值,还有通过多项式拟合时间序列得到的多项式系数等。除了历史的时间序列特征,我们还抽取了品仓的特征,作为该单品的固定属性。

4.jpg

2. 模型的个数。我们需要预测的品仓个数多达上万个,每个品仓的销量尺度都大小不一。有的品仓每天的销量多达上万个,有的却不足十个。在这样大尺度的品仓销量下,我们应该构建多少个机器学习模型对数据拟合并预测呢?有两种极端的方法。一种是对每个品仓进行建模。这种方法在实际操作中这是不可取的,一方面它会构建上万个机器学习模型,消耗大量的计算资源,导致模型难以计算和维护;另一方面模型没有用到品与品之间的相似性,无法得到准确的预测结果。另外一种方法是对所有的品仓构建一个统一的模型。这种方法虽然技术上最容易实现,但是它对模型本身的要求变得极高,需要模型在处理不同尺度上的预测都具有很好的表现。我们在实践过程中采取了折衷的方法。首先对品仓按照销量进行分层,然后对不同分层的品仓集合单独建模。一方面,同一层的品仓在销量尺度上大致一直,降低了对模型本身的要求;另一方面又可以用到品仓之间的相似性,提升了模型的泛化能力。同时,少量的模型也易于计算和维护。

▪ 运营计划的引入

上面讲到的无论时间序列模型还是机器学习模型,都只使用了历史的数据进行需求的预测。这些数据在通常的时间序列预测问题中已足够。未来所发生的某些数据波动都可以当作模型的“噪声”。但在新零售的场景中,未来的某些数据波动有可能是人为造成的(比如双11大促等)。如果我们提前知道了未来的运营计划,就可以对这些“噪声”进行较为准确的预测。

营销对未来的需求产生作用的手段无非就是“引流”和“降价”两种。前者增加了某个商品的曝光量,而后者主要提升了单品的曝光转化率。这两种手段都会在不同程度上刺激了用户的需求,带来销量的提升。从数据和算法的角度,如果我们知道历史上已经发生了哪些营销活动(比如去年的双11活动),并分析出它对营销期间销量的影响,就可以大致估计出未来的营销计划对需求的拉动作用,作出营销期间较准确的需求预测。

除了营销的影响,供应链运营的某些行动也会导致销量的波动。比如单品从上级仓转换到下级仓(下沉),品仓的汰换,出清等等。如果我们提前知道了这些运营计划,就能对未来的品仓进行准确的预测。在零售通的需求预测实践中,我们主要通过将营销计划转化为特征的方式来引入到机器学习模型中。

5.webp.jpg

从实际效果来看,在加入了运营计划等特征后,模型在促销期间的需求预测准确率得到了明显的提升。

▪ 深度学习的尝试

传统机器学习的一个弊端就是需要人工构建模型的特征,而在某些场景下深度学习可以自动生成显著的特征,端到端的解决模型预测问题。在零售通的需求预测里,我们也做了一部分深度学习的尝试。

我们可以对获取到的数据分为两类。一类是历史的销量,流量,转化率等时间序列连续特征,它们可以通过深度学习模型进行特征编码。另一类是营销计划,品仓属性等离散特征,比如活动玩法,仓库所覆盖的城市等。它们由于特征的稀疏性,很难直接通过深度学习模型进行特征编码。(embedding方法除外。)因此,我们借鉴了推荐搜索中的Wide & Deepmodel[5],将时间序列特征放在Deep部分,强化它们的特征编码能力,同时将离散特征放在Wide部分,引入到模型的最后一层中进行预测。

6.jpg

为了更加适应历史时序这种特殊的数据结构,我们修改了Deep部分的网络结构,从全连接层变换到CNN、RNN等Deepencoders。这样,处理时序模型的各种深度学习技术(比如注意力机制等)都可以引入到该框架中。在某些品仓中,我们的深度学习模型得到了比传统机器学习更加稳定和优异的效果。

▪ 需求预测的误差

前面讲的需求预测总体方法都聚焦在如何得到需求的某一个值,而库存模型需要的输入是一个需求的分布。在需求正态分布的假设下,我们还至少需要给出需求的标准差,才能输入到库存模型中得到最终的补货量。在我们的实践中,估计需求的标准差主要用到了以下两种方法:

1. 如果预测模型使用的是ARIMA等时间序列模型或者线性回归模型,我们可以通过模型拟合的误差计算出参数的误差,进而给出预测目标的标准差。事实上,这种处理预测误差的方式是贝叶斯模型(Beyesian model)的一个特例。在线性回归模型中(ARIMA时间序列模型可以当成一种特殊的线性回归模型),参数的误差可以通过解析表达式计算得到。如果我们使用了较复杂的机器学习模型,那么要得到预测的分布需要Gibbs抽样,这就增加了模型计算的复杂度。

2. 第二种方法是通过对比历史回测中的真实值与预测值,得到预测值偏离真实值的标准差。这种方式相比与贝叶斯模型计算更加简单直接,在一般情况下也能估计出模型真实的预测误差。更重要的是,这种方法不依赖具体的模型,无论我们最终用GBDT还是Deep & Wide Model进行预测,它都能估计出一个较为准确的误差。我们在实际运用中也是以这种方法为主来得到预测的标准差并作为库存模型的输入。

以上就是新零售场景下我们在需求预测中的部分实践。从总体技术框架上,它与传统的机器学习回归问题的技术演进路程差异不大,这里仅仅是提纲挈领地分享了我们在每一步迭代中的方法和经验供大家参考。对于具体的场景和具体的数据,我们也会通过不断优化数据处理和模型构造的各种细节来得到最大幅度的准确率提升,这里就不再一一详述。希望我们的分享能够抛砖引玉,以文会友,让大家对我们在新零售场景下的补货和需求预测算法有所了解,并提出建议和共同提高。

上期文章:

阿里新零售中的智能补货(I)— 库存模型
参考文献:
2. https://en.wikipedia.org/wiki/Au ... ated_moving_average
3. https://en.wikipedia.org/wiki/Au ... _heteroskedasticity
4. PrajaktaS. Kalekar. "Time seriesForecasting using Holt-Winters Exponential Smoothing"
5. Cheng H T, Koc L, Harmsen J, et al. Wide& Deep Learning for Recommender Systems[J]. 2016:7-10
楼主热帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-16 12:11

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表