孟志青,朱涵琪
(浙江工業(yè)大學 管理學院,浙江 杭州 310023)
現(xiàn)實生活中存在大量非平穩(wěn)時序數(shù)據(jù),用傳統(tǒng)的預測模型很難進行準確的預測,例如股票價格時間序列受復雜因素的影響,具有非線性和非平穩(wěn)性,很難預測股票價格變化。目前國內(nèi)外學者對股票時間序列提出了許多預測模型,其中典型方法有GARCH-M模型[1]、神經(jīng)網(wǎng)絡模型[2,3]、SVM[4]等。此外,在對數(shù)據(jù)進行前期處理上,主要的方法集中在對研究變量本身以及相關(guān)變量的分析上。文獻[5]通過對輸入變量進行主成分分析,避免了變量過多、網(wǎng)絡結(jié)構(gòu)復雜的問題。文獻[6]用粗糙集理論降低了股票價格趨勢的特征維數(shù),簡化了預測模型。文獻[7]、文獻[8]、文獻[9]運用小波分析方法,對時間序列在預測前進行處理,將時間序列分為低頻和高頻序列。當數(shù)據(jù)呈現(xiàn)非線性和非平穩(wěn)性時,單一的預測模型很難發(fā)現(xiàn)含有時間的規(guī)律變化。例如股票市場數(shù)據(jù)包含時間屬性,幾乎無法發(fā)現(xiàn)隨時間變化且在不同狀態(tài)上相互聯(lián)系。另外,周期的選擇是股票市場預測的重要依據(jù)。特別是用小波分析與神經(jīng)網(wǎng)絡結(jié)合預測時[8,9],經(jīng)小波變換進行伸縮和平移運算而產(chǎn)生的各頻率序列與原始數(shù)據(jù)相比發(fā)生了一定的變化,繼續(xù)采用固定的經(jīng)驗分析周期和單一神經(jīng)網(wǎng)絡結(jié)構(gòu)進行預測已不再適用。時態(tài)數(shù)據(jù)挖掘是通過數(shù)據(jù)在時間上的重新劃分發(fā)現(xiàn)非線性與非平穩(wěn)數(shù)據(jù)的內(nèi)在規(guī)律[10,11],例如近似周期、近似關(guān)聯(lián)規(guī)則等。采用不同的時間粒度或時態(tài)型對數(shù)據(jù)進行分析時,會呈現(xiàn)出不一樣的變化規(guī)律。為了克服非線性和非平穩(wěn)數(shù)據(jù)難以發(fā)現(xiàn)有規(guī)律的知識,以及盲目選擇經(jīng)驗周期帶來的不必要誤差,本文設計了一種變結(jié)構(gòu)時態(tài)神經(jīng)網(wǎng)絡預測模型用于解決股票價格的預測問題。
在對股票時間進行預處理上,采用小波變換的方法,通過伸縮和平移等運算,對信號進行多尺度分析,可以由低頻到高頻逐步地觀察信號。小波分析理論與神經(jīng)網(wǎng)絡結(jié)合,可加強對高頻序列適應能力,提高預測精確度。
一般小波變換可以分為連續(xù)小波變換和離散小波變換[12]。連續(xù)小波變換表示為:
本文通過采用以多分辨率分析為基礎的Mallat算法,實現(xiàn)離散小波變換?;舅枷胧窃OHjf為能量有限信號在分辨率2j下的近似,則Hjf可以進一步分解為在分辨率2j-1下的近似Hj-1f以及位于分辨率2j-1和2j之間的細節(jié)之和。將原始的時間序列被分為低頻部分和高頻部分,然后只對低頻部分進一步分解,直到達到預設的分解層數(shù)。
在現(xiàn)實世界中,我們可以將時間與實數(shù)軸聯(lián)系起來,從而將實數(shù)軸上的點代表某一時刻,并對應著點所在的實數(shù),稱為絕對時刻。下面引入時態(tài)型定義。
定義1[10]設μ是從絕對時刻t到絕對時間的映射,即R→2R如果μ滿足下列性質(zhì):①(非空性)t∈μ(t);②(單調(diào)性) 若t1 則稱μ為時態(tài)型,μ(t)為μ的時態(tài)因子。由此可見時態(tài)型μ是對時間軸的一個劃分,每個時態(tài)因子是一個絕對時刻的集合。時態(tài)粒度、時態(tài)序等相關(guān)具體知識參見文獻[10]。 神經(jīng)網(wǎng)絡有多種結(jié)構(gòu)類型、靈活的學習算法和驗證過程,在建模過程中不需要做一定的經(jīng)濟假設,它們可以獨立學習變量中固有的關(guān)系,這在證券投資和其它金融領(lǐng)域十分有用。本文采用的是根據(jù)時態(tài)模型改進后的基于誤差逆?zhèn)鞑P算法的前饋神經(jīng)網(wǎng)絡。 設神經(jīng)網(wǎng)絡輸入層p個節(jié)點數(shù)(j=1,2,…,p)和隱層L個節(jié)點數(shù)(l=1,2,…,L),輸出層M個節(jié)點數(shù)(k=1,2,…,M)。 初始化輸入層、隱層和輸出層神經(jīng)元之間的權(quán)值γjl,γlk,隱含層閾值α(α=(α1,…,αl,…,αL)),輸出層閾值β(β=(β1,…,βk,…,βM)),學習率η,神經(jīng)網(wǎng)絡訓練過程如下。 步驟1 信號的向前傳播過程: 步驟2 信號的向前傳播過程: 由于節(jié)點數(shù)需要是整數(shù),而PSO算法是一種處理連續(xù)變量的群體尋優(yōu)算法,在連續(xù)型PSO算法的位置更新過程中不能產(chǎn)生整數(shù)變量。因此,在初始化位置和更新位置的過程中需要對其進行四舍五入,將得到的實數(shù)取到最近的整數(shù)。具體過程如下: 首先初始化粒子群:假設在一個D維的搜索空間中,種群有n個粒子:X=(X1,X2,…Xn),其中第i個粒子表示為一個D維向量:Xi=(xi1,…,xid,…xiD),代表著第i個粒子在D維搜索空間中的位置。 xid=popmin+round(rd(popmax-popmin)), [popmin,popmax]為xid的整數(shù)范圍,round(·)表示四舍五入,rd表示(0,1)之間的隨機數(shù);初始化第i個粒子的速度:Vi=(vi1,…,vid,…,viD),vid的范圍為[vmin,vmax]。 輸入:某一高頻序列: 時態(tài)型μ PSO算法種群數(shù)sizepop和迭代次數(shù)maxgen 分析周期最大值pmax, 最小值pmin 輸出節(jié)點數(shù)M 過程: 步驟2 初始化新的神經(jīng)網(wǎng)絡,包括權(quán)值和閾值的初始 化、學習率η、訓練函數(shù)和傳遞函數(shù)的選取。 步驟3 將時態(tài)數(shù)據(jù)T″v帶入神經(jīng)網(wǎng)絡模型進行訓練。 步驟4 通過上一步,得到在初始神經(jīng)網(wǎng)絡結(jié)構(gòu)下的訓練誤差w,以此作為PSO尋優(yōu)算法的初始適應度值。 步驟5 repeat: (1)更新粒子速度和位置:得到新的輸入節(jié)點數(shù)p和隱層節(jié)點數(shù)L,p根據(jù)值將序列c″v轉(zhuǎn)化為新的時態(tài)數(shù)據(jù)T″v。 (2)根據(jù)上一步得到的p值和L值,初始化新的神經(jīng)網(wǎng)絡包括權(quán)值和閾值初始化、學習率η、訓練函數(shù)和傳遞函數(shù)的選取。 (3)將時態(tài)數(shù)據(jù)T″v帶入上步確定的神經(jīng)網(wǎng)絡進行訓練,計算誤差w,得到新的粒子適應度值。 (4)根據(jù)上步得到的粒子適應度值更新個體極值和群體極值。 until 達到迭代次數(shù) 步驟6 得出最優(yōu)個體適應度值對應的粒子位置Xbest=(xbest1,xbest2)。 輸出:某一高頻序列c″v的神經(jīng)網(wǎng)絡結(jié)構(gòu),其中:xbest1=p(輸入節(jié)點數(shù)),xbest2=L(隱層節(jié)點數(shù))。 總體來看,變結(jié)構(gòu)神經(jīng)網(wǎng)絡時態(tài)數(shù)據(jù)預測模型實現(xiàn)過程如圖1所示(主算法)。 圖1 主算法流程 主算法的具體過程如下: 步驟2: (1)選定經(jīng)驗周期p、隱層節(jié)點數(shù)L,初始化神經(jīng)網(wǎng)絡,包括入節(jié)點數(shù)、隱層節(jié)點數(shù)、輸出節(jié)點數(shù)、權(quán)值和閾值初始化、學習率η、訓練函數(shù)和傳遞函數(shù)的選取。 (3)將時態(tài)數(shù)據(jù)T′v帶入神經(jīng)網(wǎng)絡中進行訓練。 end for 步驟3: 利用子算法,得到c″v對應的神經(jīng)網(wǎng)絡結(jié)構(gòu) end for 步驟2過程確定了較低頻序列集訓練完成的各神經(jīng)網(wǎng)絡模型,步驟3過程確定了較高頻序列集訓練完成的各神經(jīng)網(wǎng)絡模型。最后利用經(jīng)訓練集確定好的神經(jīng)網(wǎng)絡模型,輸入轉(zhuǎn)化后的時態(tài)數(shù)據(jù)測試集,將各頻率序列對應的神經(jīng)網(wǎng)絡輸出結(jié)果相加,得出最終預測值。 以上就是基于時態(tài)數(shù)據(jù)的變結(jié)構(gòu)神經(jīng)網(wǎng)絡建立過程。與傳統(tǒng)的BP網(wǎng)絡不同點主要在兩點,數(shù)據(jù)按時態(tài)因子進入網(wǎng)絡學習,不同節(jié)點上采用不同時態(tài)數(shù)據(jù)學習,不同的輸入節(jié)點數(shù)和對應的隱層節(jié)點數(shù)不相同。 為了對模型的預測精確度進行分析,選取以下參數(shù)作為預測模型的評價標準。 (1)平均絕對誤差(mean absolute error) (2)均方根誤差(root mean square error) (3)平均絕對相對誤差(mean absolute percent error) 實驗環(huán)境:計算機處理器:Intel(R) Core(TM) i5-7200uCPU、內(nèi)存4 G、256 G固態(tài)硬盤、顯示芯片:NVIDIA GeForce 940MX、64 G操作系統(tǒng),實驗軟件MATLAB R2016a。 實驗數(shù)據(jù)為:從同花順采集的2015.01.05-2018.12.18期間上證指數(shù)每日的收盤價。采用單步滾動預測,用前N日的股票收盤價作為輸入數(shù)據(jù),第N+1天的股票的收盤價作為輸出數(shù)據(jù)。2015.01.05-2018.11.20之間的交易日數(shù)據(jù)用來訓練,對未來20天交易日的股票價格進行預測。 圖2 原始序列小波分解與重構(gòu)結(jié)果 為了驗證本文模型的有效性,將本模型與各頻率采用經(jīng)驗周期為5的傳統(tǒng)BP神經(jīng)網(wǎng)絡模型進行對比。其中兩種模型中對網(wǎng)絡權(quán)值和閾值優(yōu)化的方法保持一致:隱含層神經(jīng)傳遞函數(shù)為tansig函數(shù),輸出層神經(jīng)元的傳遞函數(shù)為purelin函數(shù),訓練函數(shù)采用動態(tài)自適應學習率的梯度下降BP算法。當目標最小誤差小于0.01(用均方誤差MSE表示)時停止訓練。 實驗過程中,時態(tài)型μ選為天,低頻序列集的分析周期采用經(jīng)驗分析周期5天,對應的隱層節(jié)點數(shù)經(jīng)實驗比較確定為7。高頻序列集中相關(guān)的參數(shù)為:種群粒子數(shù)目sizepop選為30,分析周期最小值pmin為5,最大值pmax為25,迭代次數(shù)maxgen經(jīng)多次實驗后選為10,從圖3、圖4和圖5可以看出,當超過10代之后,適應度變化很小甚至不再改變,同時迭代次數(shù)越多,會增加不必要的運行時間和空間。 圖3 d1序列參數(shù)尋優(yōu) 經(jīng)實驗最終得到d1序列上參數(shù)尋優(yōu)的結(jié)果,如圖3所示。當?shù)降?0代時,適應度值達到最小,其對應的最優(yōu)粒子位置Xbest=(xbest1,xbest2)為Xbest=(17,11)。由于xbest1表示的是輸入節(jié)點數(shù),xbest2表示的是隱層節(jié)點數(shù),那么得到d1序列上的分析周期選為17,隱層節(jié)點數(shù)選為11。 d2序列上參數(shù)尋優(yōu)的結(jié)果,如圖4所示。當?shù)降?代時,適應度值達到最小,其對應的最優(yōu)粒子位置Xbest=(xbest1,xbest2)為Xbest=(20,6)。那么得到d2序列上的分析周期選為20,隱層節(jié)點數(shù)選為6。 圖4 d2序列參數(shù)尋優(yōu) 圖5 d3序列參數(shù)尋優(yōu) d3序列上參數(shù)尋優(yōu)的結(jié)果,如圖5所示。當?shù)降?代時,適應度值達到最小,其對應的最優(yōu)粒子位置Xbest=(xbest1,xbest2)為Xbest=(8,11)。那么得到d3序列上的分析周期選為8,隱層節(jié)點數(shù)選為11。 圖6 d1序列訓練誤差 圖7 d2序列訓練誤差 圖8 d3序列訓練誤差 圖9 變結(jié)構(gòu)模型預測 進一步將兩種模型進行最終誤差分析,在MAE、MAPE和RMSE這3個指標上本文模型比傳統(tǒng)模型均降低了50%-60%左右,比較結(jié)果見表1。 為了進一步驗證本文模型的適用性和有效性,另外選取了滬深300、中國石油、中國平安和興業(yè)銀行這4只股票,具體數(shù)據(jù)選取見表2。 將本文提出的模型,同時與傳統(tǒng)BP神經(jīng)網(wǎng)絡模型、SVM方法進行比較。各模型和誤差分析結(jié)果見表3。從表3中可以看出,本文模型相比較于傳統(tǒng)BP網(wǎng)絡、SVM的預測誤差有明顯的降低,進一步說明了將股票數(shù)據(jù)轉(zhuǎn)化為時態(tài)數(shù)據(jù),建立變結(jié)構(gòu)模型的有效性。 圖10 傳統(tǒng)BP神經(jīng)網(wǎng)絡預測 表1 誤差分析比較 表2 實驗股票數(shù)據(jù) 表3 4種股票預測結(jié)果 本文提出了一個變結(jié)構(gòu)時態(tài)神經(jīng)網(wǎng)絡模型,用于解決非線性和非平穩(wěn)數(shù)據(jù)預測問題。通過實驗,使用上述模型對具有明顯時間屬性的股票價格進行預測,將股票數(shù)據(jù)轉(zhuǎn)化為時態(tài)數(shù)據(jù)集,對神經(jīng)網(wǎng)絡進行改進,以及對經(jīng)小波變換之后的各個分支序列建立變結(jié)構(gòu)時態(tài)神經(jīng)網(wǎng)絡預測模型,可以有效地降低分支序列預測誤差,從而降低整體預測誤差,對股票類似的時間序列分析具有應用價值。對于解決類似的非線性與非平穩(wěn)數(shù)據(jù)預測問題具有重要的意義。 此外股票市場信息是海量的,與股票價格相關(guān)的變量和技術(shù)指標有很多,本文采用的是單變量分析,進一步可以在本實驗的基礎上采用多變量進行綜合分析以提高預測效果。3 變結(jié)構(gòu)時態(tài)神經(jīng)網(wǎng)絡設計
4 誤差分析
5 實 驗
6 結(jié)束語