?

基于SW-GBDT的在線農產品銷量預測模型

2023-08-24 08:02李鵬飛冉茂然毋建宏
西安郵電大學學報 2023年2期
關鍵詞:店鋪銷量編碼

李鵬飛,冉茂然,毋建宏

(1.西安郵電大學 經濟與管理學院,陜西 西安 710061;2.西安郵電大學 現代郵政學院,陜西 西安 710061)

隨著電子商務(電商)的快速發展,農產品通過線上銷售的比例越來越高。根據中國農業農村部和中央網絡安全和信息化委員會發布的《數字農業農村發展規劃(2019—2025年)》,農產品網絡零售額占農產品總交易額比重將由2018年的9.8%提升至2025年的15%??梢灶A見,未來在線農產品銷售將會取得較大的發展。

隨著在線農產品銷售的迅速發展,也會帶來一些問題,例如,由于相當一部分農產品具有生鮮和易腐爛等特點,若銷售不及時,存在庫存積壓現象,則可能會由于農產品腐爛而導致經濟損失。準確地進行銷量預測可以幫助農戶實現及時銷售,有效降低經濟損失。

時間序列分析、支持向量機(Support Vector Machine,SVM)、神經網絡以及深度學習等方法均為銷量預測的常見方法[1]。時間序列分析通過對有限長度的時間序列進行觀察、研究,尋找其變化發展規律,對未來做出預測[2]。例如,文獻[3]提出一種改進的考慮品牌情感的自回歸模型,結合用戶情感值對汽車銷量進行預測。SVM方法是一種以統計學習理論為基礎的機器學習分類器,常被用于解決分類或回歸問題[4]。文獻[5]將支持向量機應用到卷煙銷量的預測中,提出基于SVM的卷煙銷量預測模型。近年來,隨著人工神經網絡的快速發展,其在預測領域得到廣泛應用。例如,文獻[6]提出融合口碑評論與搜索數據的消費者關注度量化方法,構建基于消費者關注度的模型,實現了汽車銷量預測。深度學習是一種利用模擬人腦多層感知結構來認識數據模式的算法[7]。文獻[8]針對線上農產品銷量存在信息不對稱的問題,提出一種結合深度學習算法優勢和涉農電商銷售數據特征點的皇冠模型。

時間序列分析、SVM、神經網絡以及深度學習等方法均被應用于不同領域的銷售預測,并取得了一定的預測效果,但是,這些方法應用于在線農產品的銷量預測時,仍存在一些問題,主要包括:第一,由于農產品自身特點,其數據樣本存在多樣化的情況;第二,影響在線農產品的因素較多,預測模型無法全部涉及;第三,在線農產品的有效銷售數據為農產品按自然生長周期成熟后銷售的數據,此數據集往往規模較小,而深度學習在處理小規模數據集時預測效果較差。因此,如何在小規模數據中獲取盡可能多的特征,提高在線農產品銷量預測精度成為亟待解決的問題。

梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)算法具有靈活處理各種類型的數據、對異常值的魯棒性強及訓練時間短的特點[9],被廣泛應用于預測領域的研究中。例如,文獻[10]使用GBDT方法構建了航班延誤預測模型,其結果表明,相比于SVM算法、隨機森林(Random Forest,RF)算法和傳統決策樹算法,具有更高的準確度。文獻[11]提出基于集成樹-梯度提升決策樹的PM2.5預測模型,針對PM2.5濃度的非線性與不確定性進行預測,效果較好。但是,僅僅使用GBDT算法預測在線農產品銷量時,會產生特征選擇不夠全面的問題。

為了更加全面地選擇特征,通常需要對數據進行特征擴展?;瑒哟翱?Sliding Window,SW)方法作為特征擴展的常用方法之一,廣泛地應用于預測研究中[12-13]。例如,文獻[14]提出采用基于滑動窗口的影像對象獲取方法,將多尺度分割后的預測結果與滑動窗口分割后的預測結果進行對比驗證,結果表明,滑動窗口提取結果的總體分類精度比多尺度分割高出0.94%。

