劉雯琦
摘要:股票價格預(yù)測是投資者關(guān)注的熱點問題,用人工智能對股票價格進行預(yù)測是近年來十分流行的預(yù)測方式。文章針對傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的預(yù)測精度受初始化權(quán)值和閾值影響較大的不足,給出一種使用差分進化算法對BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值進行優(yōu)化的方法,建立了一種基于自適應(yīng)差分進化算法的BP神經(jīng)網(wǎng)絡(luò)股票價格預(yù)測模型,利用真實的股票數(shù)據(jù)通過仿真實驗驗證了模型的有效性。
關(guān)鍵詞:股票價格預(yù)測;BP神經(jīng)網(wǎng)絡(luò);自適應(yīng)差分進化算法
近年來,隨著人工智能和計算機專業(yè)軟件的發(fā)展,股票價格預(yù)測出現(xiàn)了許多新方法。其中神經(jīng)網(wǎng)絡(luò)在非線性逼近和對復(fù)雜信息進行綜合處理方面具有良好表現(xiàn),其自身具備的自學(xué)習(xí)、自適應(yīng)等特性,能夠克服普通預(yù)測方法存在的局限性,因此神經(jīng)網(wǎng)絡(luò)在人工智能領(lǐng)域處于領(lǐng)先地位,并得到了廣泛應(yīng)用和關(guān)注。所以,使用神經(jīng)網(wǎng)絡(luò)對股票價格進行預(yù)測有獨特的優(yōu)勢,能有效克服股票價格高度非線性的問題[1]。
1 差分進化算法
差分進化算法(Differential Evolution,DE)是一種新型的模擬自然界生物進化的群智能隨機優(yōu)化算法,由美國學(xué)者Stora和Price于1995年提出。算法通過采用實數(shù)編碼的方式在連續(xù)域空間內(nèi)對問題的解進行隨機捜索和優(yōu)化[2]。差分進化算法的原理簡單,控制參數(shù)較少,易于實現(xiàn),目前已被證實是一種高效的全局啟發(fā)式進化算法,具有廣泛的研究和應(yīng)用前景[3]。
差分進化算法是一種基于種群遺傳進化的隨機優(yōu)化算法,包括變異、交叉、選擇3種遺傳操作[3]。
標準DE算法包括種群初始化、變異操作、交叉操作和選擇操作[4]。
1.1 種群初始化
差分進化算法使用實數(shù)編碼機制,種群中的每個個體都被視為問題搜索空間中的一個解。初始化群體大小Np,染色體長度,縮放或突變因子F,交叉率CR和基因值范圍[Umin,Umax]這幾個參數(shù)。種群用式(l)隨機初始化,產(chǎn)生個體Xij:
1.2 變異操作
在進化計算模型中變異則指的是通過隨機擾動方法來對某個位置的數(shù)值進行改變。差分進化算法通過變異操作來保持群體的多樣性。
1.3 交叉操作
完成變異操作之后,個體i就會有一個貢獻向量(Vi)生成,此時再把目標向量x與貢獻向量v交叉,交叉操作后就產(chǎn)生了試驗向量u。
交叉操作按照式(3)產(chǎn)生:
1.4 選擇操作
差分進化算法采用了一對一的競爭機制,經(jīng)變異與交叉算子操作以后產(chǎn)生了試驗向量uiG+1和xiG,選擇適應(yīng)度較高的個體進入新一代的種群。選擇操作的方程如式(4)所示:
2 自適應(yīng)差分進化算法
DE算法中涉及的各種關(guān)鍵參數(shù)的設(shè)置對算法的性能存在顯著影響。本文通過引入自適應(yīng)變異因子和自適應(yīng)交叉因子來對標準的差分進化算法進行改進,形成自適應(yīng)差分進化算法(Self-adaptive DE,SDE),以提高算法性能。
自適應(yīng)的變異因子由式子(5)計算所得:
式中的CRmin與CRmax分別為交叉因子的最小值和最大值。
2.1 基于自適應(yīng)差分進化算法的BP神經(jīng)網(wǎng)絡(luò)
基于SDE的BP神經(jīng)網(wǎng)絡(luò)是把自適應(yīng)差分進化算法和BP神經(jīng)網(wǎng)絡(luò)算法相結(jié)合,該算法的基本思想就是先利用SDE算法預(yù)先搜索全局最優(yōu)連接權(quán)值和BP神經(jīng)網(wǎng)絡(luò)的閾值,然后將最優(yōu)的搜索結(jié)果分配給初始BP神經(jīng)網(wǎng)絡(luò)的權(quán)值與閾值。
基于SDE優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)的算法流程如下:
(1)種群初始化。首先初始化種群規(guī)模Np、迭代次數(shù),以及變異因子F和交叉因子CR,然后用式(5)產(chǎn)生初始種群。
(2)評估迭代以確定其是否完成。如果當(dāng)前最小的適應(yīng)度值達到預(yù)設(shè)的精度要求或迭代次數(shù)G與最大迭代次數(shù)相同,則SDE算法終止,獲得適應(yīng)度最佳個體;否則,程序進入下一個步驟。
(3)根據(jù)自適應(yīng)差分算法中變異、交叉與選擇的操作方法生成后代個體xiG+1。
(4)重復(fù)步驟(3)并生成后代種群。
(5)對后代的適合度值進行評價,最小值就是當(dāng)前的最優(yōu)值,相應(yīng)的個體就是全局的最優(yōu)個體。
(6)設(shè)置G=G+l,然會返回步驟(2)。
(7)把來自SDE優(yōu)化的最優(yōu)個體指定為網(wǎng)絡(luò)初始權(quán)值與閾值,然后用訓(xùn)練樣本對網(wǎng)絡(luò)進行訓(xùn)練,從而建立最佳網(wǎng)絡(luò)。
(8)在網(wǎng)絡(luò)中輸入測試樣本,使用訓(xùn)練完成的網(wǎng)絡(luò)對其進行預(yù)測。
綜上可知,基于自適應(yīng)差分進化算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)權(quán)值和閾值均為經(jīng)自適應(yīng)差分進化算法優(yōu)化得到的最優(yōu)網(wǎng)絡(luò)權(quán)值和閾值。
2.2 SDE-BP神經(jīng)網(wǎng)絡(luò)設(shè)置
SDE-BP神經(jīng)網(wǎng)絡(luò)的設(shè)計主要是對網(wǎng)絡(luò)的各項參數(shù)進行設(shè)置,主要包括了網(wǎng)絡(luò)層數(shù)、神經(jīng)元個數(shù)及其余各項參數(shù)初始的值。本節(jié)主要對BP神經(jīng)網(wǎng)絡(luò)所需的各項參數(shù)進行分析和設(shè)置。SDE-BP神經(jīng)網(wǎng)絡(luò)的各項參數(shù)如下。網(wǎng)絡(luò)層數(shù):3;輸入層、隱含層、輸出層的神經(jīng)元數(shù)分別為:20, 5, 1;隱含層、輸出層激活函數(shù)分別為:tansig,purelin;訓(xùn)練函數(shù):trainln;學(xué)習(xí)率:0.25;初始權(quán)值和初始閾值隨機選取,后經(jīng)SDE優(yōu)化;神經(jīng)網(wǎng)絡(luò)訓(xùn)練目標誤差:le-6;神經(jīng)網(wǎng)絡(luò)訓(xùn)練次數(shù):200;種群規(guī)模:50,迭代次數(shù):500;變異因子:Fmax=0.9,F(xiàn)min=0.2;交叉因子:CRmax=0.5,CRmin=0.1。
3 實驗分析
3.1 樣本數(shù)據(jù)選取
本文實驗用到的股票數(shù)據(jù)來源于股票證券交易分析軟件同花順,以三峽水利(600116)作為本文的研究對象。使用股票開盤價、最低價、最高價以及收盤價為股票的預(yù)測數(shù)據(jù),然后選取第1?20個交易日中股票的開盤價、最低價、最高價及收盤價,將這些數(shù)據(jù)作為模型的訓(xùn)練數(shù)據(jù),將第21日的收盤價作為模型的測試數(shù)據(jù);再選取第2?21個交易日中的開盤價、最低價、最高價及收盤價來作為訓(xùn)練數(shù)據(jù),用22日的收盤價來測試。按照此方法依次對樣本數(shù)據(jù)進行訓(xùn)練,然后再將待預(yù)測日之前的20日股票數(shù)據(jù)作為測試樣本,輸入訓(xùn)練完成的BP神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)最終的輸出即為要預(yù)測的股票收盤價,最終通過預(yù)測值與真實值比對來分析模型預(yù)測的精度。
3.2 樣本數(shù)據(jù)處理
為防止股價參差不齊影響預(yù)測精度,本文對股價進行了歸一化處理。將股價格歸一化至[0,1]這個區(qū)間之內(nèi),縮減了BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的時間,式(7)為采用的歸一化公式:
式中X表示歸一化后的股票價格,X是原始股票價格的序列;Xmax是原始股票價格序列中的最大值;而Xmin則為原始股票價格序列中的最小值。
3.3 實驗結(jié)果分析
表1為BP神經(jīng)網(wǎng)絡(luò)與SDE-BP神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練次數(shù)與訓(xùn)練時間,經(jīng)過對比發(fā)現(xiàn),SDE-BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型相比傳統(tǒng)的BP網(wǎng)絡(luò)預(yù)測模型而言,能有效減少訓(xùn)練次數(shù),縮短訓(xùn)練時間,從而改善了BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)測效率。
圖1為分別用兩種模型對實際的股票價格進行預(yù)測后得到的誤差曲線圖,可知,基于自適應(yīng)差分進化算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)預(yù)測誤差顯著低于傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的預(yù)測誤差。
實驗結(jié)果表明,基于SDE的BP神經(jīng)網(wǎng)絡(luò)明顯縮短了傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型的訓(xùn)練時間,在用其對股票價格進行預(yù)測時,降低了網(wǎng)絡(luò)預(yù)測的誤差,在股票價格預(yù)測方面的效果比傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)效果更好。因此說明基于自適應(yīng)差分進化算法的BP神經(jīng)網(wǎng)絡(luò)提高了傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的預(yù)測效率和預(yù)測精度。
4 結(jié)語
本文首先介紹了標準的差分進化算法,針對標準差分
進化算法缺陷提出引入自適應(yīng)的交叉和變異因子的方法對算法進行改進,給出了一種自適應(yīng)差分進化算法。使用改進后的差分進化算法對BP神經(jīng)網(wǎng)絡(luò)進行優(yōu)化,給出一種基于自適應(yīng)差分進化算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)模型。最后通過實驗,驗證了基于自適應(yīng)差分進化算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)在股票價格預(yù)測方面的高效性和優(yōu)越性。
[參考文獻]
[1]朱元.證券投資學(xué)原理[M].上海:立信會計圖書用品社,1992.
[2]王超學(xué).智能優(yōu)化算法與應(yīng)用[M].西安:西北大學(xué)出版社,2012.
[3]張慶科.粒子群優(yōu)化算法及差分進行算法研究[D].濟南:山東大學(xué),2017.
[4]WANG L, ZENG Y, CHEN T.Back propagation neural network with adaptive differential evolution algorithm for time seriesforecasting[J].Expert Systems with Applications, 2015(2):855-863.