王麗紅
(煙臺汽車工程職業(yè)學(xué)院 經(jīng)濟(jì)管理系,煙臺 265500)
近年來,電子商務(wù)的發(fā)展勢頭強(qiáng)勁,一度對傳統(tǒng)的實(shí)體經(jīng)濟(jì)產(chǎn)生了非常大的沖擊.僅2019年上半年,銷售額已經(jīng)達(dá)到了驚人的195209.7 億元[1],且2019年天貓雙十一購物節(jié)活動成交額突破100 億,僅用了1 分36 秒,這在以往的傳統(tǒng)零售行業(yè)內(nèi)幾乎是無法想象的[2].隨著電商行業(yè)的興起,國內(nèi)涌現(xiàn)出天貓、淘寶、京東等大型電商平臺,并產(chǎn)生了B2B、B2C、C2C 等許多新模式,這些足以看出電商行業(yè)巨大的發(fā)展?jié)摿3].
由于電子商務(wù)具有數(shù)據(jù)化、集成化、互動化的特性,使得電子商務(wù)會計(jì)系統(tǒng)與其他傳統(tǒng)會計(jì)系統(tǒng)相比具有更大的數(shù)據(jù)規(guī)模,同樣也蘊(yùn)藏了更多待挖掘的數(shù)據(jù)信息[4,5].各電商企業(yè)在產(chǎn)品銷售過程中會產(chǎn)生大量的銷售數(shù)據(jù),如何處理這些銷售數(shù)據(jù),并從中發(fā)掘銷量變化的規(guī)律,指導(dǎo)電商企業(yè)制訂策略,對電商企業(yè)管理具有十分重要的意義[6].同時,銷量預(yù)測也是新型電子商務(wù)會計(jì)系統(tǒng)中一個重要的組成模塊[7].
目前,各個行業(yè)的銷量預(yù)測方法大多是依據(jù)歷史銷量對未來銷量的預(yù)測.付敏娟等人考慮了指數(shù)平滑模型較大的預(yù)測誤差和神經(jīng)網(wǎng)絡(luò)的過擬合問題,提出了用二次指數(shù)平滑序列改進(jìn)BP 神經(jīng)網(wǎng)絡(luò)的指數(shù)平滑神經(jīng)網(wǎng)絡(luò)太陽能熱水器銷售預(yù)測模型[8].圣文順等用遺傳算法改進(jìn)傳統(tǒng)的BP 神經(jīng)網(wǎng)絡(luò),并用時間序列對模型進(jìn)一步校正,大大降低了預(yù)測誤差[9].王建偉利用產(chǎn)品銷售共性提取產(chǎn)品聚類簇,再使用時間序列模型得出預(yù)測結(jié)果并通過隱馬爾科夫預(yù)測模型給出預(yù)測結(jié)果的概率分布[10].上述銷量預(yù)測方法均采用常用的時間序列模型,說明基于歷史數(shù)據(jù)的銷量預(yù)測具有更高的可行性和可靠性.由于BP 神經(jīng)網(wǎng)絡(luò)存在的過擬合、收斂慢、誤差大等問題,采用其他方法對神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn)也是較為可行的方法.
本文建立了一種電子商務(wù)會計(jì)系統(tǒng)中的短期銷量預(yù)測模型,其以日銷量為預(yù)測單位,并考慮電商行業(yè)內(nèi)較為常見的“周末效應(yīng)”改進(jìn)時間窗的時序設(shè)計(jì)和預(yù)測模型結(jié)構(gòu).運(yùn)用AdaBoost 思想集合多個傳統(tǒng)的BP 神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果,通過增加弱預(yù)測器數(shù)量重點(diǎn)學(xué)習(xí)預(yù)測錯誤的樣本并分配預(yù)測器權(quán)重,根據(jù)預(yù)測器權(quán)重組合多個BP 神經(jīng)網(wǎng)絡(luò)(以下簡稱BPN)的模型輸出建立一個準(zhǔn)確率更高的預(yù)測模型.短期銷量預(yù)測對于迅速反應(yīng)電商行情變化,制訂短期內(nèi)穩(wěn)定銷量的應(yīng)對方案和促銷計(jì)劃具有重要的意義.
BPN是機(jī)器學(xué)習(xí)領(lǐng)域應(yīng)用較為廣泛的一種神經(jīng)網(wǎng)絡(luò)算法,常用于模式識別、數(shù)據(jù)分類、數(shù)據(jù)挖掘等領(lǐng)域.BPN 實(shí)際上是一個大型的雙向循環(huán)的迭代計(jì)算模型,正向計(jì)算過程是簡單的輸出結(jié)果計(jì)算,反向的誤差修正計(jì)算是BPN的算法核心,通過Widrow-Hoff 學(xué)習(xí)規(guī)則對各節(jié)點(diǎn)的權(quán)值進(jìn)行反復(fù)的修正,直至輸出結(jié)果誤差小于期望閾值[11–13].常見的BPN 一般為3 層結(jié)構(gòu),分別為輸入層、隱含層和輸出層,較為復(fù)雜的工程可能用到多隱含層的網(wǎng)絡(luò)結(jié)構(gòu),3 層BPN的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
AdaBoost 算法也是一種迭代算法,其思想來源于Hansen 提出的同一樣本的多個神經(jīng)網(wǎng)絡(luò)的組合能夠提高網(wǎng)絡(luò)泛化能力的理論[14].針對用于數(shù)據(jù)預(yù)測的算法,AdaBoost 算法是按照一定的規(guī)則將多個BPN 弱預(yù)測器集合為一個強(qiáng)預(yù)測器.這里所提到的多個BPN 預(yù)測器集合的規(guī)則就是AdaBoost 算法的核心規(guī)則,與BPN的節(jié)點(diǎn)權(quán)重修正類似,也是通過計(jì)算各BPN 弱預(yù)測器的權(quán)重對BPN 弱預(yù)測器的結(jié)果進(jìn)行組合[15,16].
圖1 3 層BPN 網(wǎng)絡(luò)結(jié)構(gòu)圖
AdaBoost 算法的具體執(zhí)行步驟如下:
1)首先,對每一個輸入樣本設(shè)置權(quán)重ω1(n)=1/N,N為樣本總數(shù).利用第1 個BPN 弱預(yù)測器進(jìn)行第1 次訓(xùn)練,并計(jì)算錯誤率εi.
2)利用錯誤率按照式(2)計(jì)算BPN 弱預(yù)測器的權(quán)重αi,i為BPN 弱預(yù)測器編號.
3)按照式(3)規(guī)則確定第2 個BPN 弱預(yù)測器的樣本權(quán)值,增加預(yù)測不準(zhǔn)確的樣本的權(quán)值,降低預(yù)測準(zhǔn)確的樣本的權(quán)值,即重點(diǎn)學(xué)習(xí)預(yù)測錯誤的樣本,其中hi(xn)為第i個BPN 弱預(yù)測器第n個樣本的預(yù)測結(jié)果.
4)按照上述規(guī)律一直進(jìn)行迭代計(jì)算直至第I個BPN 弱預(yù)測器,得到I個BPN 弱預(yù)測器的權(quán)重集合{α1,α2,···,αI},按照式(4)計(jì)算所有BPN 弱預(yù)測器的集合預(yù)測結(jié)果,其中sign 代表符號函數(shù).
BPN 弱預(yù)測器均采用2 層隱含層的BPN,BPN的隱含層節(jié)點(diǎn)數(shù)量采用式(5)確定.
其中,Nh為隱含層節(jié)點(diǎn)數(shù)量;Ni為輸入層節(jié)點(diǎn)數(shù)量,由預(yù)測樣本數(shù)據(jù)的維數(shù)決定;Nh為輸出層節(jié)點(diǎn)數(shù)量,由預(yù)測結(jié)果數(shù)據(jù)維數(shù)決定,R為[0,10]之間的隨機(jī)數(shù).神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,不是隱含層節(jié)點(diǎn)數(shù)量越多訓(xùn)練效果越好,因此具體的隱含層節(jié)點(diǎn)數(shù)量需要進(jìn)行大量的訓(xùn)練試驗(yàn)來確定.BPN 弱預(yù)測器的輸入為歷史銷售數(shù)據(jù),輸出結(jié)果為銷量預(yù)測數(shù)據(jù).
AdaBoost-BPN 預(yù)測模型的實(shí)質(zhì)是將BPN 弱預(yù)測器融入AdaBoost的算法的過程中,AdaBoost 算法通過不斷增加BPN 弱預(yù)測器數(shù)量強(qiáng)化訓(xùn)練那些預(yù)測結(jié)果不準(zhǔn)確的樣本,直至預(yù)測誤差達(dá)到設(shè)置的誤差閾值.AdaBoost 算法的輸入為BPN 弱預(yù)測器模型和樣本數(shù)據(jù),輸出為多個BPN 弱預(yù)測器的預(yù)測模型和權(quán)重,并組合得到一個強(qiáng)預(yù)測器.AdaBoost-BPN 預(yù)測模型流程圖如圖2所示.
圖2 AdaBoost-BPN 預(yù)測模型流程圖
目前常見的銷量預(yù)測模型大多以月銷量或者周銷量作為基本預(yù)測單位[17,18],隨著電商行業(yè)規(guī)模的不斷增大,入駐電商領(lǐng)域的商家越來越多,甚至以個人為主導(dǎo)的C2C 商業(yè)模式也展現(xiàn)出較大的活力和發(fā)展?jié)摿?電商行業(yè)的競爭愈發(fā)激烈[19].在這種情況下,以往的銷量預(yù)測方法已經(jīng)無法保證預(yù)測的及時性,因此本文建立的AdaBoost-BPN 短期銷量預(yù)測模型以日銷量作為預(yù)測基本單位.
基于時序數(shù)據(jù)的預(yù)測任務(wù)通常用時間窗口切割時間軸來獲得訓(xùn)練樣本,本文建立的時間軸設(shè)計(jì)了兩個固定跨度的時間窗口,觀測時間窗和預(yù)測時間窗[20,21].本文以某電商平臺商家LMAZ-CG1520 型號牛仔褲的歷史銷量和鏈接點(diǎn)擊量數(shù)據(jù)作為模型的訓(xùn)練和測試數(shù)據(jù).該組數(shù)據(jù)具有較為明顯的分布特征,同一周內(nèi)工作日的銷量和周末的銷量會一般存在較大的差別,周末兩天的日銷量會明顯高于工作日5 天的日銷量,本文稱之為電商的“周末效應(yīng)”.除了特殊節(jié)假日和平臺促銷活動期間,其他時間的銷量基本遵循以一周為周期的短期循環(huán).為了使模型的訓(xùn)練能夠全面采集一周內(nèi)的銷量變化特征,同時考慮“周末效應(yīng)”的影響,本文采用觀測時間窗跨度為5,預(yù)測時間窗跨度為3,當(dāng)時間軸總跨度為n時,即以n天的歷史銷量數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,將得到n?5+1 組訓(xùn)練數(shù)據(jù),時間軸的劃分如圖3所示.
圖3 時間軸劃分圖
AdaBoost-BPN 短期銷量預(yù)測模型的觀測時間窗跨度為5 天,常規(guī)的事件窗采樣無法判斷觀測時段內(nèi)是否存在周末,因此本文在模型的輸入部分增加了1 個輸入層節(jié)點(diǎn),該輸入節(jié)點(diǎn)稱為“周末因子”.電子商務(wù)銷量歷史數(shù)據(jù)中包含該條記錄的時間標(biāo)簽,判斷該條記錄是否為周末的銷量較為簡單.當(dāng)“周末因子”為1 時,代表此次訓(xùn)練樣本中包含周末銷量,能夠幫助網(wǎng)絡(luò)調(diào)整權(quán)重,5 組輸入數(shù)據(jù)相鄰的兩組明顯偏高的數(shù)據(jù)或者邊緣1 組明顯偏高的數(shù)據(jù)即為周末銷量;當(dāng)“周末因子”為0 時,代表此次訓(xùn)練樣本均為工作日銷量.
電商平臺中某商品的銷量與該商品鏈接的點(diǎn)擊量有直接關(guān)系,模型輸入中應(yīng)包含該商品的歷史銷量、歷史點(diǎn)擊量和“周末因子”.因此,單個BPN 弱預(yù)測器一共有11 個輸入節(jié)點(diǎn),3 個輸出節(jié)點(diǎn),共設(shè)置兩層隱含層,第一層隱含層采用tansig 函數(shù)作為傳遞函數(shù),第二層隱含層采用pureline 函數(shù)作為傳遞函數(shù),經(jīng)過大量的訓(xùn)練測試,隱含層節(jié)點(diǎn)數(shù)分別為13和3 時,模型的訓(xùn)練效果最佳,訓(xùn)練次數(shù)為1000 次時,網(wǎng)絡(luò)計(jì)算精度可以達(dá)到0.01.加入“周末因子”的AdaBoost-BPN 短期銷量預(yù)測模型中單個BPN 弱預(yù)測器的結(jié)構(gòu)如圖4所示.
圖4 單個BPN 弱預(yù)測器結(jié)構(gòu)圖
實(shí)驗(yàn)數(shù)據(jù)取自某電商商家2019年第三、四季度LMAZ-CG1520 型號牛仔褲的歷史銷量數(shù)據(jù)和歷史點(diǎn)擊量數(shù)據(jù),其中有效數(shù)據(jù)段共184 條,采用7、8、9、10、11月份的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,數(shù)據(jù)段共153 條,有效訓(xùn)練樣本149 組.12月份數(shù)據(jù)作為測試數(shù)據(jù)集,數(shù)據(jù)段共31 條.分別采用普通BPN 弱預(yù)測器、AdaBoost-BPN 預(yù)測模型和加入“周末因子”的AdaBoost-BPN 預(yù)測模型進(jìn)行銷量預(yù)測實(shí)驗(yàn),預(yù)測結(jié)果采用預(yù)測誤差進(jìn)行評價.圖5為不同模型的銷量預(yù)測測試結(jié)果,以及預(yù)測結(jié)果與真實(shí)數(shù)據(jù)的對比.圖5中不同預(yù)測模型的預(yù)測曲線表明,加入“周末因子”的AdaBoost-BPN 預(yù)測模型的預(yù)測曲線與實(shí)際銷量的重合度最高,沒有加入“周末因子”的AdaBoost-BPN 預(yù)測模型表現(xiàn)稍差,而只用一個普通的BPN 弱預(yù)測器的預(yù)測結(jié)果偏差很大.
表1為不同模型的平均預(yù)測誤差對比.由表1結(jié)果分析,采用普通BPN 弱預(yù)測器的誤差遠(yuǎn)遠(yuǎn)大于AdaBoost-BPN 預(yù)測模型的誤差,說明基于AdaBoost 思想集合多個BPN 弱預(yù)測器結(jié)果能夠提升預(yù)測的準(zhǔn)確率;AdaBoost-BPN 預(yù)測模型與普通BPN 弱預(yù)測器相比,預(yù)測效果得到了較為明顯的提升,但是由于沒有考慮“周末效應(yīng)”,一些特殊的樣本數(shù)據(jù)拉低了整體的預(yù)測效果;AdaBoost-BPN 預(yù)測模型在添加了“周末因子”后,平均預(yù)測誤差明顯降低,可以達(dá)到20%以內(nèi),預(yù)測效果得到了極大的提升.
圖5 銷量預(yù)測測試結(jié)果
表1 不同模型平均預(yù)測誤差對比(%)
本文在建立時間軸時,考慮到電商銷量的“周末效應(yīng)”,確定的觀測時間窗跨度為5 天,為了探究選取的觀測時間窗跨度對預(yù)測效果的影響,采用加入“周末因子”的AdaBoost-BPN 預(yù)測模型,將歷史時間窗跨度分別設(shè)置為3、4、5、6、7 再次進(jìn)行預(yù)測實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表2所示.
表2 不同時間窗平均預(yù)測誤差對比(%)
由表2結(jié)果分析,觀測時間窗跨度為3和4 時,樣本數(shù)據(jù)隱藏的信息量不足,而且預(yù)測時間窗為3 天,理論上觀測時間窗應(yīng)大于預(yù)測時間窗,較短的觀測時間窗跨度無法準(zhǔn)確體現(xiàn)銷量變化特征,因此平均預(yù)測誤差相對較大;觀測時間窗跨度為6和7 時,本文所建立的“周末因子”形同虛設(shè),模型無法準(zhǔn)確反映“周末效應(yīng)”帶來的影響,因此平均預(yù)測誤差偏大;只有觀測時間窗跨度5 時,預(yù)測模型發(fā)揮出最良好的預(yù)測能力,同時證明了“周末因子”的加入可以有效提升預(yù)測的準(zhǔn)確度.
在電商行業(yè)迅速發(fā)展的大背景下,本文針對目前已有的商品銷量預(yù)測模型預(yù)測誤差大、無法滿足商家對行情變化的迅速應(yīng)變的問題,提出了一種電子商務(wù)會計(jì)系統(tǒng)中的短期銷量預(yù)測模型.該模型以日銷量作為預(yù)測基本單位,采用近5 天的銷量數(shù)據(jù)和點(diǎn)擊量數(shù)據(jù)對未來3 天的銷量變化情況進(jìn)行預(yù)測.借鑒AdaBoost思想集合多個BPN 弱預(yù)測器形成強(qiáng)預(yù)測器,提高預(yù)測準(zhǔn)確率.提出合理的日銷量預(yù)測的時間軸設(shè)計(jì)方法,根據(jù)電商產(chǎn)品銷量的變化特性為預(yù)測模型添加“周末因子”,使預(yù)測模型具備辨識“周末效應(yīng)”的能力.實(shí)驗(yàn)測試結(jié)果表明,加入“周末因子”的AdaBoost-BPN 預(yù)測模型平均預(yù)測誤差在20%以內(nèi),能夠有效預(yù)測未來短期內(nèi)的銷量變化情況,對電商企業(yè)及時掌握產(chǎn)品銷售情況,并對短期內(nèi)存在的銷售風(fēng)險制訂及時有效的應(yīng)對措施具有重要的意義.