整理歸納已有的預測文獻,發現針對銷量預測領域的應用研究較少,特別是對在線農產品的銷量預測的研究還有待進一步深入??紤]到在線農產品銷量存在外部影響因素較多以及銷量數據集較小的問題,為了提升在線農產品銷量預測的準確性,擬提出一種基于SW-GBDT的在線農產品銷量預測模型。使用滑動窗口方法進行特征擴展,并對新增的特征進行多重共線性檢驗,使用主成分分析將高度相關的特征用主成分表示,降低特征之間的共線性對模型的影響,將數據集中的標稱數據利用獨熱(one-hot)編碼轉變為數值數據,最后,利用梯度提升決策樹對在線農產品進行銷量預測。

1 研究方法

1.1 梯度提升決策樹原理

GBDT算法[15]是一種以分類回歸樹(Classification and Regression Tree,CART)為基模型的集成學習算法[16]。GBDT集成算法的訓練過程示意圖如圖1所示,樣本通過多輪迭代,每輪產生一個弱學習器,最終將所有弱學習器加權求和后得到集成模型。

圖1 GBDT集成算法訓練過程示意圖

假設在GBDT算法中輸入的數據集為T={(x1,y1),(x2,y2),…,(xN,yN)},其中,xi∈X,yi∈Y(i=1,2,…,N),N為樣本總數。GBDT算法的目標是找到一個估計函數F(x),對于任意xi,存在有F(xi),使得|F(xi)-yi|→0。一般采用損失函數的負梯度擬合損失。GBDT算法通常采用如下具體步驟。

步驟1初始化弱學習器。令樣本中損失函數最小化的近似常數值為

(1)

式中:x=x1,x2,…,xN為輸入樣本;yi表示樣本i的真實值;常量c為y1,y2,…,yN的平均值;L(yi,c)表示損失函數,用于計算真實值與預測值之間的誤差。

步驟2建立M棵分類回歸樹m=1,2,…,M。

步驟3計算樣本i的損失函數的負梯度在第m-1棵回歸樹的值,將其作為殘差估計值rm,i,計算表達式為

(2)

式中:f(xi)表示將輸入樣本xi帶入第m-1輪得到的學習器中得到的預測值;L(yi,f(xi))表示樣本i在第m-1棵回歸樹的損失函數值;Fm-1表示第m-1輪得到的學習器。

步驟4將步驟3得到的殘差值作為樣本新的真實值,并將(xi,rm,i)作為第m棵回歸樹的訓練數據,得到第m棵回歸樹,其對應的葉子節點區域為Rm,j,其中,j=1,2,…,Jm,且Jm為第m棵回歸樹葉子節點的個數。

步驟5計算出第m棵回歸樹的葉子節點區域j=1,2,…,Jm的最佳擬合值。該最佳擬合值采用損失函數的最小值表示。令Fm-1(xi)表示使用第m-1輪的學習器對輸入樣本xi的預測值,L(yi,Fm-1(xi)+c)表示第m棵回歸樹中第i個葉子節點的損失函數,則第m棵回歸樹的葉子節點損失函數的最小值的計算表示式為

(3)

步驟6更新學習器Fm(x),其更新方式為

(4)

式中,I表示第m棵回歸樹中的每個葉子節點區域的權重。若樣本落在了Rm,j節點上,則令權重I=1;否則,令權重I=0。

步驟7對得到的全部學習器進行累加,得到最終回歸樹FM(x)的表達式為

(5)

1.2 滑動窗口法

滑動窗口法根據指定的窗口大小框住時間序列,從而計算框內的統計指標[17],實現擴展機器學習中樣本特征并消除數據噪音[18]。對于時間序列s1,s2,…,sn,以周為滑動窗口的大小,在原始時間序列上按時間逆序進行滑動窗口操作,輸入特征為s1,s2,…,s7,輸出特征為v1,vt-9,vt-8,vt-7,…,滑動窗口方法原理示意圖如圖2所示。

圖2 滑動窗口方法原理示意圖

2 SW-GBDT預測模型

