畢建濤,魏紅芹
(東華大學(xué)旭日工商管理學(xué)院,上海200051)
銷量預(yù)測在企業(yè)的經(jīng)營運(yùn)作中扮演著非常重要的角色.企業(yè)進(jìn)行生產(chǎn)或提供服務(wù)的最終目的都是誘發(fā)消費(fèi)者的購買行為,盡可能多的將產(chǎn)品銷售出去.企業(yè)主要的市場營銷活動(dòng)以及決策制定,也是圍繞著產(chǎn)品銷售而開展的.作為企業(yè)經(jīng)營決策的一個(gè)重要方面,如何及時(shí)而準(zhǔn)確的做好銷售預(yù)測是企業(yè)面對的一個(gè)難題.由于現(xiàn)代企業(yè)的市場營銷環(huán)境日益動(dòng)態(tài)復(fù)雜,一些隨機(jī)性因素如產(chǎn)品季節(jié)性、消費(fèi)偏好、市場促銷活動(dòng)等,會(huì)使得產(chǎn)品的銷售量短時(shí)間內(nèi)出現(xiàn)急劇波動(dòng).傳統(tǒng)的數(shù)量經(jīng)濟(jì)學(xué)模型,如時(shí)間序列預(yù)測法和因果關(guān)系預(yù)測法,都要求時(shí)間序列具有穩(wěn)定的變化趨勢和統(tǒng)計(jì)趨勢[1].這些預(yù)測模型由于受到變量個(gè)數(shù)的限制以及變量之間復(fù)雜關(guān)系的影響,在處理復(fù)雜的、具有隨機(jī)性的時(shí)間序列時(shí),暴露出很大的局限性.
另一方面,人工神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的并行處理能力以及非線性映射能力,在許多實(shí)際工程應(yīng)用特別是預(yù)測領(lǐng)域取得了普遍的重視.然而,由于BP神經(jīng)網(wǎng)絡(luò)采用的是梯度下降訓(xùn)練算法,網(wǎng)絡(luò)不可避免的存在收斂速度慢、學(xué)習(xí)率不穩(wěn)定、容易受到噪聲數(shù)據(jù)影響等不足.理論界的許多學(xué)者對BP神經(jīng)網(wǎng)絡(luò)的改進(jìn)進(jìn)行了研究,并提出了一系列的改進(jìn)方法.例如,針對標(biāo)準(zhǔn)梯度下降算法的局限性,宿延吉等[5]提出了幾種BP網(wǎng)絡(luò)的改進(jìn)算法,包括克服遺忘的BP算法,改變誤差函數(shù)的BP算法、帶有變周期權(quán)值修正的BP算法以及分級學(xué)習(xí)算法等.高海兵等[6]提出了基于連接結(jié)構(gòu)優(yōu)化的粒子群優(yōu)化算法(SPSO)訓(xùn)練神經(jīng)網(wǎng)絡(luò)權(quán)重的同時(shí)訓(xùn)練其連接結(jié)構(gòu),刪除冗余連接,提高網(wǎng)絡(luò)的分類能力.Ruan Q和Wang Y Q[7]提出把主成分分析法和BP網(wǎng)絡(luò)相結(jié)合,用于優(yōu)化隱層神經(jīng)元的個(gè)數(shù)以及BP網(wǎng)絡(luò)訓(xùn)練的初始參數(shù),并進(jìn)行了實(shí)例研究.
針對標(biāo)準(zhǔn)BP算法的局限性,本文提出構(gòu)造基于主成分分析方法的PSO-BP混合預(yù)測模型,分別從樣本質(zhì)量和初始權(quán)值兩個(gè)方面對BP神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn).首先利用主成分分析法對預(yù)測模型的輸入樣本進(jìn)行降維去噪處理,將提取的主成分作為預(yù)測模型新的輸入以簡化BP網(wǎng)絡(luò)結(jié)構(gòu);然后利用粒子群優(yōu)化算法對BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值進(jìn)行優(yōu)化,以提高網(wǎng)絡(luò)的預(yù)測精度;最后通過實(shí)例分析說明該模型的有效性.
主成分分析法(Principal Components Analysis,PCA)是將指標(biāo)轉(zhuǎn)化為少數(shù)幾個(gè)綜合指標(biāo)的一種多元統(tǒng)計(jì)方法.其基本思想是通過變量的相關(guān)關(guān)系矩陣內(nèi)部結(jié)構(gòu)的研究,找出能控制所有變量的少數(shù)隨機(jī)變量,來描述多個(gè)不同變量之間的相關(guān)關(guān)系[8].當(dāng)樣本數(shù)據(jù)維數(shù)較多、結(jié)構(gòu)復(fù)雜的時(shí)候,可以采用主成分分析的方法對樣本數(shù)據(jù)進(jìn)行預(yù)處理,來簡化輸入的樣本數(shù)據(jù)并消除噪聲數(shù)據(jù)的影響.
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)是一種模范動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型.BP神經(jīng)網(wǎng)絡(luò)是目前使用最為廣泛的一種人工神經(jīng)網(wǎng)絡(luò)算法.BP算法由兩部分組成:信息的正向傳播和誤差的反向傳播.BP神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的自學(xué)習(xí)能力,網(wǎng)絡(luò)根據(jù)輸入輸出信號(hào),自適應(yīng)的調(diào)節(jié)網(wǎng)絡(luò)的連接權(quán)值W和閾值b.典型的BP神經(jīng)網(wǎng)絡(luò)包括輸入層、隱含層和輸出層,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
圖1 BP神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)
PSO算法首先生成初始種群,即在解空間中隨機(jī)初始化一群粒子的位置,每一個(gè)粒子代表優(yōu)化問題的一個(gè)可行解,粒子的優(yōu)劣由一個(gè)事先設(shè)定的適應(yīng)度值來確定.每個(gè)粒子將在解空間中運(yùn)動(dòng),并由一個(gè)速度決定其飛行方向和速率大小.然后通過逐代搜索找到最優(yōu)解[9].
設(shè)第i個(gè)粒子在D維搜索空間中的位置為Xi=(xi1,xi2,…,xiD),速度Vi=(vi1,vi2,…,viD)T,其個(gè)體極值Pi=(Pi1,Pi2,…,PiD)T,種群的全局極值Pg=(Pg1,Pg2,…,PgD)T.粒子根據(jù)個(gè)體極值和全局極值更新自身的速度和位置,更新公式如下:
其中w為慣性權(quán)重,c1和c2是學(xué)習(xí)因子,rand1和rand2為分布于[0,1] 之間的隨機(jī)數(shù).同時(shí)為了防止粒子的盲目搜索,通常將粒子的位置和速度限制在[-Xmax,Xmax] 、[-Vmax,Vmax] 范圍內(nèi).
基于PCA的PSO-BP銷量預(yù)測模型的基本思想是:首先,利用主成分分析法對預(yù)測模型的輸入樣本進(jìn)行降維去噪處理,將提取的主成分作為預(yù)測模型新的輸入,然后再利用粒子群優(yōu)化算法對BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值進(jìn)行優(yōu)化,將PSO算法的粒子最優(yōu)解作為網(wǎng)絡(luò)新的權(quán)值和閾值,最后利用充分訓(xùn)練后的BP網(wǎng)絡(luò)對某產(chǎn)品的月銷量進(jìn)行預(yù)測仿真.
基于PCA的PSO-BP算法的預(yù)測流程及具體實(shí)現(xiàn)步驟如下:
第1步對初始樣本數(shù)據(jù)進(jìn)行預(yù)處理.由于初始的樣本數(shù)據(jù)中,不同的輸入變量之間數(shù)值大小以及量綱不同,因此在網(wǎng)絡(luò)訓(xùn)練前需要對數(shù)據(jù)進(jìn)行預(yù)處理,把所有數(shù)據(jù)都轉(zhuǎn)化為[0,1] 范圍內(nèi).函數(shù)形式如下所示:
其中,xmin為樣本數(shù)據(jù)的最小值;xmax為樣本數(shù)據(jù)的最大值.
第2步 對樣本數(shù)據(jù)進(jìn)行主成分分析.?dāng)?shù)據(jù)預(yù)處理之后,就可以對標(biāo)準(zhǔn)化數(shù)據(jù)矩陣進(jìn)行主成分分析,求解樣本系數(shù)矩陣R的特征方程|R-λIp|=0,計(jì)算特征根和特征向量,并且計(jì)算每個(gè)主成分的方差貢獻(xiàn)率與累計(jì)方差貢獻(xiàn)率,提取前m個(gè)較重要的主成分,然后將提取的主成分作為BP網(wǎng)絡(luò)新的輸入.
第3步 初始化BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu).初始化BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)包括設(shè)置網(wǎng)絡(luò)的輸入層、隱含層以及輸出層的神經(jīng)元個(gè)數(shù),同時(shí)建立粒子與BP網(wǎng)絡(luò)的權(quán)值和偏差的映射關(guān)系.對于產(chǎn)品銷量預(yù)測問題,假定網(wǎng)絡(luò)結(jié)構(gòu)為M—N—1,輸出節(jié)點(diǎn)為特定時(shí)刻t的產(chǎn)品銷量.則搜索空間的維度維數(shù)n=(M+1)*N+(N+1).
第4步 慣性權(quán)重和學(xué)習(xí)因子的參數(shù)設(shè)置.慣性權(quán)重w體現(xiàn)的是粒子當(dāng)前速度在多大程度上繼承先前的速度,它將影響粒子的全局搜索能力和局部搜索能力.學(xué)習(xí)因子c1和c2代表將每個(gè)微粒推向Pid和Pgd位置的統(tǒng)計(jì)加速項(xiàng)的權(quán)重.
第5步 粒子位置和速度初始化.隨機(jī)生成個(gè)個(gè)體,每個(gè)個(gè)體由兩部分組成,第一部分為粒子的速度矩陣,第二部分代表粒子的位置矩陣.由于BP神經(jīng)網(wǎng)絡(luò)的權(quán)值與閾值一般初始化為[0,1] 之間的隨機(jī)數(shù),故將粒子群中每個(gè)粒子位置參數(shù)均取為[0,1] 之間的隨機(jī)數(shù),作為PSO算法的初始解集.
第6步 粒子適應(yīng)度值的計(jì)算.粒子位置和速度初始化后,隨機(jī)產(chǎn)生一個(gè)種群,計(jì)算每一個(gè)粒子的適應(yīng)度值.以BP網(wǎng)絡(luò)訓(xùn)練的均方誤差函數(shù)E作為粒子的適應(yīng)度評價(jià)函數(shù),計(jì)算每一個(gè)粒子的適應(yīng)度值.
其中:N為訓(xùn)練樣本的個(gè)數(shù),yreal為第i個(gè)樣本的實(shí)際值,yi為第i個(gè)樣本的預(yù)測值.最后算法迭代停止于適應(yīng)度最低的粒子對應(yīng)的位置,即為所求問題的最優(yōu)解.
第7步尋找個(gè)體極值和全局極值.通過對每一次迭代中粒子適應(yīng)度值進(jìn)行比較,確定每個(gè)粒子的個(gè)體極值和全局最優(yōu)極值.
若Present<Pbest,Pbest=Present,Pbest=xi;否則,Pbest不變;
若Present<gbest,gbest=Present,gbest=xi;否則,gbest不變;
其中,Present為當(dāng)前粒子的適應(yīng)度,Pbest為粒子的個(gè)體極值,gbest為全局最優(yōu)值.
第8步更新每個(gè)粒子的速度和位置.在每一次迭代過程中,李子通過個(gè)體極值和全局極值更新自身的速度Vid和位置Xid,更新公式如下:
其中:w為慣性權(quán)重,c1、c2為加速度因子,r1、r2為分布于[0,1] 之間的隨機(jī)數(shù).
第9步 迭代停止控制.對迭代產(chǎn)生的種群進(jìn)行評價(jià),判斷算法的訓(xùn)練誤差是否達(dá)到期望誤差或最大迭代次數(shù).如果條件滿足則轉(zhuǎn)到步驟(10);否則,返回步驟(6)繼續(xù)迭代.
第10步 最優(yōu)解生成.算法停止迭代時(shí),對應(yīng)的值即為訓(xùn)練問題的最優(yōu)解,即BP神經(jīng)網(wǎng)絡(luò)的權(quán)值與閾值.將上述最優(yōu)解代入BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行二次訓(xùn)練學(xué)習(xí),最終形成產(chǎn)品銷量的混合預(yù)測模型,就可以利用建立的混合預(yù)測模型進(jìn)行銷量預(yù)測.
基于PCA的PSO-BP的算法流程如圖2所示.
為了驗(yàn)證模型的有效性,本文以S品牌服裝為例,選取2009年4月到2011年3月(共24個(gè)月)的月銷售數(shù)據(jù),構(gòu)建基于PCA的PSO-BP銷量預(yù)測模型,對該品牌的月銷售時(shí)間序列進(jìn)行預(yù)測,同時(shí)與標(biāo)準(zhǔn)BP網(wǎng)絡(luò)的預(yù)測效果進(jìn)行了比較.
由于影響服裝產(chǎn)品銷量的因素眾多,本文選取了季節(jié)指數(shù)X1、產(chǎn)品的生命周期X2、促銷價(jià)格折扣X3、節(jié)假日天數(shù)X4,廣告活動(dòng)投入X5、競爭對手的促銷活動(dòng)X6、社會(huì)消費(fèi)品零售總額X7以及居民消費(fèi)價(jià)格指數(shù)X8等8個(gè)因子作為自變量,利用SPSS軟件對影響因素進(jìn)行主成分分析.分析結(jié)果見表1.
圖2 基于PCA的PSO-BP的算法流程圖
表1 主成分的特征值及總方差解釋
從表1可以看出,原始數(shù)據(jù)經(jīng)過主成分分析之后,特征根大于1的主成分有3個(gè).其中第1主成分的特征根為6.468,方差貢獻(xiàn)率為59.326.因此,按照主成分的選取標(biāo)準(zhǔn),我們可以提取3個(gè)主成分,這3個(gè)主成分的累計(jì)解釋方差貢獻(xiàn)率達(dá)到88.344,能夠較好的解釋原始變量的信息.
表2表示的是旋轉(zhuǎn)后的因子載荷矩陣分析結(jié)果.從表2可以看出,第一主成分主要與促銷因素有關(guān),促銷價(jià)格折扣、促銷活動(dòng)天數(shù)、廣告活動(dòng)投入、競爭對手的促銷活動(dòng)對第1主成分的相關(guān)系數(shù)都大于0.8.第2主成分中產(chǎn)品需求的季節(jié)性和產(chǎn)品所處的生命周期相對其它因子貢獻(xiàn)較大,由此可見,第2主成分主要考慮了產(chǎn)品因素.第3主成分則與宏觀經(jīng)濟(jì)因素密切相關(guān).
表2 旋轉(zhuǎn)后的因子載荷矩陣
影響因素的主成分提取完成之后,就可以以主成分的因子得分作為BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型新的輸入,對產(chǎn)品銷量進(jìn)行預(yù)測.為了驗(yàn)證模型的有效性,本文對S品牌服裝2009年4月到2011年3月(共24個(gè)月)的月銷售數(shù)據(jù),進(jìn)行了實(shí)例研究.同時(shí)將樣本數(shù)據(jù)分為訓(xùn)練集和測試集.選取前18組數(shù)據(jù)作為訓(xùn)練集,以對網(wǎng)絡(luò)進(jìn)行充分訓(xùn)練;選取后6組數(shù)據(jù)作為測試集,用來檢驗(yàn)?zāi)P偷男阅埽?/p>
在利用Matlab軟件進(jìn)行仿真之前,需要對模型的相關(guān)參數(shù)進(jìn)行設(shè)置.對于特定的預(yù)測問題,其輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)的個(gè)數(shù)也是確定的.設(shè)置隱含層的節(jié)點(diǎn)個(gè)數(shù)為5,輸出節(jié)點(diǎn)數(shù)為1,即某一時(shí)刻促銷產(chǎn)品銷售量的預(yù)測值.BP網(wǎng)絡(luò)隱含層采用tansig型激活函數(shù),輸出層采用purelin型激活函數(shù).同時(shí),對于PSO算法,采用0.9-0.4線性遞減的慣性權(quán)重策略,學(xué)習(xí)因子c1=c2=2.粒子的最大速度Vmax取值為1,最大循環(huán)迭代次數(shù)Itermax=200.PSO算法最優(yōu)適應(yīng)度函數(shù)值的變化曲線如圖3所示.
由圖3可以看出,PSO算法適應(yīng)度函數(shù)值fitness下降速度很快且較光滑.在迭代初期,適應(yīng)度值急劇下降.經(jīng)過90次循環(huán)迭代之后,PSO適應(yīng)度值基本達(dá)到穩(wěn)定狀態(tài).經(jīng)過200次循環(huán)迭代以后,PSO算法適應(yīng)度的全局最優(yōu)解為3.452.由此可見,采用PSO優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練誤差已經(jīng)達(dá)到較理想的水平.
圖3 適應(yīng)度函數(shù)變化曲線
圖4 模型預(yù)測結(jié)果
圖4表示的是S品牌服裝產(chǎn)品月銷售量的預(yù)測結(jié)果.可見采用基于PCA的PSO-BP混合預(yù)測模型的預(yù)測值與實(shí)際值的擬合精度很高.其中2010年10月的預(yù)測值與實(shí)際值之間的絕對誤差為1.2%,其余的網(wǎng)絡(luò)預(yù)測誤差都很小,絕對誤差低于1%,預(yù)測效果較為理想.同時(shí),為了驗(yàn)證模型的有效性,本文對標(biāo)準(zhǔn)的BP網(wǎng)絡(luò)以及粒子群優(yōu)化的BP網(wǎng)絡(luò)的預(yù)測性能進(jìn)行了對比分析.結(jié)果見表3.
表3 不同預(yù)測模型的性能比較
從表3可以看出,基于PCA的粒群優(yōu)化BP網(wǎng)絡(luò)具有更好的預(yù)測性能.在網(wǎng)絡(luò)訓(xùn)練時(shí)間并未顯著增加的情況下,PSO-BP網(wǎng)絡(luò)的訓(xùn)練誤差以及測試誤差都較低,模型泛化能力更好,由此驗(yàn)證了模型的有效性.
針對影響產(chǎn)品銷量的因素眾多,并且影響因素之間相互作用等特點(diǎn),本文提出把主成分分析法、BP神經(jīng)網(wǎng)絡(luò)以及粒子群優(yōu)化算法相結(jié)合,構(gòu)造混合預(yù)測模型對某品牌服裝產(chǎn)品的月銷售量進(jìn)行預(yù)測.模型有幾方面的優(yōu)點(diǎn):
1)通過主成分分析方法對影響產(chǎn)品銷量的因素進(jìn)行分析,消除了不同影響因素之間的多重共線性以及噪聲數(shù)據(jù)的影響.然后,模型以提取的主成分作為網(wǎng)絡(luò)新的輸入,可以一定程度上簡化BP網(wǎng)絡(luò)隱層節(jié)點(diǎn)的個(gè)數(shù),提高網(wǎng)絡(luò)的泛化能力.
2)利用粒子群算法對BP網(wǎng)絡(luò)的初始參數(shù)進(jìn)行訓(xùn)練,將PSO算法優(yōu)化后的參數(shù)作為BP網(wǎng)絡(luò)的初始權(quán)值和閾值,從而一定程度上改善了梯度下降算法容易陷入局部極小值、預(yù)測精度低等缺點(diǎn).
3)最后,利用建立的模型進(jìn)行了實(shí)例研究,以驗(yàn)證模型的適用性以及性能的提高.
結(jié)果表明,基于PCA的PSO-BP混合預(yù)測方法具有較強(qiáng)的適用性,對于多影響因素的預(yù)測問題能夠取得較好的預(yù)測效果.同時(shí),模型也存在一定的不足和改進(jìn)之處.例如,預(yù)測程序過于復(fù)雜,模型的穩(wěn)定性還需要提高,模型的擴(kuò)展性仍有待進(jìn)一步研究和改進(jìn).
[1] 沈岳.基于時(shí)間序列馬爾科夫鏈的服裝銷售預(yù)測[J] .絲綢,2009(11):32-34.
[2] 林俊,章兢.BP網(wǎng)絡(luò)泛化性能的改善[J] .計(jì)算機(jī)與現(xiàn)代化,2001(3):1-5.
[3] 陸瓊瑜,童學(xué)鋒.BP算法改進(jìn)的研究[J] .計(jì)算機(jī)工程與設(shè)計(jì),2007,28(3):648-650.
[4] Ding S F,Jia W K,Su C Yet al.Neural network research progress and applications in forecast PCA approach to BP learning[J] .Lecture Notes in Computer Science,2008,5264:783-793.
[5] 宿延吉,張漫麗,秦汝增.神經(jīng)網(wǎng)絡(luò)BP算法的研究、實(shí)現(xiàn)及改進(jìn)[J] .哈爾濱理工大學(xué)學(xué)報(bào),1996,1(1):60-65.
[6] 高海兵,高亮,周馳,等.基于粒子群優(yōu)化算法的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法[J] .電子學(xué)報(bào),2004,32(9):1 572-1 574.
[7] Ruan Q,Wang Y Q.PCA approach to BP learning[J] .Journal of Fudan University(Natural Science),2005,44(2):318-322.
[8] 龍訓(xùn)建,錢鞠,梁川.基于主成分分析的BP神經(jīng)網(wǎng)絡(luò)及其在需水預(yù)測中的應(yīng)用[J] .成都理工大學(xué)學(xué)報(bào):自然科學(xué)版,2010,37(2):206-210.
[9] 秦毅男,廖曉輝,趙慶治.一種基于粒子群優(yōu)化算法的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法[J] .河南師范大學(xué)學(xué)報(bào):自然科學(xué)版,2007,35(3):169-171.