沈澤君,楊文元,2
1(閩南師范大學(xué) 福建省粒計(jì)算及其應(yīng)用重點(diǎn)實(shí)驗(yàn)室,福建 漳州 363000) 2(閩南師范大學(xué) 數(shù)據(jù)科學(xué)與智能應(yīng)用福建省高等學(xué)校重點(diǎn)實(shí)驗(yàn)室,福建 漳州 363000)
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種模擬人腦神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)從而具有一定預(yù)測(cè)功能的數(shù)學(xué)模型,由于具有較強(qiáng)的自學(xué)習(xí)能力、自適應(yīng)能力以及容錯(cuò)能力等優(yōu)點(diǎn),使它成為一種比較適合金融趨勢(shì)預(yù)測(cè)的方法[1,2].BP算法主要由兩部分構(gòu)成,信號(hào)的正向傳播和誤差的反向傳播,其結(jié)構(gòu)主要由輸入層、若干層隱含層、輸出層三部分組成[3].正向傳播就是輸入信號(hào)經(jīng)輸入層到隱含層進(jìn)行的非線性變換,并產(chǎn)生和輸出信號(hào).若輸出信號(hào)與期望輸出不相符,則轉(zhuǎn)入誤差的反向傳播過(guò)程.反向傳播的過(guò)程就是將誤差通過(guò)隱含層向輸入層逐層反向傳遞,將其分解到各層,各隱含層以此作為調(diào)整權(quán)值與閾值的依據(jù).經(jīng)過(guò)反復(fù)的訓(xùn)練學(xué)習(xí),以目標(biāo)的負(fù)梯度方向?qū)?shù)進(jìn)行調(diào)整,最終確定與最小誤差相對(duì)應(yīng)的網(wǎng)絡(luò)參數(shù)[4].
BP神經(jīng)網(wǎng)絡(luò)在對(duì)非線性預(yù)測(cè)中有很強(qiáng)的適應(yīng)能力[1,5].目前基于BP神經(jīng)網(wǎng)絡(luò)在金融趨勢(shì)預(yù)測(cè)上的研究主要是通過(guò)調(diào)整BP網(wǎng)絡(luò)的相關(guān)參數(shù)來(lái)提高預(yù)測(cè)精準(zhǔn)度[6-9].金融趨勢(shì)的周期性變化多端,不同周期對(duì)預(yù)測(cè)結(jié)果的影響不一,而傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)對(duì)其預(yù)測(cè)是基于單個(gè)周期的,沒(méi)有很好地考慮不同周期走勢(shì)下的相互影響[10,11].BP神經(jīng)網(wǎng)絡(luò)能夠較好的模擬人腦神經(jīng),在金融趨勢(shì)預(yù)測(cè)上具有較強(qiáng)的適應(yīng)能力.但是由于金融趨勢(shì)會(huì)受到多因素的影響,并且影響不一,傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)是基于單周期粒度,其預(yù)測(cè)模型與人腦思維還是有所不同.
金融趨勢(shì)的不同周期從粒計(jì)算的角度來(lái)解釋,就是數(shù)據(jù)集中的不同粒度.粒計(jì)算是當(dāng)前人工智能研究領(lǐng)域中模擬人類思維和解決復(fù)雜問(wèn)題的新方法[12].粒計(jì)算的基本組成主要包括粒子、粒層和粒結(jié)構(gòu).粒子是一個(gè)較為模糊的統(tǒng)稱,它是構(gòu)成粒計(jì)算模型的最基本元素,例如本文的實(shí)驗(yàn)對(duì)象股票收盤價(jià),當(dāng)天的收盤價(jià)就是一個(gè)小粒子,一周的收盤價(jià)就是一個(gè)較大的粒子.粒層這個(gè)概念的提出就是為了區(qū)分這些顆粒,粒層就是在處理某項(xiàng)問(wèn)題時(shí),對(duì)處理對(duì)象進(jìn)行一定的劃分,這個(gè)劃分可以看成是對(duì)處理對(duì)象進(jìn)行了一個(gè)分類[13].對(duì)于現(xiàn)實(shí)中人腦對(duì)金融趨勢(shì)的預(yù)測(cè),會(huì)根據(jù)不同粒度的不同作用進(jìn)行一個(gè)綜合的考量,其考量的過(guò)程在傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)中較難體現(xiàn)[14].
本文提出的粒計(jì)算思維的BP神經(jīng)網(wǎng)絡(luò)(Back Propagation on Granular Computing,BPGC)彌補(bǔ)了傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)這方面的不足.BPGC算法先通過(guò)對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,即對(duì)數(shù)據(jù)集進(jìn)行不同粒度的劃分,構(gòu)造粒度矩陣;然后根據(jù)不同的粒度矩陣進(jìn)行BP訓(xùn)練得出各粒度的不同影響力,即各粒度的權(quán)值;最后對(duì)各粒度下的預(yù)測(cè)結(jié)果進(jìn)行加權(quán)平均,得出最終的預(yù)測(cè)結(jié)果.BPGC能夠較好的模擬人腦在對(duì)金融趨勢(shì)預(yù)測(cè)時(shí)不同粒度相互影響的過(guò)程,在綜合考量不同粒度影響力時(shí)加入了權(quán)值的方法,比人腦的經(jīng)驗(yàn)評(píng)判更具邏輯性.
在浦發(fā)銀行股票收盤價(jià)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),根據(jù)2017年全年的數(shù)據(jù)進(jìn)行模型訓(xùn)練,依次預(yù)測(cè)2018年前10天的收盤價(jià)數(shù)據(jù).實(shí)驗(yàn)結(jié)果表明,BPGC算法在金融趨勢(shì)預(yù)測(cè)上優(yōu)于傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法,具有較高的精準(zhǔn)度.
BP算法利用輸出結(jié)果與真實(shí)結(jié)果的誤差來(lái)估計(jì)輸出層的前一層誤差,再用這層誤差來(lái)估計(jì)更前一層的誤差[15],如此反復(fù)獲取各層的誤差估計(jì),其具體的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示.
圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Structure graph of BP neural network
其中,X=(x1,x2,…,xn)T是輸入向量;O1是實(shí)際輸出值;Y=(y1,y2,…,ym)T和P=(p1,p2,…,pt)T是隱含層輸出;V=(v1,v2,…,vm)T和W=(w1,w2,…,wl)T是第一隱含層和第二隱含層的權(quán)值矩陣.
BP神經(jīng)網(wǎng)絡(luò)算法的信號(hào)由正向傳播和反向傳播兩階段構(gòu)成.
BP神經(jīng)網(wǎng)絡(luò)的具體算法描述如下:
1)正向傳播階段
①輸入層輸入:x1~xn.
②第一層隱含層輸出:
(1)
其中Vmn為第一層隱含層權(quán)值,θm為節(jié)點(diǎn)閾值.
③第二層隱含層輸出:
(2)
其中wlm為第二層隱含層權(quán)值,θl為節(jié)點(diǎn)閾值.
④輸出層輸出:
(3)
2)反向傳播階段
沿著誤差函數(shù)相反的梯度方向修改權(quán)值,使得網(wǎng)絡(luò)模型收斂[4],輸出層的權(quán)值修改ΔTtl為:
(4)
由此可得修改后的輸出層權(quán)值為:
Til(k+1)=Til(k)-ηΔTil,
(5)
其中η為經(jīng)驗(yàn)步長(zhǎng).
同理可求得第一層隱含層的權(quán)值修改ΔVmn和第二層隱含層的權(quán)值修改ΔWlm.
由此可得修改后的第一層隱含層權(quán)值為:
ΔVmn(k+1)=Vmn(k)-ηΔVmn,
(6)
其中η為其經(jīng)驗(yàn)步長(zhǎng).
第二層隱含層權(quán)值為:
ΔWlm(k+1)=Wlm(k)-ηΔWlm,
(7)
其中η為其經(jīng)驗(yàn)步長(zhǎng).
由于金融趨勢(shì)數(shù)據(jù)在一定時(shí)間范圍內(nèi)會(huì)著落在一個(gè)數(shù)值區(qū)域[16].所以在預(yù)測(cè)前要對(duì)數(shù)據(jù)采取歸一化處理,通過(guò)控制數(shù)據(jù)集的著落范圍來(lái)提高BP運(yùn)算效率.歸一化的計(jì)算式為:
(8)
其中xmax和xmin分別是數(shù)據(jù)集X的最大值和最小值,xn為輸入值,xp為歸一化后的輸出結(jié)果.
設(shè)K=(U,R)是一個(gè)數(shù)據(jù)集,p∈R是U上的一個(gè)等價(jià)關(guān)系,其中U/P={z1,z2,…,zn}.P的粒度記為GD(P),其具體的計(jì)算式為:
(9)
P的粒度表示其分辨能力[13,17],對(duì)?u,v∈U,當(dāng)(u,v)∈P時(shí),u、v在P下不可分辨,屬于P的同一個(gè)等價(jià)類;若不可分辨,則屬于不同的p-等價(jià)類.由此可得,GD(p)表示在U中隨機(jī)挑選的兩個(gè)對(duì)象的P-不可分辨的可能性的大小,其值越大表示分辨能力越弱[12,18,19].
人腦在對(duì)金融趨勢(shì)進(jìn)行預(yù)測(cè)時(shí),會(huì)多方面考慮不同周期的數(shù)據(jù)走勢(shì)情況,例如會(huì)對(duì)日線、周線、月線甚至是季度、年度走勢(shì)進(jìn)行綜合考慮,然后才能較為精準(zhǔn)的預(yù)測(cè)下一天的走勢(shì)[20].對(duì)此,需要構(gòu)造一個(gè)粒度矩陣,方便BP算法對(duì)其運(yùn)算,其構(gòu)造步驟如下:
①選取數(shù)據(jù)集x1至xn的一維矩陣,記為S,其中S的長(zhǎng)度為L(zhǎng)S.
②構(gòu)造k行,Ls-k列的k粒度構(gòu)造過(guò)渡矩陣H,H矩陣的第n行數(shù)據(jù)為:H(n,n:LS)=S(1,1:LS-n-1).
③取k粒度構(gòu)造過(guò)渡矩陣H的部分矩陣為構(gòu)造完畢矩陣Hk,其Hk的取值過(guò)程為:Hk(1:k,1:LS-k+1)=H(1:k,k-1:LS).
其構(gòu)造過(guò)程如圖2所示.
圖2 數(shù)據(jù)集粒度矩陣構(gòu)造過(guò)程Fig.2 Process of constructing granularity matrix
其中一維數(shù)據(jù)中的k表示xk,n表示xn;構(gòu)造完畢后的第一行數(shù)據(jù)為xk至xn,最后一行數(shù)據(jù)為x1至xn-k+1,第一列數(shù)據(jù)為(xk,xk-1, …,x1)T.
為提高運(yùn)算效率,對(duì)粒度矩陣不可直接利用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行運(yùn)算,需根據(jù)公式(8)進(jìn)行歸一化預(yù)處理.得到的各粒度下的歸一化矩陣記為Hpk,圖3表示的是k粒度下的歸一化矩陣Hpk.
圖3 k粒度下歸一化矩陣HpkFig.3 Normalized matrix Hpk under k granularity
歸一化后的粒度矩陣Hpk的數(shù)值均在-1到1之間.在對(duì)其進(jìn)行BP訓(xùn)練時(shí),把某列作為輸入,輸出結(jié)果與下一列第一個(gè)數(shù)據(jù)進(jìn)行學(xué)習(xí)比對(duì).如第一列(xpk,xpk-1, …,xp1)T作為輸入時(shí),則與第二列的xpk+1進(jìn)行學(xué)習(xí)比對(duì).然后反方向傳播誤差,各層根據(jù)誤差對(duì)參數(shù)進(jìn)行相應(yīng)的調(diào)整,調(diào)整后再對(duì)輸入數(shù)據(jù)進(jìn)行正向傳播.以此類推,當(dāng)誤差達(dá)到設(shè)定范圍內(nèi),得出一個(gè)訓(xùn)練模型.
根據(jù)不同粒度下的數(shù)據(jù)樣本劃分,經(jīng)過(guò)BP神經(jīng)網(wǎng)絡(luò)的運(yùn)算,得到的預(yù)測(cè)值是不同的.根據(jù)人腦對(duì)于金融趨勢(shì)的預(yù)測(cè)經(jīng)驗(yàn),要預(yù)測(cè)出一個(gè)較為精準(zhǔn)的預(yù)測(cè)結(jié)果,需要對(duì)多粒度下的預(yù)測(cè)結(jié)果進(jìn)行綜合考慮,對(duì)此BPGC算法須對(duì)各粒度下的預(yù)測(cè)數(shù)值進(jìn)行加權(quán).而各粒度的權(quán)值與其預(yù)測(cè)誤差有關(guān),誤差計(jì)算式為公式(10),其中di表示第i天的真實(shí)值.
(10)
各粒度下第i天的預(yù)測(cè)值與真實(shí)值的誤差值為Err(oi),但為了便于比較該粒度下對(duì)其預(yù)測(cè)的誤差率,需要用誤差均方差δ來(lái)表示,其計(jì)算式為公式(11).其中n表示的是所預(yù)測(cè)的總天數(shù).
(11)
記各個(gè)粒度下的誤差均方差為δk、各粒度下的精準(zhǔn)度為Acck,其對(duì)應(yīng)關(guān)系為公式(12).記各粒度下的權(quán)值為fk,其計(jì)算式為:
Acck=1-δk,
(12)
(13)
其中Δf為誤差乘數(shù).
(14)
圖4 BPGC算法模型Fig.4 Model of BPGC
BPGC算法具體步驟如下:
算法.粒計(jì)算思維的BP神經(jīng)網(wǎng)絡(luò)(BPGC)輸入:一維的金融趨勢(shì)歷史數(shù)據(jù)集X=(x1,x2,…, xn,…,xm)T.輸出:加權(quán)預(yù)測(cè)值O.1)從數(shù)據(jù)集X中選擇前n個(gè)數(shù)據(jù)進(jìn)行粒度矩陣構(gòu)造,并進(jìn)行歸一化預(yù)處理,得到矩陣Hpk.2)對(duì)各粒度歸一化矩陣Hpk進(jìn)行BP訓(xùn)練,并得出預(yù)測(cè)值On+1-m.3)根據(jù)公式(10)~(13)計(jì)算各個(gè)粒度下的權(quán)值fk.4)對(duì)所有粒度下的預(yù)測(cè)值Ok使用權(quán)值fk用公式(14)進(jìn)行加權(quán)計(jì)算,得出O.
在這部分,將通過(guò)實(shí)驗(yàn)來(lái)驗(yàn)證本文提出的BPGC算法在金融趨勢(shì)上的有效性.本文采用從中國(guó)財(cái)經(jīng)網(wǎng)下載的浦發(fā)銀行(股票代碼:600000)2017年全年收盤價(jià)的數(shù)據(jù)進(jìn)行學(xué)習(xí)建模并得出各粒度下的權(quán)值,依次預(yù)測(cè)出2018年前10天的數(shù)據(jù)進(jìn)行預(yù)測(cè)比較.
根據(jù)浦發(fā)銀行股票的走勢(shì)特征以及實(shí)驗(yàn)預(yù)測(cè)結(jié)果的誤差比較,選取了周期天數(shù)為2天至59天的58個(gè)粒度,其中粒度1對(duì)應(yīng)的周期天數(shù)為2,粒度2對(duì)應(yīng)的周期天數(shù)為3,以此類推,粒度58對(duì)應(yīng)的周期天數(shù)為59.因?yàn)橹芷跒?天的單個(gè)收盤價(jià)數(shù)據(jù)在BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)下一天數(shù)據(jù)效果差,周期天數(shù)從60天開(kāi)始,其預(yù)測(cè)數(shù)值誤差較大,所以沒(méi)有納入BPGC的粒度選取中.
根據(jù)多次實(shí)驗(yàn),對(duì)BP神經(jīng)網(wǎng)絡(luò)的相關(guān)參數(shù)設(shè)置詳見(jiàn)表1.其中由于BPGC是對(duì)其各粒度下的預(yù)測(cè)值進(jìn)行加權(quán)平均,所以設(shè)置輸出數(shù)為1;輸入個(gè)數(shù)與各粒度有關(guān),粒度周期為10天則輸入層k=10;由于浦發(fā)銀行的股票收盤價(jià)均小于18元且精確到分,考量歷史數(shù)據(jù)走勢(shì),對(duì)其誤差均方差設(shè)置為0.000001.
表1 BP神經(jīng)網(wǎng)絡(luò)參數(shù)值
Table 1 Parameter values of BP neural network
參 數(shù)設(shè)定值輸入層(InData)隱層神經(jīng)元個(gè)數(shù)(NeroData)輸出數(shù)(OutData)學(xué)習(xí)速度(LearnSpeed)顯示次數(shù)(Display)最大訓(xùn)練次數(shù)(MaxTrain)均方誤差(Error)最多耗時(shí)(Time)學(xué)習(xí)速度增加率(ILR)學(xué)習(xí)速度減少率(DLR)動(dòng)量(MC)k1010.001510000.0000013000100.0000010.0000001
進(jìn)行預(yù)實(shí)驗(yàn)得出各粒度的權(quán)值:把2017年最后10天的數(shù)據(jù)作為測(cè)試集,剩余數(shù)據(jù)作為訓(xùn)練集;根據(jù)訓(xùn)練集數(shù)據(jù)學(xué)習(xí)出模型,然后依次預(yù)測(cè)2017年最后10天的預(yù)測(cè)值,最后根據(jù)誤差值來(lái)計(jì)算各粒度的權(quán)值.圖5是各粒度下誤差值的三維圖,其中X軸表示的是預(yù)實(shí)驗(yàn)中第n天實(shí)驗(yàn),Y軸表示的是粒度,Z軸表示的是誤差值,其誤差越接近于零表示性能越好.
圖5 各粒度下誤差值三維圖Fig.5 Error value at each granularity
如圖5所示,各粒度在前5天前的預(yù)測(cè)結(jié)果誤差較大,且預(yù)測(cè)結(jié)果普遍偏高.粒度10至粒度58的預(yù)測(cè)誤差均有大于0.02的情況.綜合來(lái)看,預(yù)測(cè)結(jié)果普遍大于真實(shí)值,權(quán)值計(jì)算中的誤差乘數(shù)Δf應(yīng)小于1.
根據(jù)預(yù)實(shí)驗(yàn)得到的誤差均方差值通過(guò)公式(12)、公式(13)可得到各粒度下的權(quán)值.其中,誤差乘數(shù)Δf根據(jù)各粒度誤差值的特性,設(shè)置為0.99.各粒度下的權(quán)值如圖6所示,其中X軸表示粒度,Y軸表示各粒度的權(quán)值.
圖6 各粒度權(quán)值圖Fig.6 Weights of each granularity
如圖6所示,粒度1的權(quán)值最小,粒度34的權(quán)值最大.粒度5、粒度11的權(quán)值較小,粒度6至粒度58的權(quán)值主要分布在0.016~0.018之間.其分布結(jié)合圖5各粒度下誤差值的走勢(shì)來(lái)看,粒度1的誤差值偏大,所以權(quán)值最小;粒度6以后的誤差值分布較為集中,相對(duì)其權(quán)值分布較為均衡;粒度5、粒度11在實(shí)驗(yàn)的第6天以后誤差較大,對(duì)其權(quán)值有一定影響.
根據(jù)預(yù)實(shí)驗(yàn)得出的權(quán)值,運(yùn)用BPGC算法對(duì)浦發(fā)銀行2017年全年的收盤價(jià)數(shù)據(jù)進(jìn)行學(xué)習(xí)建模,并依次預(yù)測(cè)2018年前10天的收盤價(jià).其預(yù)測(cè)結(jié)果與傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)值的誤差比較圖如圖7所示,其中X軸表示預(yù)測(cè)的天數(shù),Y軸表示預(yù)測(cè)值的誤差,曲線越靠近0其效果越佳.
如圖7所示,BPGC在預(yù)測(cè)的前6天中具有較高的精準(zhǔn)度,后4天中的精準(zhǔn)度不如傳統(tǒng)的BP算法.其原因是由于誤差乘數(shù)Δf設(shè)置為0.99.根據(jù)圖5所示,前5天中的誤差普遍較高,Δf設(shè)置小于1有利于降噪,提高精準(zhǔn).但是由于后5天的誤差值較前5天普遍較低,Δf=0.99的設(shè)置會(huì)起到一定的反作用,從而提高了誤差.
圖7 BPGC、傳統(tǒng)BP預(yù)測(cè)值誤差比較圖Fig.7 Comparison between BPGC and traditional BP on prediction error
為了便于分析BPGC在實(shí)驗(yàn)中的效果,引入BPGC預(yù)測(cè)結(jié)果與各粒度下的預(yù)測(cè)結(jié)果對(duì)比圖.其中X軸表示預(yù)測(cè)天數(shù),Y軸表示各個(gè)粒度的數(shù)值(其中刻度0表示真實(shí)值、刻度1表示BPGC的預(yù)測(cè)值、刻度2至59表示粒度1至粒度58的預(yù)測(cè)值),Z軸表示預(yù)測(cè)結(jié)果的數(shù)值.圖中黑色標(biāo)線為BPGC的預(yù)測(cè)數(shù)值走勢(shì).該圖的預(yù)測(cè)數(shù)據(jù)走勢(shì)與真實(shí)值走勢(shì)越靠攏表示預(yù)測(cè)效果越佳.
圖8 真實(shí)值、BPGC與各粒度預(yù)測(cè)值結(jié)果比較圖Fig.8 Comparison of real value,BPGC and the predicted results of each granularity
如圖8所示,BPGC的預(yù)測(cè)結(jié)果與真實(shí)值比較,在前6天的預(yù)測(cè)中,其預(yù)測(cè)值優(yōu)于各個(gè)粒度的預(yù)測(cè)結(jié)果,但是在預(yù)測(cè)的第7~10天中,與各個(gè)粒度比較,其誤差的優(yōu)越性較低.其原因主要有二:一是Δf的設(shè)置對(duì)于后面幾天的預(yù)測(cè)比較不適用;二是第6-10天的數(shù)據(jù)波動(dòng)較大,與前幾天的實(shí)際數(shù)據(jù)比較來(lái)看,有呈現(xiàn)突然上升的趨勢(shì).綜上所述,BPGC在金融趨勢(shì)波動(dòng)較小的情況下具有較高的預(yù)測(cè)精準(zhǔn),其Δf的設(shè)置可以進(jìn)一步劃分區(qū)間或者針對(duì)預(yù)測(cè)趨勢(shì)的漲幅度進(jìn)行分類設(shè)置.
本文提出了粒計(jì)算思維下的BP神經(jīng)網(wǎng)絡(luò)(BPGC)并將其應(yīng)用于金融趨勢(shì)預(yù)測(cè).BPGC算法解決了傳統(tǒng)BP算法對(duì)金融趨勢(shì)周期考慮不足的問(wèn)題,能夠較好的模擬人腦對(duì)金融趨勢(shì)的判斷過(guò)程,通過(guò)考量各粒度的不同影響力,對(duì)各粒度的預(yù)測(cè)結(jié)果按不同權(quán)值進(jìn)行調(diào)整.實(shí)驗(yàn)表明,BPGC算法比傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)在金融趨勢(shì)預(yù)測(cè)上更具優(yōu)越性.但是還存在以下不足:一是Δf的取值不能普遍應(yīng)用于所有情況;二是BPGC算法對(duì)幅度變化較大的趨勢(shì)預(yù)測(cè)精準(zhǔn)度較低.在今后的工作中,將著力解決Δf取值與由于變化幅度大導(dǎo)致精準(zhǔn)降低的問(wèn)題.