SW-GBDT預測模型結構示意圖如圖3所示。從圖中可以看出,SW-GBDT預測模型的基本思路為,利用爬蟲程序獲得數據,去除重復數據,使用one-hot編碼處理數據集中的標稱數據,得到初始數據集,使用滑動窗口法將在線農產品銷量7天內的銷量統計數據作為新的特征,對原數據集進行特征擴展,檢驗特征變量的共線性,對共線性高的特征變量進行主成分分析,并使用主成分對其替代,得到最終的輸入特征,輸入到GBDT模型中,利用超參數優化算法對模型參數進行優化,選出最佳參數構建預測模型,進而得出模型的預測結果。

圖3 SW-GBDT預測模型結構示意圖

2.1 指標篩選

影響在線農產品銷量的因素包括多個方面,例如,文獻[19]認為,店鋪評論、店鋪服務以及產品特征對產品銷量均會產生不同程度的影響。文獻[20]研究發現,農產品的質量、安全、新鮮度及店鋪信譽、送貨效率和服務質量對網購生鮮農產品意愿具有顯著正向影響,農產品價格對網購意愿具有顯著負向影響。綜合已有相關研究成果,同時考慮到數據的可獲取性,選擇從店鋪特征、產品特征和口碑特征等3個方面來確定在線農產品銷量的影響因素。

1)店鋪特征。文獻[21]運用探索性因子分析法和驗證性因子分析法對農產品網絡購買意愿影響因素研究模型進行優化和驗證,發現良好的店鋪信譽及店鋪服務有利于提升消費者對店鋪的好感,從而提升消費者的購買意愿。根據相關研究成果,形成描述店鋪服務的變量列表如表1所示。

表1 描述店鋪服務的變量列表

2)產品特征。通常而言,消費者對于產品特征的關注包含產品價格、產品包裝、產品質量、產品安全性及新鮮程度等相關因素[20]。根據相關研究成果,最終確定描述產品特征的變量列表如表2所示。

表2 描述產品特征的變量列表

3)口碑特征??诒窍M者之間的一種非正式溝通方式,是消費者購買商品或服務后發表的態度。相較于傳播范圍受限的線下傳統口碑,網絡口碑是以網絡為媒介進行傳播,具有傳播范圍廣、時效性長及內容豐富等特征,對消費者購買決策的影響更加顯著[22]。同時,不同品牌的產品在消費者中的口碑存在較大差異[23]。選取品牌名稱和每日的評論數描述口碑特征,描述口碑特征的變量列表如表3所示。

4)時間特征。由于存在其他可能的外部因素對在線農產品銷量產生影響,采用滑動窗口法進行特征擴展,以周為窗口單位,將該窗口前1天、2天、3天和7天產品銷量的統計性數據作為時間特征加入到數據集中。最終形成描述在線農產品銷售時間特征的變量列表如表4所示。

表4 描述時間特征的變量列表

基于以上對在線農產品銷量預測影響因素的分析和選擇,共提取出32項特征變量作為預測模型的輸入變量。

2.2 模型參數

梯度提升決策樹的結果由多棵決策樹的輸出累加得到,而每棵決策樹的最大深度(max_depth)影響模型的泛化能力,最終影響模型的預測效果。模型中的學習率(learning_rate)代表每個弱分類器的權重,最大迭代次數(n_estimators)代表弱分類器的最大個數,即最多訓練多少棵決策樹。模型學習率和最大迭代次數兩個值決定模型的擬合效果及模型的復雜程度[10]。

所提的SW-GBDT預測模型利用網格搜索法確定最優參數。網格搜索法[24]是指定參數值的一種窮舉搜索方法,通過交叉驗證的方法優化模型參數得到最優的學習算法。對各個參數的可能取值進行組合,列出所有可能的組合結果生成“網格”,使用交叉驗證對參數表現進行評估,在遍歷所有參數組合后,返回最佳參數模型。

