王鵬 曹麗惠 阮冬茹
摘 要:為了實現企業產品銷量預估,提高生產供應的準確性與效率,提出了基于Stacking模型的融合算法進行銷量預測。算法設計了兩層堆疊的模型結構,初級學習器采用隨機森林、支持向量回歸、差分整合移動平均自回歸、輕量級梯度提升機器和門控循環單元5種單模型,將分類與回歸樹作為次級學習器構成Stacking融合模型,并對數據進行了預測。預測結果顯示,使用Stacking模型融合后得到了較好的預測結果,比單模型中效果最好的模型的均方根誤差更小,平均絕對誤差更小,決定系數值更大,表明Stacking融合模型的預測準確率更高。所設計模型可用于對企業店鋪的產品銷量進行預測,幫助企業更好地安排生產、營銷活動,為減少庫存、縮短生產銷售周期提供數據支持,對企業生產決策有一定的參考價值。
關鍵詞:計算機決策支持系統;銷量預測;Stacking;模型融合;初級學習器;次級學習器
中圖分類號:TP311.13?? 文獻標識碼:A
DOI: 10.7535/hbgykj.2022yx03004
Store sales forecast based on Stacking model fusion
WANG Peng1,CAO Lihui2,RUAN Dongru1
(1.School of Information Science and Engineering,Hebei University of Science and Technology,Shijiazhuang,Hebei 050018,China;2.The 54th Research Institute of CETC,Shijiazhuang,Hebei 050081,China)
Abstract:In order to realize the sales volume prediction in modern enterprises and achieve the accuracy and efficiency of production and supply,a fusion algorithm based on Stacking model was proposed for sales volume prediction.The algorithm designed a two-layer stacked model structure.The primary learner adopted five single models: RF(random forest),SVR(support vector regression),ARIMA(autoregressive integrated moving average),LGBM(light gradient boosting machine),GRU (gated recurrent unit),CART (classification and regression tree) was used as secondary learners to form a Stacking fusion model,and the data were predicted.The prediction results show that there are better prediction results in the relevant data after using the Stacking model fusion.Compared with the model with the best effect in the single model,the RMSE (root mean square error) is smaller,the MAE (mean absolute error) is smaller,and the R2 (coefficient of determination) value is larger,indicating that the prediction accuracy of the Stacking fusion model is higher.This model can be used to predict the product sales and other relevant data of enterprise stores,help enterprises better arrange production and marketing,provide reference data for reducing inventory and shortening production and sales cycle,and have a certain reference value for enterprise production decision-making.
Keywords:
computer decision support system;sales forecast;Stacking;model fusion;primary learner;secondary learner
銷量預測是根據企業過去的經營狀況和相關資料,對其在一定時期內的銷售數量進行預計和推測?,F如今,食品類零售企業大多采取以銷定產的策略,由市場銷售人員根據訂單和銷售經驗預測未來一段時間的銷量,分銷點逐級匯報匯總編制下一周期的經營計劃,生產部門安排生產進度。這種傳統的生產計劃方式隨著市場環境變化、影響產品銷售因素增多等暴露出明顯的不足,時常發生因個人主觀判斷失誤造成庫存積壓導致虧損等情況,而在店鋪數量增加,生產成本和物流成本也增多的情況下,虧損程度更是成倍增長。同時如果店鋪訂貨過于保守,出現缺貨、少貨的現象,也會大大降低客戶體驗度,損害品牌形象。比如某肉類零售企業所面臨的以銷定產問題,肉類食品保質期短,全程冷鏈物流,運輸成本高,若臨期低價銷售,則會影響市場售價平衡,若過期返廠統一銷毀,則會增加二次運輸成本,因此準確預測銷售數量成為這類企業的重要工作內容。
常用預測方法有時間序列算法和因果分析算法兩類。在實際研究中人們會根據具體模型進行優化達到改進目標,或者對多種算法進行集成融合從而獲得一種模型所不具有的更好性能。集成的好處是不同的模型可以學習到數據的不同特征,經過融合后的結果往往能取長補短,有更好的表現。因此將多個單模型融合的方式在目前是被使用較多的,可以達到比較好的預測效果。在眾多的模型融合算法中,Stacking模型融合算法憑借其強大的預測性能,不但在數據挖掘比賽中屢獲佳績,而且在實際應用中也頗受好評,受到了眾多學者的青睞[1]。
張寧[2]把BP神經網絡、SVR(support vector regression,支持向量回歸)和DBN(deep belief network,深度置信網絡)相結合,建立了一種新的回歸預測組合預測模型,并基于該模型設計實現了便利店銷量預測系統。常炳國等[3]分別采用SVR和ELM(extreme learning machine,極限學習機),對時序模型中非線性誤差進行預測并進行誤差補償,提高了商品銷量的預測精度。DUAN等[4]選擇多種手機特征作為輸入變量,以不同的手機銷售前景等級作為輸出變量,基于SVR,BP神經網絡和KNN(K-Nearest Neighbor,K最近鄰),建立組合模型并預測各種銷售情景,預測值與市場上多種手機的實際銷售情況基本吻合。梁超[5]基于工程機械設備大數據,結合XGBoost[6],RF(random forest,隨機森林),LGBM[7] (light gradient boosting machine)等多種機器學習模型,多維度探究影響機械核心部件壽命的機器學習模型效果,建立Stacking模型融合的部件壽命預測模型,并在核心部件數據上驗證模型預測有效性,從而減少設備非計劃停機時間,推進智能制造和預測性維護的進步。楊榮新等[8]構建了多個機器學習算法嵌入的Stacking模型融合光伏發電功率預測模型,該融合模型相較于單模型,預測精度顯著提升。范紅星[9]使用ID3[10],CART[11] (classification and regression tree,分類與回歸樹)和RF相結合,構建了基于特征選擇和Stacking模型融合的學生學業水平預測模型,極大地提高了模型的準確率,增強了模型的泛化能力。鄧威等[12]集成KNN,SVM(support vector machines,支持向量機),RF,GBDT(gradient boosting decision tree,梯度下降樹),MLP(multilayer perceptron,多層感知機)5種模型[13],構建了一種基于特征選擇和Stacking模型融合的配電網網損預測方法,較好地挖掘了網損數據規律,提升網損預測精度和魯棒性。王輝等[14]提出一種在多機器學習模型融合下基于Stacking模型融合的銷售預測方法,模型在零售企業的庫存管理、經營管理、供應鏈管理中有較高的應用價值。張雷東[15]利用Stacking算法把XGBoost,SVR,GRU[16] (gated recurrent unit,門控循環單元)作為基礎模型,將LGBM作為最終的預測模型,大大提高了模型的預測性能,更加接近真實的銷量數據,為回歸預測提供了一種新的預測方法,并應用到具體應用系統中。
1 銷量預測的Stacking模型
Stacking是機器學習中集成學習的一種方法。Stacking就是將一系列模型(初級學習器)的輸出結果作為新特征輸入到其他模型(次級學習器),這種方法實現了模型的層疊,即第1層的模型輸出作為第2層模型的輸入,第2層模型的輸出作為第3層模型的輸入,依次類推,最后一層模型輸出的結果作為最終結果。
根據Stacking模型的特點,初級學習器一般選擇預測效果好的強模型,而且模型之間差異性越大,預測效果越好,簡單而言就是要“好而不同”。研究目前成果中使用的預測方案,本文先選取RF,SVR,ARIMA(autoregressive integrated moving average,差分整合移動平均自回歸)3種預測效果較好的單模型作為初級學習器,隨后又將LGBM和XGBoost模型加入對比,結果顯示LGBM運行速度較快,節省時間,且預測效果相當,遂選取LGBM加入初級學習器;實驗中還發現GRU相較于LSTM參數少,容易收斂,運行速度快,預測效果卻差別不大,于是選取GRU加入初級學習器,最終確定以兩層Stacking建立模型。為了防止過擬合,Stacking第2層模型相對簡單,作為次級學習器,具體過程如下。
1)將原始數據集劃分為兩部分:原始訓練集D和原始測試集T。
2)對初級學習器進行K折交叉驗證:將原始訓練集D隨機分成K等份(d1,d2,…,dk),每個初級學習器將其中的1份作為K折測試集,剩下的K-1份作為K折訓練集。使用K折訓練集訓練每個初級學習器,并對K折測試集進行預測,合并每個初級學習器的預測結果,作為次級學習器的訓練集Dk。
3)每個初級學習器對原始測試集T進行預測,將K次預測結果求平均值,得到集合(t1,t2,…,tk),把該集合作為次級學習器的測試集Tk。
4)次級學習器從初級學習器中得到生成的新數據集:訓練集D′(D1,D2,…,Dk)和測試集T′(T1,T2,…,Tk),開始學習訓練,輸出最終的預測結果。
圖1示例了Stacking算法關鍵步驟1)—3)的執行過程,即單模型的初級學習過程及數據分配情況。假設原始訓練集有數據1 000條,原始測試集數據100條,算法如圖1所示。
得到的初級學習器輸出結果作為輸入進入次級學習器CART。本方案的Stacking模型執行過程的整體步驟如圖2所示。
2 實驗方案設計
實驗環境為CPU(i7-7700)、內存(16 GB)、顯卡(GTX-1050Ti)、Python3.6和MySQL8。實驗數據使用的是某企業零售190家店鋪從2017-06-01至2019-05-31三年的銷售數據,總共1 489 380條。使用MySQL數據庫對異常值進行處理,最終去掉了期間關閉的店鋪,最后剩余店鋪69家。隨機選取某款熱銷商品A在店鋪1和店鋪2的銷售數據作為實驗樣例,總共2 190條數據,預測商品A在店鋪1的銷量和商品A在店鋪2的銷量。數據樣例如圖3所示。數據特征解釋說明如圖4特征說明所示。數據特征的重要性分析如圖5所示。
在數據特征重要性分析中發現:數據主要特征有7個,其中受節假日(holiday)影響最大,對促銷特征(promote)不敏感。
商品A在店鋪1和店鋪2的銷量走勢如圖6所示??梢钥闯?個店鋪的銷量是有周期性變化的,而且具有較高的相似度。例如9月份與1月份銷量相對較高,但是因為該實驗數據所選取的產品禮品屬性較強,而時間適逢臨近中秋和春節2個傳統節日,這個結果即使預測準確也會因企業產能不足等原因無法實現,即對銷量的提升影響甚微,目前對這2個時段暫不預測。因此提高其余月份的銷量預測準確率,才是目前企業亟需解決的問題。
3 實驗結果及分析
按照Stacking算法設計的實驗步驟,分別用RF,SVR,ARIMA,LGBM,GRU模型作為初級學習器進行5折交叉驗證,訓練5種初級學習器并輸出預測結果,組合生成新的數據集作為5個新特征。然后采用舊數據集加入5個新特征作為新數據集,用決策樹模型作為次級學習器,對新數據集進行訓練,輸出最終預測結果。另外去掉預測效果較差的ARIMA模型的結果特征集,多次進行實驗,利用sklearn的網格搜索(GridSearchCV)函數和隨機搜索(RandomizedSearchCV)函數進行超參數集搜索,最后給出RMSE,MAE和R2對模型的評估結果。店鋪1和店鋪2實驗模型的超參數集和預測結果評估指標分別如圖7和圖8所示。
對比各種組合下的預測結果,并結合店鋪1和店鋪2的實驗結果可以看出,單模型預測結果均不如Stacking模型融合之后的預測結果好,說明單模型預測信息捕捉有遺漏,而Stacking模型融合了多個單模型信息捕捉能力,能夠較好地彌補單模型特征抽取不足的問題。
其中,CART(原始特征+RF+SVR+LGBM+GRU)模型的預測效果最好,CART(原始特征+RF+SVR+ARIMA+LGBM+GRU)模型的預測結果次之,CART(無原始特征+RF+SVR+ARIMA+LGBM+GRU)的預測結果再次之,該模型預測效果比單模型效果最好的LGBM模型稍好,然后加入原始特征,模型預測效果又得到一定的提升,最后處理中去掉效果最差的ARIMA特征之后,模型預測效果又一次得到提升。
店鋪1和店鋪2的各種單模型和Stacking融合模型與真實值的差異對比如圖9—圖12所示。
從實驗結果可以看到,Stacking融合模型整體上比單一模型預測結果更好,對一些波動較大點的預測,也比單一模型處理得更好,對于時間較長的預測點,比單一模型更準確。RMSE,MAE和R2的評估結果都分別優于任何單模型的評估結果。
CART(原始特征+RF+SVR+LGBM+GRU)模型的預測效果最好,說明Stacking融合模型適用于單模型預測效果較好的模型之間的組合,單模型預測效果差的模型,會影響Stacking融合模型最終的預測效果,選擇合適的預測模型是Stacking融合模型預測效果好壞的關鍵。為了提升融合模型的效率,節省時間,Stacking融合模型并不是越多越好。實驗結果顯示:一味地增加融合模型的數量,對預測結果的提升非常有限,當融合模型提升效果不大的時候,為了提升模型預測效果,應該采取的措施是搜集更加精確的原始特征,而不應該再將精力放在融合更多的模型上。
4 結 語
現代企業中銷量預測是貨物供應的核心環節,對于合理控制生產成本,安排商品的生產計劃,以及調整商品庫存至關重要,是營銷、物流、生產等環節的重要參考。本文設計了一個兩層堆疊融合的銷量預測模型來解決食品行業銷量預測問題。模型第1層采用RF,SVR,ARIMA,LGBM,GRU 5種初級學習器, 模型將第1層5個初級學習器學習到的不同特征作為第2層的輸入。CART作為次級學習器,使得Stacking模型預測準確性有了進一步提升。實驗結果表明該模型在保證較高魯棒性和泛化能力的同時,取得了比單一模型更好的預測結果。
在模型確定過程中對數據特征的計算也能幫助企業對產品特征的分析更加精細和準確。通過不同學習器對數據的處理可以進一步提煉原始數據的有效特征,為后續預測模型的完善提供支持??梢钥紤]在進一步研究中實驗更多的方案來提煉更加有效的數據特征。目前特征較少是大部分企業在銷量預測中面臨的最大問題,如何采集更多準確、實用的特征是未來銷量預測在實際應用中的重點。本文的Stacking模型融合使用多模型對數據進行分析,形成新特征加入到Stacking次級學習器之中,較好地彌補了原始數據集特征不足的問題。
為了提高預測準確率,下一步的研究工作將通過采取收集更多有效特征的方式,提高單模型的預測準確度,進而提高Stacking融合模型的預測效果。
參考文獻/References:
[1] WOLPERT D H.Stacked generalization[J].Neural Networks,1992,5(2):241-259.
[2] 張寧.基于深度學習的連鎖便利店銷量預測的研究與應用[D].北京:北京工業大學,2019.
ZHANG Ning.Research and Application about the Forecasting for the Convenience-store Chain′s Sales Based on Deep Learning[D].Beijing:Beijing University of Technology,2019.
[3] 常炳國,臧虹穎,廖春雷,等.基于選擇性集成ARMA組合模型的零售業銷量預測[J].計算機測量與控制,2018,26(5):132-135.
CHANG Bingguo,ZANG Hongying,LIAO Chunlei,et al.Retail sales combination forecasting model based on selective ensembled ARMA[J].Computer Measurement & Control,2018,26(5):132-135.
[4] DUAN Zekun,LIU Yanqiu,HUANG Kunyuan.Mobile phone sales forecast based on support vector machine[J].Journal of Physics-Conference Series,2019,1229(1):012061.
[5] 梁超.基于Stacking模型融合的工程機械核心部件壽命預測研究[J].軟件工程,2019,22(12):1-4.
LIANG Chao.Life prediction of construction machinery core components based on Stacking model fusion[J].Software Engineering,2019,22(12):1-4.
[6] CHEN Tianqi,GUESTRIN C.XGBoost:A scalable tree boosting system[C]//Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.New York:Association for Computing Machinery,2016:785-794.
[7] KE Guolin,MENG Qi,FINLEY T,et al.LightGBM:A highly efficient gradient boosting decision tree[C]//Proceedings of the 31st International Conference on Neural Information Processing Systems.Red Hook:Curran Associates Inc,2017:3149-3157.
[8] 楊榮新,孫朝云,徐磊.基于Stacking模型融合的光伏發電功率預測[J].計算機系統應用,2020,29(5):36-45.
YANG Rongxin,SUN Zhaoyun,XU Lei.Photovoltaic power prediction based on Stacking model fusion[J].Computer Systems & Applications,2020,29(5):36-45.
[9] 范紅星.基于特征選擇和Stacking框架的學生學業水平預測研究[D].長春:吉林大學,2020.
FAN Hongxing.Prediction of Students' Academic Level Based on Feature Selection and Stacking Framework[D].Changchun:Jilin University,2020.
[10]QUINLAN J R.Induction of decision trees[J].Machine Learning,1986,1(1):81-106.
[11]BREIMAN L.Classification and Regression Trees[M].Belmont:Wadsworth International Group,1984.
[12]鄧威,郭釔秀,李勇,等.基于特征選擇和Stacking集成學習的配電網網損預測[J].電力系統保護與控制,2020,48(15):108-115.
DENG Wei,GUO Yixiu,LI Yong,et al.Power losses prediction based on feature selection and Stacking integrated learning[J].Power System Protection and Control,2020,48(15):108-115.
[13]周志華.機器學習[M].北京:清華大學出版社,2016.
[14]王輝,李昌剛.Stacking集成學習方法在銷售預測中的應用[J].計算機應用與軟件,2020,37(8):85-90.
WANG Hui,LI Changgang.Application of Stacking integrated learning method in sales forecasting[J].Computer Applications and Software,2020,37(8):85-90.
[15]張雷東.氨綸產品銷量預測技術的研究與應用[D].沈陽:中國科學院大學(中國科學院沈陽計算技術研究所),2020.
ZHANG Leidong.Research and Application of Spandex Product Sales Forecast Technology[D].Shenyang:University of Chinese Academy of Sciences(Shenyang Institute of Computing Technology,Chinese Academy of Sciences),2020.
[16]CHO K,VAN MERRIENBOER B,GULCEHRE C,et al.Learning phrase representations using rnn encoder-decoder for statistical machine translation[DB/OL].(2014-06-03).https://arxiv.org/abs/1406.1078.