随着数字营销4.0的日趋成熟,大数据营销成为营销科学的研究重点,而其中,销量的准确预测具有重要意义,它对于自身营销规划、市场分析、物流规划都有重要意义。但是销量的预测受影响复杂,传统的基于统计的计量模型,比如时间序列模型等由于对现实的假设情况过多,在实际场景中应用,本文利用R语言和Python梳理并实现了当前主流的电商销量预测方法:第一类是计量统计模型,以ARIMA为代表;第二类是机器学习模型,主流的是基于树的集成学习,第三类是深度学习模型,主要以循环神经网络LSTM/GRUs为主的深度学习框架。本文详细介绍并通过实际数据实现以上三类基本预测方法。
关键词:数字营销4.0;销量预测;计量统计;机器学习;深度学习;
电商在目前的市场份额中占据了越来越重要的程度,随着企业和个人持续产生大量的数据,同时迎来包括移动互联网、云计算、人工智能、物联网等新兴技术的创新和发展,目前营销正在从以人为核心的营销3.0向以数字时代为核心的营销4.0迈进[1],营销4.0的核心即是将消费行为的整个路径数据实时追踪和记录,洞察背后的需求,制定相应合理有效的营销战略方案,但是在整个组织中负责数据科学任务的分析师通常具有关于他们支持的特定产品或服务的深厚领域专业知识,但通常没有时间序列预测方面的培训。这不仅是企业或品牌所迫切面临和解决的问题,也是大数据营销学术研究的意义所在。
电商销量预测,依赖于科学的预测理论方法和合理的预测模型,国内外学者在这方面做了大量的工作[2-4],进行了深入的理论探索,并提出了很多针对实际数据的方法,电商销量预测有两个大致的方向:一个是因果推断,从机理出发,基于电商消费行为对销量的刻画,重在对市场营销进行指导,多采用基于概率的方法,虽然精度较差,但是可解释性强;另一个是数据驱动法,也即从数据角度,利用机器学习、深度学习等,主要是与销量,从海量的历史数据和相关数据中发掘信息,随着数据采集、存储难度下降,大规模计算变得越来越容易,通过模型来解决上述问题变得越来越多样,本文将聚焦于当前研究和应用算法,利用R/python来实现。
模型驱动方法可以分为以下四个基本类型:第一类是计量统计模型,以时间序列、灰色模型为代表,第二类是机器学习模型,如随机森林(RandomForest)、支持向量机(SVM);第三类是深度学习模型,利用多层神经网络构造非线性函数,对应复杂的假设空间,使神经网络函数具有强大的模型拟合能力。主要是以循环神经网络RNN和卷积神经网络CNN为结构的seq2seq预测方法,本文将评价并实现其中的主流模型。
在第1节,会介绍三种基本类型,并比较各类方法的优缺点和适用场景。第2节将对其中的主流和最新的方法进行实现和对比,第3节是总结和展望
销量预测,顾名思义,是根据历史数据来预测接下来一段时间的销售数量,由于顾客购买是一个复杂决策,通常会考虑价格、评论数、星级等产品属性,或是个人点击、评论等消费属性等因素,这些数据均带有时间标识,构成了多元的时间序列。在不同的应用场景和数据质量情况下,用到的数据也不同,有时会直接对销量进行建模,更多情况是联合其它相关信息而展开。
前人利用不同的方法,对销量预测展开研究,李俊等(2012)[2]将GM(1,1)模型、非线性三次指数平滑预测模型和二次回归预测模型相结合组成了组合预测模型,依据某企业前10个月的销量,预测后两个月的销量。Singh等(2014)[3]将人工神经网络和模糊时间序列相结合,确定历史时间序列的间隔期,将不同间隔期的时间序列分为不同组进行预测。Li等(2015)[4]建立了动态自适应的BP神经网络学习算法来预测四川省消费产品的总销售额,提高了预测的准确度。
为了辅助解决其它问题,我们需要提前了解下一阶段的销量数据,由于复杂性和噪声的因素,预测具有相当的随机性。在计量统计模型中,常常以概率分布表示随机性,用置信区间描述随机变量的置信度,同时,也能反映一定的因果关系。概率区间预测是进行置信区间描述的重要方法。
自回归滑动平均(ARMA)是一种常见的时间序列模型,能够很好地刻画平稳时间序列之间的线性动态过程。由于实际情况中电商销量是非平稳的时间序列,建模之前需要通过差分运算对数据进行平稳化处理,以消除趋势项和周期项。即建立自回归积分滑动平均(ARIMA)模型。文[]运用ARIMA模型对销量预测,ARIMA模型可以表示为如下形式[5]:
由于概率预测需要考虑各个数据所近似的分布,很多情况下,不同产品在不同月份都无法保证服从同一参数分布,因此,实际使用中常使用非参数方法估计误差的分布函数。但是这些方法更多的是提取信息而非预测,所以在实际使用中,用的较少。
机器学习模型从历史数据学习规律,并将规律应用到未知数据上,是一种常见的预测方法。常见的机器学习方法有Logistic Regression、SVM、Naive Bayesian、BP神经网络等方法,在此基础上,根据实际情况有修改,但是,在做机器学习模型过程中,需要注意对特征工程的建立,良好的特征工程决定了结果的优劣。
针对时序的本身特点,我们介绍两种主流的应用方法,LightGBM以及Facebook提出的一种解决模型prophet。
LightGBM是由微软在2017年提出的,在GBDT树模型的基础上,采用梯度Boosting框架对模型进行了改进[6],在保证训练效果的基础上,优化了训练速度和空间效率,甚至在面临数据量很大、特征很多的情况下,LightGBM都能表现出优秀的训练效率和准确率。目前,LightGBM算法在处理分类和回归问题时表现优秀,曾被用于电商平台的销量预测,本文将同时构建基于LightGBM算法的销量预测模型,用于对比实验。
LightGBM算法通过引入基于梯度的one-side采样和互斥的特征捆绑,使得该算法在面对需要处理大数据量和高维特种的场景时,与同类型的XGBoost和SGB等树模型算法相比,在计算上它主要采用了直方图算法,速度和内存消耗使占据明显优势。
Prophet是由Facebook提出的一种“大规模”预测的实用方法。它打算通过提供简单和可调的方法来自动化业务时间序列的公共特性[7]。
Prophet是一种基于可加性模型预测时间序列数据的算法,在该模型中非线性趋势符合年度、每周和每日的季节性,以及假日效应。它最适合于具有强烈季节效应的时间序列和历史数据的几个季节。Prophet对于丢失的数据和趋势的变化是稳健的,并且通常能够很好地处理异常值。
深度学习是作为机器学习的一个分支,最近这几年的发展可以说是日新月异,深度(多层)架构用于映射输入或观测特征与输出之间的联系[8]。这种深度架构使得深度学习特别适合处理复杂的大批量数据,同时,它将特征当做学习的一部分,所以不需要进行复杂的特征工程。典型的两种是卷积神经网络(CNN)和循环神经网络(RNN),其中CNN主要是由稠密的神经元通过不同的卷积核降低参数量从而提取信息。而RNN是将前几个时刻的输入存储在网络中,并影响到后续神经元的计算,理论上讲可以持续下去。所以可以逐级表示越来越抽象的概念或模式。
LSTM是一种特殊的RNN网络,在销量预测过程中,相关文献和实践也表名了具有更高的检测精度。LSTM神经网络是在RNN网络[9]的基础上,改进了传统RNN的神经元内部结构,主要解决了RNN面对长时间依赖而导致模型拟合较差的情况,可以使网络记忆更长时间的内容[10-11]
图1 LSTM神经元结构图
其核心公式如下,其中激活函数sigmoid函数,传导由前时刻传来的信息。完成神经元信息的更新。
这六个公式,保证了LSTM的长程依赖以及防止梯度消失。GRU是LSTM网络的一种效果很好的变体[12],它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种网络。GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依赖问题。
除此之外,还有其他的,例如图卷积网络GNN[13]、时序卷积网络TCN[14]等框架,由于缺乏足够的解释性和本身结构的复杂性,目前在销量预测场景中尚不普及,但是在物理网预测、股票市场预测中,逐渐发挥作用,取得SOTA效果。
电商销量预测具有较强的非线性、非平稳性,针对我们提到的预测方法由于侧重点不同,各有优势,在实际应用中,可以针对不同的情况选择合适的方法,同时,也可以采用适当组合的形式获得更好的模型效果。这部分将利用一大一小两个实际数据集,来实现上述提到的模型。
本次共准备了两个数据集,分别来自数据科学竞赛平台Kaggle以及通过爬虫爬取的天猫某产品数据。其中,kaggle的数据集超过5G的数据,主要是来自厄瓜多尔不同的费沃里塔商店中数千件商品的销售量[16],条数达1.2亿条。训练数据包括日常销售(包括促销情况)、商店和商品信息。经过处理截取了2016-01-01到2017-12-25的近两年的数据(下表)。其中store_nbr,item_nbr分别代表店铺、商品ID,unit_sales根据产品情况来定,如果是称重则为浮点数,个数则为整数。
表1 销售原始记录表
经过处理,销售数据形式如下,一共594天的记录,每天有174,685条。
通过爬虫用自己的数据集做计量相关模型,采集了2021年1月-2月的1144款商品共计104,000条销量数据。其中,采集频率为6h一次,按天聚合后,并从中提取中某一产品进行测试(如下表)。
考虑在实际应用中到并没有能够所有情况的银弹模型,遵循“奥卡姆剃刀”原理,我们根据实际数据来选择合适的算法。不同模型性能在不同的数据集中具有不同的表现(图)。可以看到,随着数据量的增大,深度学习为主的模型表现会显著提升。所以,我们会选择小数据集的
图2 数据量与模型性能关系图
在对数据进行必要的空缺值填补等预处理后,得到了可用数据,并对数据集进行20%测试、80%进行训练的划分用于观察训练效果好坏。
Arima模型
利用R语言的forcast包,自动提取(p,d,q)分别为p=1,q=0,l=0。最终预测一周。结果见下图。可以看到,其置信区间还是很大,预测精读并不理想。
图3 Arima模型预测趋势及置信区间
Prophet模型
利用R语言的prophet包,设定相关参数,由于prophet仅是对时间和取值进行建模,所以是单指标的预测,但是区别于Arima,它允许我们对异常突变点、周期进行调节,由于产品销售的周期性波动,例如季节性商品,会出现突变点,在长期预测过程中,有时候我们需要考虑异常,有时需要消除异常,可以通过changepoint.prior.scale 来调整稀疏先验的程度。
图4 Prophet 销量预测趋势图及置信区间
同时,prophet由于采用加法模型,可以看趋势分解,寻找周期性规律。
图5 prophet周期-趋势分解
由于销量预测的场景是在多元指标构建过程中,同时,伴随大数据的出现,数据量通常是大批量的,所以我们需要考虑用更为复杂的机器学习和深度学习来实现。
LightGBM模型
LightGBM,主要利用python中的相关packages。由于机器学习的重点是需要特征工程,在这里,我们主要从时间上去构造,主要包括时间窗口范围内的近期值、求和、求分位数以及是否有促销等。主要利用python的pandas完成。
考虑到树的模型容易过拟合,通过参数max_depth的降低;min_data_in_leaf最小记录数减小过拟合。
最终,计算的三期预测损失为:0.38, 0.35, 0.40。
GRUs模型
首先,采用z-score对数据进行标准化处理;
然后,利用基于Keras的CudnnGRUs来加速训练,这是一个seq2seq模型,参考web流量预测解决方案的架构。编码器和解码器都是GRUs。编码器的隐藏状态通过FC层连接器传递给解码器。这对于显著提高精度是很有用的。最终的模型损失图如下在训练轮次仅为20轮的情况下,模型损失就低于了机器学习利器Lightgbm。利用该模型,就可以对销量进行有效的预测。
电商销量预测在产品规划、库存、品牌宣传等方面具有重要作用,在实际应用过程中,需要根据实际的业务场景、数据特点和计算资源灵活选择,基于统计和传统机器学习的算法方法相对简单,计算快,可解释性强,即使没有相应的工具也可以自己去实现,而涉及深度学习等模型,虽然在准确率性能上有优势,但是想真正掌握和应用门槛较高,同时需要对时序数据在频谱上有深刻的内理解。
对于感兴趣的读者,也有一些其它的关注点可以深入,比如近期出现的以亚马逊提出的DeepAR为主的AutoML又逐渐成为了热点,对于在电商/金融二级市场上动辄数十个大类成百上千甚至更大体量的商品,不可能一一构建模型,就可以利用DeepAR思想来实现多维和时间内在关联特性等综合考虑的模型。
参考文献
[1]杨扬, 刘圣, 李宜威和贾建民. 《大数据营销:综述与展望》. 系统工程理论与实践 40, 期 08 (2020年): 2150–58.
[2]李俊,何刚.基于组合预测的商品销售量预测方法[J].统计与决策,2012,(8).
[3]Singh P, Borah B. An Effective Neural Network and Fuzzy Time Series-Based Hybridized Model to Handle Forecasting Problems of Two Factors[J]. Knowledge and Information Systems,2014,38(3).
[4]Li X, Xiang S, Zhu P, et al. Establishing a Dynamic Self-Adaptation Learning Algorithm of the BP Neural Network and Its Applications[J].International Journal of Bifurcation & Chaos,2015,25(14).
[5] 张浒.时间序列短期预测模型研究与应用[D].华中科技大学, 2013
[6]KE G.,MENG Q.,Finley T.,WANG T.,CHEN W.,MA W.,YE Q.,LIU T.Y. Lightgbm:A Highly Efficient Gradient Boosting Decision Tree[J].In Advances in Neural Information Processing Systems,2014:3149-3157.
[7] Taylor SJ, Letham B. 2017. Forecasting at scale. PeerJ Preprints 5:e3190v2
[8] Canny, John. A Computational Approach to Edge Detection[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 1986.
[9]Andrej Karpathy. The Unreasonable Effectiveness of Recurrent Neural Networks[DB/OL].http://karpathy.github.io/2015/05/21/rnn-
effectiveness/.
[10] Greff KSrivastava RKKoutnik J, et al. LSTM: A Search Space Odyssey.[j].IEEE Transactions on Neural Networks&Learning Systems, 2016
[11]N. Srivastava, E. Mansimov, and R. Salakhutdinov. Unsupervised learning of video representations using lstms. In ICML, 2015.
[12]Cho K , Van Merrienboer B , Gulcehre C , et al. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation[J]. Computer Science, 2014.
[13]He Y , Zhao J . Temporal Convolutional Networks for Anomaly Detection in Time Series[J]. Journal of Physics: Conference Series, 2019, 1213:042050-.
[14]Shaojie Bai, J. Zico Kolter, and Vladlen Koltun An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling. Technical Report, arXiv:1803.01271, 201
[15] https://www.kaggle.com/c/favorita-grocery-sales-forecasting