由于Huber函數同時具備均方誤差(Mean-Square Error,MSE)和平均絕對誤差(Mean Absolute Error,MAE)這兩種損失函數的優點,對異常值的魯棒性更強,且梯度會隨著損失值接近其最小值逐漸較少,從而使得模型結果更加準確[9],因此,選擇Huber函數作為梯度提升決策樹算法中的損失函數。

3 實證分析

為了驗證所提SW-GBDT算法的有效性,對某電商網站的獼猴桃銷量數據進行預測,并與經典GBDT算法[9]、SVR算法[6]及BP神經網絡算法[25]進行對比。

實驗過程中的軟件環境為操作系統采用Windows 10 x64,開發平臺為Python 3.9,Microsoft Office Excel 2019,調用的第三方庫有Python的 oneHotEncoder,numpy,matplotlib, pandas,sklearn。硬件環境為處理器采用Intel(R) Core(TM) i5-6300H CPU@2.30 Hz ,主機內存為16 GB。

3.1 數據來源

考慮到不同農產品之間的產品差異性較大,成熟期不同以及數據的可獲得性,以某電商平臺不同生鮮店鋪的獼猴桃銷量為實驗對象,僅選取產地為陜西與四川的生鮮店鋪的獼猴桃銷量進行數據抓取,使用Python語言編寫網絡爬蟲程序。

將某電商平臺產品搜索的關鍵字作為入口,搜索獼猴桃關鍵字,添加產地為陜西或四川的篩選條件,選取前7家店鋪,依次爬取從2021年12月1日到2022年3月10日的獼猴桃訂單數據,共取得700條有效數據,并得到7家店鋪的銷量走勢圖,如圖4所示。從圖4可以看出,由于不同店鋪之間的店鋪特征、產品特征存在較大的區別,導致銷量的波動情況在不同店鋪之間存在較大差異。此外,消費需求會隨著地點、時間和偶發的特殊事件等各種因素的影響而改變。例如,有時一個熱點就會導致商品銷量的激增或暴跌,從而產生高度非平穩的銷量時間序列。

圖4 7家店鋪銷量走勢

3.2 數據預處理

3.2.1 重復值處理

由于實驗數據在獲取過程中會存在重復數據。為保證數據的完整性及準確性,利用訂單數據中的唯一訂單號對數據進行去重復操作。

3.2.2 離散值處理

模型的特征變量中存在標稱數據類型,將標稱數據直接引入預測模型會降低其預測效果。為此,采用獨熱(one-hot)編碼對標稱數據進行預處理。one-hot編碼主要采用N位狀態寄存器對N個狀態值進行編碼[26]。假設在線農產品的產品特征含有N個標稱數據hi(i=1,…,N),則將該特征使用N個0或1的數據e1,e2,…,eN進行編碼表示,對特征數據hi表示方法為,令ei=1,其余均為0。對數據集中的標稱數據進行one-hot編碼,得到品牌名稱編碼、廠址編碼、包裝方式編碼、套餐份量編碼及特產品類編碼,分別如表5、表6、表7、表8和表9所示。

表5 品牌名稱編碼

表6 廠址編碼

表7 包裝方式編碼

表8 套餐份量編碼

表9 特產品類編碼

在實際的在線農產品銷售場景中,部分標稱數據的類別可能過多,使用one-hot編碼進行處理時會產生高維稀疏特征,最終導致GBDT模型訓練效果過擬合。為此,在處理類別特征時,對于取值數量小于10的類別特征直接使用one-hot編碼進行處理,當取值數量大于10時,使用catBoostEncoder編碼器[27]進行處理,當存在幾百、上千的類別取值時,可以將one-hot編碼的結果輸入神經網絡embedding層中,完成從高維稀疏特征向量到低維稠密特征向量的轉換[28]。

3.2.3 共線性處理

由于滑動窗口法基于時間序列進行推移進行特征擴展,會造成特征共線性問題,從而影響模型的預測效果[1]。因此,需要對模型的特征變量進行共線性檢驗。經過檢驗,檢驗結果中方差膨脹因子(Variance Inflation Factor,VIF)大于10的變量如表10所示,共有16個變量,表明這16個變量之間存在較強的共線性。

