黃玉成,方偉偉
(南陽(yáng)理工學(xué)院信息工程學(xué)院,南陽(yáng) 473000)
股票的預(yù)測(cè)一直是金融領(lǐng)域的研究熱點(diǎn),其變化趨勢(shì)甚至被比作為金融領(lǐng)域的“天氣表”。隨著經(jīng)濟(jì)市場(chǎng)的高速發(fā)展以及人們投資意識(shí)不斷增強(qiáng),越來(lái)越多的人涌入股票市場(chǎng),希望能夠從中大賺一筆。然而,股票市場(chǎng)雖然機(jī)遇很大,但伴隨的不確定性和風(fēng)險(xiǎn)也很大,因而股票價(jià)格變化的趨勢(shì)成為了投資者們關(guān)注的焦點(diǎn)。
預(yù)測(cè)股票價(jià)格的波動(dòng)趨勢(shì)的模型隨著科學(xué)技術(shù)的進(jìn)步也越來(lái)越多,其發(fā)展過(guò)程主要為:傳統(tǒng)的時(shí)間序列模型、機(jī)器學(xué)習(xí)模型以及深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型。在早期的股票市場(chǎng)中,股票價(jià)格趨勢(shì)的預(yù)測(cè)通常是使用傳統(tǒng)的時(shí)間序列模型來(lái)進(jìn)行的,然而時(shí)間序列高噪聲問(wèn)題以及非線性特征,導(dǎo)致該模型預(yù)測(cè)的股票價(jià)格趨勢(shì)的精準(zhǔn)度并不高。隨著機(jī)器學(xué)習(xí)技術(shù)的出現(xiàn),許多學(xué)者們將機(jī)器學(xué)習(xí)模型應(yīng)用到股票價(jià)格的預(yù)測(cè)中,發(fā)現(xiàn)其預(yù)測(cè)的結(jié)果比傳統(tǒng)時(shí)間序列模型的預(yù)測(cè)結(jié)果的精準(zhǔn)度更高,但傳統(tǒng)的機(jī)器學(xué)習(xí)算法,需要構(gòu)建復(fù)雜的、有效的學(xué)習(xí)模型,在數(shù)據(jù)預(yù)處理階段會(huì)消耗大量的工作和時(shí)間。為解決這些問(wèn)題,學(xué)者們又開(kāi)始研究方向引入到深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)領(lǐng)域中,通過(guò)大量的研究預(yù)測(cè),發(fā)現(xiàn)RNN神經(jīng)網(wǎng)絡(luò)模型的衍生模型——LSTM神經(jīng)網(wǎng)絡(luò)模型的效果最佳,能夠很好的解決梯度消失以及無(wú)法得到最優(yōu)解問(wèn)題,從而實(shí)現(xiàn)數(shù)據(jù)的時(shí)間序列性與非線性之間的兼顧問(wèn)題。因此在處理股票的時(shí)間序列數(shù)據(jù)上具有一定的優(yōu)勢(shì),能夠很好的擬合出股票價(jià)格的波動(dòng)規(guī)律,從而一定程度上反應(yīng)出股票價(jià)格的波動(dòng)趨勢(shì)。本次研究利用LSTM神經(jīng)網(wǎng)絡(luò)模型對(duì)數(shù)據(jù)集為代號(hào)002的上證股票進(jìn)行預(yù)測(cè)研究分析。
RNN網(wǎng)絡(luò)的核心思想是利用內(nèi)部多循環(huán)回路保證數(shù)據(jù)的持續(xù)傳遞,該網(wǎng)絡(luò)更新權(quán)重的方式為反向傳播的方式,然而該網(wǎng)絡(luò)模型使用的激活函數(shù)(σ)為具有飽和性的sigmoid函數(shù),導(dǎo)致當(dāng)傳播到激活函數(shù)時(shí),斜率會(huì)變得極大或極小,從而出現(xiàn)梯度爆炸或梯度消失的問(wèn)題,以至于預(yù)測(cè)能力無(wú)法提升。為了解決RRN網(wǎng)絡(luò)對(duì)于數(shù)據(jù)的長(zhǎng)期依賴問(wèn)題,Hochreiter和Schmidhuber等人于1997年在文 獻(xiàn)[3]中提 出了LSTM神經(jīng) 網(wǎng)絡(luò)模型,該模型引入了門(mén)來(lái)構(gòu)建特殊的記憶神經(jīng)單元,其目的是為了更好的解決時(shí)間序列數(shù)據(jù)在訓(xùn)練過(guò)程中所帶來(lái)的梯度消失和梯度爆炸等一系列問(wèn)題。LSTM結(jié)構(gòu)的每個(gè)神經(jīng)網(wǎng)絡(luò)層中都存在如圖1所示的三種門(mén)結(jié)構(gòu),它們分別是輸出門(mén)ot、遺忘門(mén)f t以及輸入門(mén)i t,這些門(mén)結(jié)構(gòu)利用遞歸方程不斷更新細(xì)胞狀態(tài)C t的同時(shí),還激活從輸入門(mén)到輸出門(mén)的映射。
圖1 LSTM結(jié)構(gòu)
遺忘門(mén)的值是通過(guò)t時(shí)刻的輸入xt與t-1時(shí)刻的輸出h t-1共同確定的,采用的激活函數(shù)為sigmoid函數(shù),其表達(dá)是為:
當(dāng)?shù)玫搅诉z忘門(mén)的值后,使用輸入門(mén),將所得到的新的信息添加到狀態(tài)中,從而實(shí)現(xiàn)替換以往的舊信息,其表達(dá)式為:
令i t與C?t相乘,在將其加上遺忘門(mén)的信息可獲得新的C t,其表達(dá)是為:
輸出門(mén)的結(jié)果是經(jīng)過(guò)遺忘門(mén)與輸入門(mén)處理后的最新的狀態(tài)C,和t-1時(shí)刻的輸出值h t-1及當(dāng)前t時(shí)刻的輸入值X t共同確定,此時(shí)的激活函數(shù)σ不再是sigmoid函數(shù),而是tanh函數(shù),從而實(shí)現(xiàn)從輸出門(mén)輸出所需要的信息。
遺忘門(mén)f t決定神經(jīng)單元遺棄哪些信息,該門(mén)層通過(guò)讀取ht-1和xt的狀態(tài),就能夠從遺忘門(mén)中輸出一個(gè)0~1之間的值,0代表完全舍棄,而1代表完全保留。神經(jīng)單元要更新的值由輸入門(mén)i t決定,它將遺忘門(mén)所篩選完的信息中,利用tanh函數(shù)來(lái)進(jìn)行對(duì)神經(jīng)單元狀態(tài)的更新。最終輸出門(mén)ot決定神經(jīng)單元輸出的狀態(tài),該狀態(tài)先通用sigmoid層決定要輸出的神經(jīng)單元狀態(tài),根據(jù)這些狀態(tài),將其利用tanh函數(shù)進(jìn)行壓縮在-1到1之間。
本文所選擇用來(lái)進(jìn)行股票價(jià)格的預(yù)測(cè)的模型是LSTM神經(jīng)網(wǎng)絡(luò)模型,是因?yàn)樵撃P湍軌蚪鉀Q用來(lái)預(yù)測(cè)的數(shù)據(jù)的長(zhǎng)期依賴特性,進(jìn)而達(dá)到提高股票價(jià)格預(yù)測(cè)的精準(zhǔn)度的目的。
本文所采用表1所示的數(shù)據(jù)集進(jìn)行預(yù)測(cè),此數(shù)據(jù)集包含了8列數(shù)據(jù),分別為:收盤(pán)價(jià)(close)、開(kāi)盤(pán)價(jià)(open)、最高價(jià)(high)、最低價(jià)(low)、成交量(volume)、變動(dòng)價(jià)(price_change)、漲跌值(p_change)、交易日期(date)。該數(shù)據(jù)集記錄了1998年1月5日至2020年6月2日的股票數(shù)據(jù),共5430條數(shù)據(jù)。
表1 代號(hào)為002的上證股票數(shù)據(jù)集
模型的訓(xùn)練集數(shù)據(jù)與測(cè)試集數(shù)據(jù)的大小、輸入向量的選擇等都能夠影響股票價(jià)格預(yù)測(cè)的精準(zhǔn)度。本文選擇數(shù)據(jù)集表1作為輸入向量,并將代號(hào)為002的上證股票數(shù)據(jù)集前80%數(shù)據(jù)作為訓(xùn)練集訓(xùn)練模型,隨時(shí)將代號(hào)為002的上證股票數(shù)據(jù)集剩下的20%數(shù)據(jù)作為測(cè)試集來(lái)進(jìn)行驗(yàn)證該模型的泛化能力。
本文基于前i(i=5、10、50、100)天的特征向量對(duì)第i+1天的收盤(pán)價(jià)進(jìn)行預(yù)測(cè),時(shí)間序列長(zhǎng)度為i,通過(guò)進(jìn)行如圖2所示的基于LSTM的股票預(yù)測(cè)流程圖操作后,得到預(yù)測(cè)結(jié)果。在LSTM神經(jīng)網(wǎng)絡(luò)中,隱藏層的神經(jīng)元的個(gè)數(shù)的選擇也是關(guān)鍵,當(dāng)神經(jīng)元的數(shù)量過(guò)少時(shí),會(huì)呈現(xiàn)出欠擬合的情況;而當(dāng)神經(jīng)元的數(shù)量過(guò)多時(shí),卻會(huì)呈現(xiàn)出過(guò)擬合的情況,因此本文采用的模型通過(guò)大量的實(shí)驗(yàn)測(cè)試,最終發(fā)現(xiàn)隱藏層神經(jīng)元的個(gè)數(shù)選擇為32個(gè)最佳。與此同時(shí),為了提高目標(biāo)函數(shù)的收斂效果,設(shè)置的學(xué)習(xí)率的最佳參數(shù)為0.001。除此之外,還需設(shè)置訓(xùn)練輪數(shù)為100輪,L S T M層的層數(shù)為2層。
圖2 基于LSTM的股票預(yù)測(cè)流程
由于L S T M網(wǎng)絡(luò)是一種特殊的RNN網(wǎng)絡(luò),因此LSTM網(wǎng)絡(luò)并不需要進(jìn)行分層設(shè)計(jì),直接將上述參數(shù)引進(jìn)到一個(gè)LSTM結(jié)構(gòu)中即可,但LSTM使用的激活函數(shù)為tanh函數(shù)。本文的模型的LSTM隱藏層展開(kāi)為30個(gè)節(jié)點(diǎn),Dense輸出層同樣輸出的是二維向量,并且是通過(guò)so ftmax函數(shù)對(duì)輸出向量進(jìn)行處理。采取的循環(huán)次數(shù)為300次,不采用小樣本訓(xùn)練,同時(shí)采用Adam算法作為優(yōu)化器來(lái)進(jìn)行對(duì)LSTM模型的優(yōu)化。此外為穩(wěn)定模型的訓(xùn)練,初始化權(quán)重參數(shù)為1×108,初始化偏置參數(shù)為0,不采用隨機(jī)打散的處理方式。
利用平均絕對(duì)誤差(MAE)以及預(yù)測(cè)數(shù)據(jù)和真實(shí)數(shù)據(jù)之間的相關(guān)系數(shù)(ρ)作為預(yù)測(cè)結(jié)果的評(píng)估標(biāo)準(zhǔn),平均絕對(duì)誤差值越小,且預(yù)測(cè)數(shù)據(jù)和真實(shí)數(shù)據(jù)之間的相關(guān)系數(shù)越大,則表明預(yù)測(cè)結(jié)果的誤差越小。
平均絕對(duì)誤差計(jì)算公式為:
相關(guān)系數(shù)計(jì)算公式為:
其中,測(cè)試數(shù)據(jù)集的數(shù)量采用n來(lái)表示;第i樣本點(diǎn)的真實(shí)值采用y i來(lái)表示;第i樣本點(diǎn)的模型預(yù)測(cè)值采用來(lái)表示;樣本真實(shí)值采用Y表示;模型預(yù)測(cè)值用?來(lái)表示,C O V(Y,?)表示Y與?的協(xié)方差;V AR(Y)表示Y的方差;VAR(?)表示的方差。
在利用LSTM模型進(jìn)行對(duì)股票的預(yù)測(cè)中,為了避免時(shí)間序列長(zhǎng)度的不合適而導(dǎo)致預(yù)測(cè)結(jié)果的精確度下降,進(jìn)行對(duì)不同時(shí)間序列長(zhǎng)度值(i=0.001n、0.002n、0.01n、0.02n)的神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練。當(dāng)選擇時(shí)間序列長(zhǎng)度為5的神經(jīng)網(wǎng)絡(luò)模型來(lái)進(jìn)行預(yù)測(cè)未來(lái)60天的股價(jià)情況,如圖3所示。其中,縱坐標(biāo)是當(dāng)天收盤(pán)價(jià)相對(duì)于歷史最低價(jià)的漲幅,與收盤(pán)價(jià)一一對(duì)應(yīng),圖像的漲跌與股價(jià)漲跌一一對(duì)應(yīng)。
圖3 基于前5天的特征向量預(yù)測(cè)第6天
當(dāng)選擇時(shí)間序列長(zhǎng)度為10的神經(jīng)網(wǎng)絡(luò)模型來(lái)進(jìn)行預(yù)測(cè)未來(lái)60天的股價(jià)情況,如圖4所示。
圖4 基于前10天的特征向量預(yù)測(cè)第11天的收盤(pán)價(jià)
當(dāng)選擇時(shí)間序列長(zhǎng)度為50的神經(jīng)網(wǎng)絡(luò)模型來(lái)進(jìn)行預(yù)測(cè)未來(lái)60天的股價(jià)情況,如圖5所示。
圖5 基于前50天的特征向量預(yù)測(cè)第51天的收盤(pán)價(jià)
當(dāng)選擇時(shí)間序列長(zhǎng)度為100的神經(jīng)網(wǎng)絡(luò)模型來(lái)進(jìn)行預(yù)測(cè)未來(lái)60天的股價(jià)情況,如圖6所示。
圖6 基于前60天的特征向量預(yù)測(cè)第61天的收盤(pán)
通過(guò)表2所示的不同長(zhǎng)度的時(shí)間序列與平均絕對(duì)誤差、相關(guān)系數(shù)的關(guān)系可得,基于LSTM的股票預(yù)測(cè)的模型選用的時(shí)間序列長(zhǎng)度的最合適的值為i=0.01n(50)天。
表2 時(shí)間序列長(zhǎng)度不同的模型在測(cè)試集上的評(píng)價(jià)指標(biāo)
由圖7可以觀察出,利用LSTM模型預(yù)測(cè)的對(duì)數(shù)據(jù)集為代號(hào)002的上證股票的預(yù)測(cè)的趨勢(shì)與真實(shí)的趨勢(shì)擬合效果比較好。由實(shí)驗(yàn)結(jié)果可知,本文所建立的LSTM模型在時(shí)間序列長(zhǎng)度為(i=0.01n)對(duì)股票價(jià)格的預(yù)測(cè)有較好的預(yù)測(cè)效果。
圖7 代號(hào)為002的上證股票價(jià)格的實(shí)際預(yù)測(cè)結(jié)果及局部放大結(jié)果
本文使用LSTM神經(jīng)網(wǎng)絡(luò)模型完成對(duì)未來(lái)股票價(jià)格的預(yù)測(cè),在實(shí)驗(yàn)研究中發(fā)現(xiàn)如果時(shí)間序列長(zhǎng)度值過(guò)小,則預(yù)測(cè)的結(jié)果的精確度會(huì)下降,而時(shí)間序列長(zhǎng)度值過(guò)大則會(huì)增大訓(xùn)練數(shù)據(jù)的冗余,浪費(fèi)空間等,因此合適的時(shí)間序列長(zhǎng)度值對(duì)LSTM神經(jīng)網(wǎng)絡(luò)模型的預(yù)測(cè)的精準(zhǔn)度至關(guān)重要,通過(guò)大量數(shù)據(jù)證明,時(shí)間序列長(zhǎng)度值為i=0.01n左右最為合適。從預(yù)測(cè)結(jié)果可以看出,本文應(yīng)用的LSTM模型可以呈現(xiàn)出較好的預(yù)測(cè)效果。