基于BP-AdaBoost的电商短期销量预测模型①
2021-02-23王丽红
王丽红
(烟台汽车工程职业学院 经济管理系,烟台 265500)
近年来,电子商务的发展势头强劲,一度对传统的实体经济产生了非常大的冲击.仅2019年上半年,销售额已经达到了惊人的195209.7 亿元[1],且2019年天猫双十一购物节活动成交额突破100 亿,仅用了1 分36 秒,这在以往的传统零售行业内几乎是无法想象的[2].随着电商行业的兴起,国内涌现出天猫、淘宝、京东等大型电商平台,并产生了B2B、B2C、C2C 等许多新模式,这些足以看出电商行业巨大的发展潜力[3].
由于电子商务具有数据化、集成化、互动化的特性,使得电子商务会计系统与其他传统会计系统相比具有更大的数据规模,同样也蕴藏了更多待挖掘的数据信息[4,5].各电商企业在产品销售过程中会产生大量的销售数据,如何处理这些销售数据,并从中发掘销量变化的规律,指导电商企业制订策略,对电商企业管理具有十分重要的意义[6].同时,销量预测也是新型电子商务会计系统中一个重要的组成模块[7].
目前,各个行业的销量预测方法大多是依据历史销量对未来销量的预测.付敏娟等人考虑了指数平滑模型较大的预测误差和神经网络的过拟合问题,提出了用二次指数平滑序列改进BP 神经网络的指数平滑神经网络太阳能热水器销售预测模型[8].圣文顺等用遗传算法改进传统的BP 神经网络,并用时间序列对模型进一步校正,大大降低了预测误差[9].王建伟利用产品销售共性提取产品聚类簇,再使用时间序列模型得出预测结果并通过隐马尔科夫预测模型给出预测结果的概率分布[10].上述销量预测方法均采用常用的时间序列模型,说明基于历史数据的销量预测具有更高的可行性和可靠性.由于BP 神经网络存在的过拟合、收敛慢、误差大等问题,采用其他方法对神经网络进行改进也是较为可行的方法.
本文建立了一种电子商务会计系统中的短期销量预测模型,其以日销量为预测单位,并考虑电商行业内较为常见的“周末效应”改进时间窗的时序设计和预测模型结构.运用AdaBoost 思想集合多个传统的BP 神经网络的预测结果,通过增加弱预测器数量重点学习预测错误的样本并分配预测器权重,根据预测器权重组合多个BP 神经网络(以下简称BPN)的模型输出建立一个准确率更高的预测模型.短期销量预测对于迅速反应电商行情变化,制订短期内稳定销量的应对方案和促销计划具有重要的意义.
1 AdaBoost-BPN 预测模型的建立
1.1 BPN 弱预测器
BPN是机器学习领域应用较为广泛的一种神经网络算法,常用于模式识别、数据分类、数据挖掘等领域.BPN 实际上是一个大型的双向循环的迭代计算模型,正向计算过程是简单的输出结果计算,反向的误差修正计算是BPN的算法核心,通过Widrow-Hoff 学习规则对各节点的权值进行反复的修正,直至输出结果误差小于期望阈值[11–13].常见的BPN 一般为3 层结构,分别为输入层、隐含层和输出层,较为复杂的工程可能用到多隐含层的网络结构,3 层BPN的网络结构如图1所示.
1.2 AdaBoost 算法
AdaBoost 算法也是一种迭代算法,其思想来源于Hansen 提出的同一样本的多个神经网络的组合能够提高网络泛化能力的理论[14].针对用于数据预测的算法,AdaBoost 算法是按照一定的规则将多个BPN 弱预测器集合为一个强预测器.这里所提到的多个BPN 预测器集合的规则就是AdaBoost 算法的核心规则,与BPN的节点权重修正类似,也是通过计算各BPN 弱预测器的权重对BPN 弱预测器的结果进行组合[15,16].
图1 3 层BPN 网络结构图
AdaBoost 算法的具体执行步骤如下:
1)首先,对每一个输入样本设置权重ω1(n)=1/N,N为样本总数.利用第1 个BPN 弱预测器进行第1 次训练,并计算错误率εi.
2)利用错误率按照式(2)计算BPN 弱预测器的权重αi,i为BPN 弱预测器编号.
3)按照式(3)规则确定第2 个BPN 弱预测器的样本权值,增加预测不准确的样本的权值,降低预测准确的样本的权值,即重点学习预测错误的样本,其中hi(xn)为第i个BPN 弱预测器第n个样本的预测结果.
4)按照上述规律一直进行迭代计算直至第I个BPN 弱预测器,得到I个BPN 弱预测器的权重集合{α1,α2,···,αI},按照式(4)计算所有BPN 弱预测器的集合预测结果,其中sign 代表符号函数.
1.3 AdaBoost-BPN 预测模型工作原理
BPN 弱预测器均采用2 层隐含层的BPN,BPN的隐含层节点数量采用式(5)确定.
其中,Nh为隐含层节点数量;Ni为输入层节点数量,由预测样本数据的维数决定;Nh为输出层节点数量,由预测结果数据维数决定,R为[0,10]之间的随机数.神经网络训练过程中,不是隐含层节点数量越多训练效果越好,因此具体的隐含层节点数量需要进行大量的训练试验来确定.BPN 弱预测器的输入为历史销售数据,输出结果为销量预测数据.
AdaBoost-BPN 预测模型的实质是将BPN 弱预测器融入AdaBoost的算法的过程中,AdaBoost 算法通过不断增加BPN 弱预测器数量强化训练那些预测结果不准确的样本,直至预测误差达到设置的误差阈值.AdaBoost 算法的输入为BPN 弱预测器模型和样本数据,输出为多个BPN 弱预测器的预测模型和权重,并组合得到一个强预测器.AdaBoost-BPN 预测模型流程图如图2所示.
图2 AdaBoost-BPN 预测模型流程图
2 基于时间序列的短期销量预测模型
目前常见的销量预测模型大多以月销量或者周销量作为基本预测单位[17,18],随着电商行业规模的不断增大,入驻电商领域的商家越来越多,甚至以个人为主导的C2C 商业模式也展现出较大的活力和发展潜力,电商行业的竞争愈发激烈[19].在这种情况下,以往的销量预测方法已经无法保证预测的及时性,因此本文建立的AdaBoost-BPN 短期销量预测模型以日销量作为预测基本单位.
基于时序数据的预测任务通常用时间窗口切割时间轴来获得训练样本,本文建立的时间轴设计了两个固定跨度的时间窗口,观测时间窗和预测时间窗[20,21].本文以某电商平台商家LMAZ-CG1520 型号牛仔裤的历史销量和链接点击量数据作为模型的训练和测试数据.该组数据具有较为明显的分布特征,同一周内工作日的销量和周末的销量会一般存在较大的差别,周末两天的日销量会明显高于工作日5 天的日销量,本文称之为电商的“周末效应”.除了特殊节假日和平台促销活动期间,其他时间的销量基本遵循以一周为周期的短期循环.为了使模型的训练能够全面采集一周内的销量变化特征,同时考虑“周末效应”的影响,本文采用观测时间窗跨度为5,预测时间窗跨度为3,当时间轴总跨度为n时,即以n天的历史销量数据作为训练数据集,将得到n−5+1 组训练数据,时间轴的划分如图3所示.
图3 时间轴划分图
AdaBoost-BPN 短期销量预测模型的观测时间窗跨度为5 天,常规的事件窗采样无法判断观测时段内是否存在周末,因此本文在模型的输入部分增加了1 个输入层节点,该输入节点称为“周末因子”.电子商务销量历史数据中包含该条记录的时间标签,判断该条记录是否为周末的销量较为简单.当“周末因子”为1 时,代表此次训练样本中包含周末销量,能够帮助网络调整权重,5 组输入数据相邻的两组明显偏高的数据或者边缘1 组明显偏高的数据即为周末销量;当“周末因子”为0 时,代表此次训练样本均为工作日销量.
电商平台中某商品的销量与该商品链接的点击量有直接关系,模型输入中应包含该商品的历史销量、历史点击量和“周末因子”.因此,单个BPN 弱预测器一共有11 个输入节点,3 个输出节点,共设置两层隐含层,第一层隐含层采用tansig 函数作为传递函数,第二层隐含层采用pureline 函数作为传递函数,经过大量的训练测试,隐含层节点数分别为13和3 时,模型的训练效果最佳,训练次数为1000 次时,网络计算精度可以达到0.01.加入“周末因子”的AdaBoost-BPN 短期销量预测模型中单个BPN 弱预测器的结构如图4所示.
图4 单个BPN 弱预测器结构图
3 短期销量预测实验
实验数据取自某电商商家2019年第三、四季度LMAZ-CG1520 型号牛仔裤的历史销量数据和历史点击量数据,其中有效数据段共184 条,采用7、8、9、10、11月份的数据作为训练数据集,数据段共153 条,有效训练样本149 组.12月份数据作为测试数据集,数据段共31 条.分别采用普通BPN 弱预测器、AdaBoost-BPN 预测模型和加入“周末因子”的AdaBoost-BPN 预测模型进行销量预测实验,预测结果采用预测误差进行评价.图5为不同模型的销量预测测试结果,以及预测结果与真实数据的对比.图5中不同预测模型的预测曲线表明,加入“周末因子”的AdaBoost-BPN 预测模型的预测曲线与实际销量的重合度最高,没有加入“周末因子”的AdaBoost-BPN 预测模型表现稍差,而只用一个普通的BPN 弱预测器的预测结果偏差很大.
表1为不同模型的平均预测误差对比.由表1结果分析,采用普通BPN 弱预测器的误差远远大于AdaBoost-BPN 预测模型的误差,说明基于AdaBoost 思想集合多个BPN 弱预测器结果能够提升预测的准确率;AdaBoost-BPN 预测模型与普通BPN 弱预测器相比,预测效果得到了较为明显的提升,但是由于没有考虑“周末效应”,一些特殊的样本数据拉低了整体的预测效果;AdaBoost-BPN 预测模型在添加了“周末因子”后,平均预测误差明显降低,可以达到20%以内,预测效果得到了极大的提升.
图5 销量预测测试结果
表1 不同模型平均预测误差对比(%)
本文在建立时间轴时,考虑到电商销量的“周末效应”,确定的观测时间窗跨度为5 天,为了探究选取的观测时间窗跨度对预测效果的影响,采用加入“周末因子”的AdaBoost-BPN 预测模型,将历史时间窗跨度分别设置为3、4、5、6、7 再次进行预测实验,实验结果如表2所示.
表2 不同时间窗平均预测误差对比(%)
由表2结果分析,观测时间窗跨度为3和4 时,样本数据隐藏的信息量不足,而且预测时间窗为3 天,理论上观测时间窗应大于预测时间窗,较短的观测时间窗跨度无法准确体现销量变化特征,因此平均预测误差相对较大;观测时间窗跨度为6和7 时,本文所建立的“周末因子”形同虚设,模型无法准确反映“周末效应”带来的影响,因此平均预测误差偏大;只有观测时间窗跨度5 时,预测模型发挥出最良好的预测能力,同时证明了“周末因子”的加入可以有效提升预测的准确度.
4 结论
在电商行业迅速发展的大背景下,本文针对目前已有的商品销量预测模型预测误差大、无法满足商家对行情变化的迅速应变的问题,提出了一种电子商务会计系统中的短期销量预测模型.该模型以日销量作为预测基本单位,采用近5 天的销量数据和点击量数据对未来3 天的销量变化情况进行预测.借鉴AdaBoost思想集合多个BPN 弱预测器形成强预测器,提高预测准确率.提出合理的日销量预测的时间轴设计方法,根据电商产品销量的变化特性为预测模型添加“周末因子”,使预测模型具备辨识“周末效应”的能力.实验测试结果表明,加入“周末因子”的AdaBoost-BPN 预测模型平均预测误差在20%以内,能够有效预测未来短期内的销量变化情况,对电商企业及时掌握产品销售情况,并对短期内存在的销售风险制订及时有效的应对措施具有重要的意义.