表10 VIF大于10的變量

表11 共線性較強特征變量的主成分分析結果

為了降低特征的共線性風險,對表10中的16個特征變量進行主成分分析,得到共線性較強特征變量的主成分分析結果如表12所示。

表12 模型參數優化訓練結果

根據主成份分析結果,可以將16個共線性較強的特征變量用兩個主成分表示。兩個主成分與相關特征變量之間的關系方程分別為

Z1=0.930X17+0.981X18+0.973X19+
0.931X20+0.981X21+0.555X22+0.988X23+
0.979X24+0.923X25+0.988X26+0.675X27+
0.960X28+0.942X29+0.885X30+
0.960X31+0.748X32
Z2=-0.011X17-0.074X18+0.107X19-
0.305X20-0.074X21+0.734X22-0.096X23+
0.128X24-0.349X25-0.096X26+0.675X27+
0.120X28+0.095X29-0.353X30-
0.120X31+0.414X32

將Z1和Z2兩個主成分與特征變量X1至X16進行組合,構成一個18維的向量作為輸入,輸入到模型中進行預測。

3.3 評價指標

為準確評價模型有效性及可行性,模型預測效果的評價指標采用決定平方系數[29](R-squared,R2)、均方根誤差(Root Mean Squared Error,RMSE)和平方絕對誤差[30](Mean Absolute Error,MAE)等3個指標。R2的值越接近1,RMSE和MAE的值越小,模型預測的準確率越高。

3.4 預測結果

利用Python3的pandas數據處理包和Scikit-learn機器學習方法進行數據分析建模。調用train_test_split庫對某平臺獼猴桃銷量按降序排名前七的店鋪從2021年12月1日到2022年3月10日的獼猴桃訂單數據進行隨機劃分,其中,20%作為測試集和80%作為訓練集。采用GridSearchCV工具進行優化時,設定參數回歸樹數量(n_estimators)取值范圍為[10,200],增幅設為10;設置樹的最大深度(max_depth)的取值范圍為[0,50],增幅為1;采用遺傳算法(Genetic Algorithm,GA)優化時,設置種群數為30,n_estimators的取值范圍為[10,200],max_depth的取值范圍為[0,50],其余參數均采用默認值;采用差分進化(Differential Evolution,DE)算法優化時,設置種群數設為30,最大迭代次數為200,n_estimators的取值范圍為[0,200],max_depth的取值范圍為[0,50],其余參數均采用默認值;采用貝葉斯優化算法(Bayesian Algorithm,BO)優化時,設置初始節點為30,最大迭代次數為200,n_estimators的取值范圍為[0,50],max_depth的取值范圍為[0,50],算法中的其他參數均設為默認值。

經過各優化算法得出SW-GBDT最優參數,其中,模型參數優化訓練結果如表12所示。從表中可以看出,將不同優化算法的模型預測效果進行對比,從整體來看,GS優化算法得到的最優參數的模型預測結果中R2值最大,表明模型的預測效果最好,但是,花費的時間也最長,這是因為,GS算法在參數尋優的過程中,會遍歷所有的網格點進行模型訓練,從而找出最優模型;BO優化算法的模型預測結果的R2值最低,表明預測結果與真實值之間誤差較大,其搜索過程會利用過去的評估結果推斷最優參數,從而能夠在更短的時間內找到更優的參數;GA算法及DE優化算法的模型表現基本一致,各項模型評價參數基本相同。

4種不同優化算法的最佳預測結果如圖5所示??梢钥闯?4種優化算法模型的預測效果和真實值之間的擬合情況。其中,GS優化算法中模型的預測值與真實值比較接近,從模型的預測效果而言,GS優化算法得到的模型參數是最優的,因此,選擇GS優化算法對SW-GBDT模型進行超參數尋優。

圖5 4種不同優化算法的最佳預測結果

(續)圖5 4種不同優化算法的最佳預測結果

