圣文順,趙翰馳,孫艷文
1(南京工業(yè)大學(xué)浦江學(xué)院,南京 211200)
2(河海大學(xué) 計算機與信息學(xué)院,南京 210008)
隨著經(jīng)濟環(huán)境的高速發(fā)展,眾多企業(yè)步入科學(xué)化管理時代,但企業(yè)管理人員對企業(yè)的銷售預(yù)測管理方面仍有疏漏,甚至出現(xiàn)了各種問題.比如管理人員常用的銷售預(yù)測模型為專家法,就是靠有經(jīng)驗者的從事經(jīng)驗來對銷售進行人為主觀預(yù)測,與本文提出的改進BP神經(jīng)網(wǎng)絡(luò)算法相比有這快速、簡單的優(yōu)點.但同時也有不可彌補的缺點,每位專家的預(yù)測可能不一樣,帶有嚴(yán)重的差異性與客觀上的不可靠性.還有時間序列方法中最為簡單的指數(shù)平滑法[1],通過不同的權(quán)重來控制預(yù)測的精度,但是隨著預(yù)測時間的延長精確率會大打折扣.再者如ARIMA模型,相對于前兩者就較為復(fù)雜,其原理是利用歷史銷量對未來銷量進行預(yù)測,但是ARIMA模型的建立,需要數(shù)據(jù)集具有趨勢性強的特點,對于趨勢性弱的數(shù)據(jù)集,則通過ARIMA模型得到的結(jié)果預(yù)測效果也不理想.
作者就以上3種預(yù)測方法的優(yōu)缺點,提出進行改進優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)算法預(yù)測模型,同時利用指數(shù)平滑法和遺傳算法模型得到的結(jié)果與改進后的BP神經(jīng)網(wǎng)絡(luò)算法進行對比實驗,以驗證其在準(zhǔn)確度、對數(shù)據(jù)集趨勢性依賴強度、預(yù)測時間長度失準(zhǔn)度方面的優(yōu)化提升.
時間序列,是一組按時間順序排列并隨時間的變化而變化的數(shù)據(jù)序列[2].一個時間序列往往是由上兩點或多點以變化的方式疊加或耦合起來的.
所選擇的二次指數(shù)平滑法[3]處理數(shù)據(jù)可預(yù)防實際在時間序列出現(xiàn)直線形式的上下波動時產(chǎn)生的“滯后”現(xiàn)象[4],并能自動識別數(shù)據(jù)模式的變化,加以調(diào)整.
BP神經(jīng)網(wǎng)絡(luò)是帶有隱含層的多層前饋網(wǎng)絡(luò),是一種誤差反向傳播算法[5].此算法由信息正向傳遞和誤差反向傳播組成,其基本原理是不停地修正網(wǎng)絡(luò)中各層節(jié)點的權(quán)值、閾值,直到網(wǎng)絡(luò)輸出達到目標(biāo)輸出值,且具有很好的泛化能力.
可泛化型時間序列校正下的遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型(簡稱TC_GA_BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型),使用了合并傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)以及遺傳算法[6-8]對BP神經(jīng)網(wǎng)絡(luò)進行改進,利用時間序列預(yù)測值和改進后的GA_BP神經(jīng)網(wǎng)絡(luò)[9-11]進行“誤差值”比較,利用時間序列模型預(yù)測結(jié)果誤差呈增函數(shù)關(guān)系的特點,使用其與GA_BP神經(jīng)網(wǎng)絡(luò)的差值進行一元線性回歸[12,13],討論出兩者之間誤差值的函數(shù)擬合關(guān)系,再利用擬合函數(shù)[14]進行誤差測算,最后通過兩者誤差規(guī)律,校正其中一者的預(yù)測值,這里選擇對GA_BP神經(jīng)網(wǎng)絡(luò)的預(yù)測值進行校正,從而最后得到校正后的預(yù)測值.
已知BP神經(jīng)網(wǎng)絡(luò)算法的收斂速度較慢是由于BP神經(jīng)網(wǎng)絡(luò)算法究其本質(zhì)是梯度下降法,因為需要優(yōu)化的目標(biāo)函數(shù)非常復(fù)雜,所以出現(xiàn)“鋸齒形現(xiàn)象”在所難免,這會使得BP算法低效.與此同時正也因為目標(biāo)函數(shù)的復(fù)雜,BP網(wǎng)絡(luò)的神經(jīng)元輸出在接近0或1的情況下,會出現(xiàn)一些平坦區(qū),在這些平坦區(qū)內(nèi),權(quán)值誤差變化很小,使訓(xùn)練過程幾乎停滯.再者為了使網(wǎng)絡(luò)執(zhí)行BP算法,必須預(yù)先賦予網(wǎng)絡(luò)的步長更新規(guī)則,這樣也會使得算法低效.就此引發(fā)出利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的優(yōu)化方式.
而在面臨小數(shù)據(jù)量的處理情況時,由每個個體獨立討論是有可能利用線性關(guān)系處理非線性問題,真實值與預(yù)測值之間一定會存在誤差.故令距離為d,那么就有dtr為時間序列預(yù)測與真實值之間的誤差,dnr為改進后BP神經(jīng)網(wǎng)絡(luò)與真實值之間的誤差,會出現(xiàn)數(shù)值大小關(guān)系上不同的6種情況.
為解決此問題,對時間與真實值之間的誤差dtr和改進后BP神經(jīng)網(wǎng)絡(luò)與真實值之間的誤差dnr進行一次減法運算,距離令為dtn,對dtn與試驗次數(shù)之間進行一元線性回歸,線性回歸的函數(shù)關(guān)系結(jié)果,視為自校正函數(shù)的核心部分,得到的一元回歸模型忽略隨機擾動項并記總體回歸系數(shù)為 α.
得到了一元回歸模型的具體表達,利用時間序列預(yù)測值減去回歸模型得出的對應(yīng)誤差量,得出修正E值,即可以用來的再次優(yōu)化GA_BP神經(jīng)網(wǎng)絡(luò)的傳遞權(quán)值和各個神經(jīng)元的閾值,以達到利用校正函數(shù)[15]修正GA_BP神經(jīng)網(wǎng)絡(luò)的目的.
在GA_BP神經(jīng)網(wǎng)絡(luò)的優(yōu)化后,依舊存在步長 η的選擇問題,過大的 η會導(dǎo)致收斂過快引起不穩(wěn)定,過小的 η雖然避免了不穩(wěn)定,但是收斂速度就會很慢.此時針對于利用增加優(yōu)化因子 α的方法再對GA_BP算法進行二次優(yōu)化,利用該動量有效的改變 η的值,使得 η不再是一個恒定的值,引入這個優(yōu)化因子之后,使得調(diào)節(jié)向著底部的平均方向變化,不至于產(chǎn)生大的擺動,即優(yōu)化因子起到緩沖平滑的作用.若系統(tǒng)進入誤差函數(shù)面的平坦區(qū),那么誤差將變化很小,于是 Δw(t+1)近似于Δw(t),而平均的 Δw將變?yōu)?其中系數(shù)變得更為有效,使調(diào)節(jié)盡快脫離飽和區(qū),具體在算法中加入“優(yōu)化因子”的關(guān)系式,見式(1):
其中,第二項是傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的修正量,第一項就是上文提及的優(yōu)化因子,α為某一個正數(shù)優(yōu)化因子具體所起作用就是:當(dāng)順序加入訓(xùn)練樣本時,上式可寫成以t為變量的時間序列,t取0到n,因此,上式可看做是Δwij的一階差分方程,對Δwij(n)求解,見式(2):
結(jié)合上面分析結(jié)果,二次改進后wij=wij-ηdjOi的簡單形式,見式(3):
其中,O為各層元素的實際輸出值.
經(jīng)過對GA_BP神經(jīng)網(wǎng)絡(luò)預(yù)測值修正后,可以得到誤差平方和Ec,及E的修正值.利用數(shù)學(xué)方法,對GA_BP神經(jīng)網(wǎng)絡(luò)的權(quán)值與閾值進行再一次帶有優(yōu)化因子的優(yōu)化,步驟如下:
已知輸出層的輸出誤差Ec,見式(4):
其中,W為權(quán)矢量,X為輸入矢量,yj為期望輸出.展開至隱層誤差Ec,見式(5):
最后推導(dǎo)至輸入層Ec,見式(6):
根據(jù)誤差就可以得出權(quán)值函數(shù)wc和vc.最后成功通過再一次的權(quán)值和閾值調(diào)整來更新校正函數(shù),修正GA_BP神經(jīng)網(wǎng)絡(luò),得到TC_GA_BP神經(jīng)網(wǎng)絡(luò).
基于優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的流程圖如圖1所示.
圖1 基于優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的流程圖
利用上文提到的算法對Kaggle競賽數(shù)據(jù)集[16]進行銷售預(yù)測.
使用由Kaggle競賽提供的Restaurant Revenue Prediction數(shù)據(jù)集,抽取其中的一家名為“Stanbul”的餐廳作為實驗對象進行仿真實驗.利用已有銷售額統(tǒng)計的50條數(shù)據(jù),使用時間序列預(yù)測模型的二次指數(shù)平滑法對其進行時間序列仿真預(yù)測,而且與一次指數(shù)平滑法的結(jié)果做對比仿真結(jié)果如圖2、圖3.
圖2 一次平滑指數(shù)預(yù)測圖
圖3 二次平滑指數(shù)預(yù)測圖
經(jīng)過試驗,實驗結(jié)果與理論預(yù)測完全符合,一次指數(shù)平滑法在25個數(shù)據(jù)集仿真結(jié)果中,出現(xiàn)了大量的滯后反應(yīng),無論α=0.2,α=0.5還是α=0.8都無法改變滯后反映,這也正體現(xiàn)了二次指數(shù)平滑預(yù)測較高的準(zhǔn)確度(誤差率25.7471%),為下文提供了可行方案.
將優(yōu)化后的 BP 神經(jīng)網(wǎng)絡(luò)算法,與經(jīng)典 BP 神經(jīng)網(wǎng)絡(luò)、時間序列模型、遺傳算法改進神經(jīng)網(wǎng)絡(luò)進行銷售預(yù)測的比較.在已有銷售額統(tǒng)計的50條數(shù)據(jù)中,抽取其中的25條作為仿真訓(xùn)練集,剩余的25條作為仿真驗證集,用于驗證誤差.3種算法的誤差對比分析如圖4、圖5和圖6所示.
圖4 傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)預(yù)測圖(誤差為50.2401%)
圖5 遺傳算法BP神經(jīng)網(wǎng)絡(luò)預(yù)測圖(誤差為23.629%)
圖6 TC_GA_BP神經(jīng)網(wǎng)絡(luò)預(yù)測圖(誤差為12.088%)
由圖像直觀看出,在相應(yīng)的被修正點上,預(yù)測值比遺傳算法改進BP神經(jīng)網(wǎng)絡(luò)的結(jié)果預(yù)測值更為接近真實值結(jié)果,而誤差率也降至約12%,提高近11%.由此可知,新提出的TC_GA_BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)測輸出結(jié)果,在預(yù)測的準(zhǔn)確度上大大改善,比另外3種模型的預(yù)測更加接近未來真實值.
部分預(yù)測結(jié)果如表1所示.
表1 預(yù)測結(jié)果對比
統(tǒng)計數(shù)據(jù)表明,TC_GA_BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型的仿真效果最好,達到12.088%;而傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的結(jié)果誤差最大,達到50.2401%,被認(rèn)為是不可信的預(yù)測模型;時間序列預(yù)測模型和改進后的BP神經(jīng)網(wǎng)絡(luò)都有良好的仿真實驗,但仍沒達到TC_GA_BP神經(jīng)網(wǎng)絡(luò)的預(yù)測精度.因此TC_GA_BP神經(jīng)網(wǎng)絡(luò)在同屬性的數(shù)據(jù)集預(yù)測上優(yōu)于其他3種預(yù)測模型.
文章首先采用時間序列模型減少源數(shù)據(jù)的誤差,利用優(yōu)化后的BP 神經(jīng)網(wǎng)絡(luò),建立起適當(dāng)?shù)匿N售預(yù)測模型,并具體應(yīng)用于某數(shù)據(jù)集中.實驗表明優(yōu)化后的 BP神經(jīng)網(wǎng)絡(luò)算法在提高了預(yù)測準(zhǔn)確度和收斂速度的同時,也簡化了網(wǎng)絡(luò)結(jié)構(gòu),減少了數(shù)據(jù)的誤差.由于可利用于訓(xùn)練網(wǎng)絡(luò)的數(shù)據(jù)量太少,導(dǎo)致網(wǎng)絡(luò)訓(xùn)練情況不佳,達到的準(zhǔn)確度不是太高.如需進一步的深入研究,可考慮在現(xiàn)有算法基礎(chǔ)上訓(xùn)練更多的數(shù)據(jù)集.