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