特征變量的權重大小表示變量在對模型預測結果的影響程度。特征變量的權重是其在所有決策樹中權重的均值,而特征變量在單棵決策樹的權重是其在每一節點裂變后的平方損失減少值。通過最佳預測模型得到特征變量的權重排序圖,如圖6所示。

圖6 特征變量的權重排序

由圖6可以看出,在所有特征變量中,每日評論數(X16)對銷量的影響最大,作為歷史信息反映消費者對店鋪服務及農產品質量感知最直接的獲取渠道,評論數越多表明消費者對于店鋪的服務及產品質量能夠獲取的信息越多,消費者對店鋪的信任度越高,從而激發消費者的購買欲望。由滑動窗口法生成的特征構成的主成分Z1、Z2對銷量的影響較大,店鋪在不同時間段的銷量出現明顯波動變化,這是因為:一方面,可能是其店鋪進行促銷活動,促進銷量在短時間內上升;另一方面,可能是在農產品在成熟后剛進入市場,造成在該時間段內銷量變化明顯,說明店鋪未來的銷量受到近期銷量特征的影響較大。

此外,包裝方式(X9)、店鋪服務評分(X2)及店鋪描述評分(X3)對銷量也有較大程度的影響,包裝方式作為保證產品質量與新鮮度的主要手段,細致的保鮮包裝可以提升消費者對產品的安全感,專業的售前咨詢服務、完善的售后服務以及真實的產品描述信息可以提升消費者對賣家的信任度。

為更好地驗證所提SW-GBDT模型的有效性,將其與經典GBDT算法、SVR算法及BP神經網絡算法的預測結果進行對比,不同算法預測結果如表13所示。

表13 不同算法預測結果

由表13可以看出,與經典GBDT算法相比,經過特征擴展后的SW-GBDT預測模型的決定平方系數由0.706 8提升為0.902 3。另外,經典 GBDT算法在3種基礎的機器學習算法中的預測準確率最低,而經過特征擴展后的GBDT算法相比于SVR算法的提升幅度為15.9%,與BP神經網絡相比,預測準確度的提升幅度為7.9%。說明在數據量較小的情況下,傳統機器學習算法能從數據中學習到的信息是有限的,而利用滑動窗口在原數據的基礎上擴展特征,算法可以學習到更多的信息,從而有效地提升模型的預測精度。

4 結語

根據在線農產品的特點,在綜合分析在線農產品銷量影響因素的基礎上,將梯度提升決策樹應用于對在線農產品銷量的預測,引入滑動窗口法,保留數據的時序特征以及影響銷量的其他外部因素,在數據預處理過程中使用one-hot編碼技術對標稱數據進行特征提取,選擇梯度提升決策樹算法進行訓練,通過網格搜索法優化模型參數進行預測。

為驗證組合模型的預測準確性及有效性,同時將模型預測的評價指標與經典GBDT算法、SVR、BP神經網絡方法進行對比。實證結果表明,與單一的梯度提升決策樹相比,使用滑動窗口對數據集進行特征擴展后,有效地提升了模型的預測精度,相比于 SVR和BP神經網絡方法,所提出的SW-GBDT模型的預測誤差較低、精度較高。模型的預測結果可以幫助農戶在線上渠道銷售農產品時降低運營風險,提高運營效率。另外,由模型預測的權重排序結果可以看出,店鋪的評論數對店鋪銷量的影響最大,因此,店鋪在后續銷售過程中可以通過營銷活動激發用戶的評論意愿,從而提升店鋪的銷量。

但是,提出的預測模型對于銷量波動較大的時間點預測結果偏差較大,在后續工作中,考慮將電商活動和突發事件等影響因素作為特征引入到模型中,以進一步提升模型的預測效果。

猜你喜歡
店鋪銷量編碼
老店鋪雜事
同比增長130%!劍指3萬噸銷量,豐華黃顙料迎來大爆發
基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達圖像配準
《全元詩》未編碼疑難字考辨十五則
蘇軾的店鋪
子帶編碼在圖像壓縮編碼中的應用
盤點2018年車企銷量
Genome and healthcare
2016年度車企銷量排名
上汽通用172萬銷量下的陰影
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合