張曉春 徐曉鵬 魏蘇林
摘要:針對(duì)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN預(yù)測(cè)方法在深層網(wǎng)絡(luò)反向傳導(dǎo)中易產(chǎn)生梯度爆炸、消失現(xiàn)象,研究了一種基于變長(zhǎng)Batch策略的長(zhǎng)短時(shí)記憶(LSTM)循環(huán)神經(jīng)網(wǎng)絡(luò)股票價(jià)格預(yù)測(cè)方法。首先,以股票歷史時(shí)間序列數(shù)據(jù)為研究對(duì)象,構(gòu)造不同天數(shù)長(zhǎng)度的時(shí)間序列,作為網(wǎng)絡(luò)的輸入;然后訓(xùn)練過(guò)程中,加入Early-stopping技術(shù),防止學(xué)習(xí)的過(guò)擬合;最后,用狀態(tài)參數(shù)傳遞的方式利用變長(zhǎng)Batch在測(cè)試集上對(duì)未來(lái)股票收盤價(jià)進(jìn)行預(yù)測(cè)。通過(guò)與傳統(tǒng)機(jī)器學(xué)習(xí)回歸模型性能的比較,驗(yàn)證了基于變長(zhǎng)Batch的LSTM預(yù)測(cè)模型及參數(shù)優(yōu)選策略在股票價(jià)格分析中具有較好的泛化能力和較低的預(yù)測(cè)誤差。
關(guān)鍵詞:長(zhǎng)短時(shí)記憶模型;循環(huán)神經(jīng)網(wǎng)絡(luò);深度學(xué)習(xí);時(shí)間序列;過(guò)擬合
中圖分類號(hào):TP389.1 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)28-0039-05
Abstract: This paper uses a varied batch LSTM technique to predict stock prices. The varied batch LSTM is designed to overcome gradient blow up or vanish. Firstly, build time series with different length for input, and then add Early-stopping method to avoid over-fitting during training stage. Finally, save state and change batch size for testing. Mean Squared Error is measured, and the model is compared to the logic regression model. The results suggest that the LSTM has better predictive power and low MSE, especially where using a strategy of ten days history data.
Key words: long short term memory; recurrent neural network; deep learning; time series;over-fitting
1引言
股票是一種動(dòng)態(tài)、高噪聲的時(shí)間序列數(shù)據(jù)。作為經(jīng)濟(jì)晴雨表的股票在一定程度上反映了國(guó)民經(jīng)濟(jì)的發(fā)展趨勢(shì)。股票的預(yù)測(cè)是一項(xiàng)艱難而又富有挑戰(zhàn)性的任務(wù),一直以來(lái)備受包括金融、統(tǒng)計(jì)、計(jì)算機(jī)等領(lǐng)域研究學(xué)者的關(guān)注。
股票預(yù)測(cè)大致分為統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)三類。早期的預(yù)測(cè)主要使用統(tǒng)計(jì)分析方法。由于股票價(jià)格作為一種時(shí)序數(shù)據(jù),具有高噪聲、非平穩(wěn)性等特點(diǎn),傳統(tǒng)的統(tǒng)計(jì)分析方法經(jīng)常難以擬合復(fù)雜非線性關(guān)系,并且預(yù)測(cè)精度不高[1-3]。近年來(lái),隨著機(jī)器學(xué)習(xí)理論及算法的快速發(fā)展,各種經(jīng)典機(jī)器學(xué)習(xí)算法已被各領(lǐng)域?qū)<?、學(xué)者們成功地運(yùn)用到股票的預(yù)測(cè)中,這些模型雖然可以建模股指歷史數(shù)據(jù)和未來(lái)股票價(jià)格之間的非線性關(guān)系,但模型的泛化能力不足[4-7]。由于股票價(jià)格經(jīng)常會(huì)受到各種因素的影響,采用深度神經(jīng)網(wǎng)絡(luò)可以通過(guò)學(xué)習(xí)大量數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)之間潛在的關(guān)系,并且具有良好的非線性逼近能力。在股票預(yù)測(cè)方面也取得了較好的效果。循環(huán)神經(jīng)網(wǎng)絡(luò)RNN已經(jīng)廣泛地應(yīng)用到時(shí)序數(shù)據(jù)的預(yù)測(cè)中,但是對(duì)于超過(guò)10層的網(wǎng)絡(luò),RNN網(wǎng)絡(luò)在反向傳導(dǎo)的過(guò)程中容易出現(xiàn)梯度消失或爆炸的現(xiàn)象[8-9]。由于RNN受限于深層網(wǎng)絡(luò)時(shí)序數(shù)據(jù)的應(yīng)用,學(xué)者們又提出了LSTM模型,其在RNN基礎(chǔ)上增加了遺忘門機(jī)制,有效地解決了梯度消失、梯度爆炸問(wèn)題[10-11]。
LSTM神經(jīng)網(wǎng)絡(luò)在預(yù)測(cè)時(shí)序序列數(shù)據(jù)中極具優(yōu)勢(shì)。因此,本文結(jié)合目前前沿的LSTM優(yōu)化技術(shù),利用Early-stopping 技術(shù)防止過(guò)擬合問(wèn)題[12],通過(guò)構(gòu)造可變batch機(jī)制實(shí)現(xiàn)LSTM三層網(wǎng)絡(luò),并對(duì)TSLA股票指數(shù)進(jìn)行實(shí)驗(yàn),并取得較理想的預(yù)測(cè)誤差。
2模型
2.1 線性回歸
線性回歸是一種最基本的機(jī)器學(xué)習(xí)算法,它通過(guò)數(shù)據(jù)建立模型,反映輸入特征(獨(dú)立變量)和目標(biāo)(依賴變量)之間的關(guān)系,然后再用未使用過(guò)的數(shù)據(jù)進(jìn)行預(yù)測(cè)。
Hochreiter等學(xué)者使用記憶門技術(shù)解決了RNN在深層網(wǎng)絡(luò)反向求導(dǎo)過(guò)程中易造成梯度消失和梯度爆炸的現(xiàn)象[11]。LSTM模型對(duì)于諸如語(yǔ)音、信號(hào)、金融時(shí)序數(shù)據(jù)的訓(xùn)練、預(yù)測(cè)效果及運(yùn)行時(shí)間等性能方面都有良好表現(xiàn)。
LSTM模型最重要的結(jié)構(gòu)是由三個(gè)門構(gòu)成:遺忘門ft決定哪些信息被該細(xì)胞過(guò)濾掉;輸入門it決定哪些經(jīng)過(guò)輸入門的值用來(lái)更新記憶狀態(tài);輸出門ot決定基于輸入和細(xì)胞記憶的哪些部分被輸出。公式2至公式5給出了標(biāo)準(zhǔn)LSTM結(jié)構(gòu)的門控實(shí)現(xiàn)公式。ft首先通過(guò)讀取當(dāng)前時(shí)刻輸入xt和上一時(shí)刻記憶單元狀態(tài)信息ht-1,然后通過(guò)sigmoid函數(shù)輸出0到1之間的值,結(jié)果用來(lái)選擇有多少歷史信息被保存下來(lái)。Wi、Wf和Wo表示權(quán)重,bi、bf和bo表示偏置信,Ct表示記憶單元,σ表示激活函數(shù)。
3實(shí)驗(yàn)與分析
3.1 數(shù)據(jù)集
本次實(shí)驗(yàn)數(shù)據(jù)采用特斯拉股票歷史數(shù)據(jù),包含TSLA股票2010年6月29日至2020年2月3日的10年歷史交易數(shù)據(jù),共計(jì)2416條日線數(shù)據(jù)。實(shí)驗(yàn)分為兩部分,第一部分實(shí)驗(yàn)基于傳統(tǒng)機(jī)器學(xué)習(xí)方法的邏輯回歸模型,通過(guò)回歸系數(shù),分別選擇單特征、多特征進(jìn)行實(shí)驗(yàn)。第二部分基于不考慮特征工程的深度學(xué)習(xí)LSTM模型。
3.2性能指標(biāo)
為了量化模型的預(yù)測(cè)效果,本文采用均方根誤差MSE(Mean Squared Error)來(lái)表示。作為預(yù)測(cè)模型的評(píng)價(jià)指標(biāo),MSE是通過(guò)計(jì)算真實(shí)值與預(yù)測(cè)值之差的平方的期望獲得,其值越小,表明預(yù)測(cè)效果越好。如公式(6)所示,[yi]表示真值,[yi]表示預(yù)測(cè)值,M表示測(cè)試樣本總數(shù)。
3.3邏輯回歸實(shí)驗(yàn)及分析
3.3.1 實(shí)驗(yàn)數(shù)據(jù)
第一組實(shí)驗(yàn)使用5個(gè)輸入特征,分別是開盤價(jià)、最高價(jià)、最低價(jià)、收盤價(jià)和成交量,預(yù)測(cè)未來(lái)收盤價(jià)。為了評(píng)價(jià)回歸模型預(yù)測(cè)能力,我們將數(shù)據(jù)分為兩個(gè)部分,其中前80%,共1931條日數(shù)據(jù)作為訓(xùn)練集,而后485條數(shù)據(jù)作為測(cè)試集,用于評(píng)估模型預(yù)測(cè)能力。
3.3.2結(jié)果分析
表1給出了基于不同歷史回看天數(shù)的邏輯回歸預(yù)測(cè)MSE。從表1易見,歷史回看天數(shù)雖然不同,但都在將前三天數(shù)據(jù)作為輸入特征進(jìn)行學(xué)習(xí)、預(yù)測(cè)時(shí),獲得最小的MSE。
選擇最佳回看天數(shù),可以通過(guò)比較不同回看天數(shù)的MSE變化曲線,如圖3所示,根據(jù)前10天、15天、30天、50天、100天、150天等回看數(shù)據(jù)作為輸入特征進(jìn)行學(xué)習(xí)、預(yù)測(cè),其MSE曲線都在3天時(shí)得到局部最小值,即針對(duì)該數(shù)據(jù)集,應(yīng)采用前三天數(shù)據(jù)進(jìn)行邏輯回歸學(xué)習(xí),回歸后模型進(jìn)行預(yù)測(cè)可以獲得最小的MSE。
從MSE曲線得到了最佳回看天數(shù)為3,利用3個(gè)交易日的數(shù)據(jù)作為輸入,未來(lái)1日收盤價(jià)作為輸出,進(jìn)行回歸學(xué)習(xí),回歸后模型在測(cè)試集上進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果在整個(gè)測(cè)試集上,MSE為0.0011,準(zhǔn)確率為:0.97,如圖4所示。
3.4 LSTM實(shí)驗(yàn)及分析
3.4.1實(shí)驗(yàn)數(shù)據(jù)
本文采用了Keras進(jìn)行時(shí)間序列LSTM 建模,相對(duì)于其他深度學(xué)習(xí)框架,Keras簡(jiǎn)單易用,而且后端支持Tensorflow,theano等框架。為了評(píng)價(jià)LSTM模型預(yù)測(cè)能力,我們將數(shù)據(jù)分為兩個(gè)部分。其中前40%、20%日數(shù)據(jù)分別作為訓(xùn)練集和驗(yàn)證集,通過(guò)Early-stopping技術(shù)確定epoch次數(shù)。后20%日數(shù)據(jù)作為測(cè)試集,用于模型的預(yù)測(cè)。輸入特征為開盤價(jià)、最高價(jià)、最低價(jià)、收盤價(jià)、調(diào)整后收盤價(jià)和成交量6個(gè)特征。另外,由于輸入特征有不同的尺度,為了學(xué)習(xí)算法能夠更快地收斂,我們?cè)谟?xùn)練前調(diào)用scikit-learn的minmaxscaler函數(shù)將所有特征歸一化到0和1之間。
本文針對(duì)股票時(shí)間序列數(shù)據(jù),提出了一種基于可變batch的LSTM網(wǎng)絡(luò),包括一個(gè)輸入層,一個(gè)含有10個(gè)神經(jīng)元的隱含層和一個(gè)含有一個(gè)單元的輸出層。LSTM單元使用默認(rèn)的tanh激活函數(shù),輸出層使用一個(gè)線性激活函數(shù)。本文預(yù)測(cè)目標(biāo)是股指未來(lái)收盤價(jià),故選用均方誤差MSE作為損失函數(shù),采用Adam(Adaptive Moment Estimation)[12]優(yōu)化器進(jìn)行優(yōu)化訓(xùn)練。
由于在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),batch size的大小直接影響梯度估計(jì)的準(zhǔn)確性,所以權(quán)衡batch size和學(xué)習(xí)過(guò)程的速度及穩(wěn)定性是尤為重要的。本文采用Mini-batch梯度下降方法訓(xùn)練LSTM網(wǎng)絡(luò)。在訓(xùn)練集和驗(yàn)證集上,batch size分別設(shè)置為8、16、32、64和128個(gè)樣本大小,在測(cè)試集上,由于樣本個(gè)數(shù)不能保證是訓(xùn)練batch size的整數(shù)倍,故在測(cè)試時(shí),保留訓(xùn)練完成后模型的參數(shù)狀態(tài),重置batch size為1再進(jìn)行預(yù)測(cè)。
3.4.2結(jié)果分析
表2給出了以歷史60天數(shù)據(jù)構(gòu)造的時(shí)間序列,共905個(gè)訓(xùn)練樣本,X_train形狀為(905, 6)和422個(gè)驗(yàn)證樣本,X_valid形狀為(422,6),y_train形狀為(905, ),y_valid形狀為(422, )作為網(wǎng)絡(luò)輸入進(jìn)行學(xué)習(xí)。訓(xùn)練時(shí)batch_size分別設(shè)置為8、16、32、64、128,預(yù)測(cè)前,通過(guò)拷貝網(wǎng)絡(luò)的權(quán)值,用訓(xùn)練后模型中的權(quán)值,重新創(chuàng)建一個(gè)網(wǎng)絡(luò),并設(shè)置其batch_size為1,再進(jìn)行預(yù)測(cè),解決訓(xùn)練和預(yù)測(cè)使用不同batch_size的問(wèn)題。
圖5至圖9給出了基于歷史60個(gè)交易日,在訓(xùn)練集設(shè)置不同batch_size的學(xué)習(xí)曲線(左圖)和測(cè)試集上的預(yù)測(cè)值(Prediction)和真值(Close)曲線(右圖)。
表3給出了以歷史60天數(shù)據(jù)構(gòu)造的時(shí)間序列,共935個(gè)訓(xùn)練樣本,X_train形狀為(935, 6)和452個(gè)驗(yàn)證樣本,X_valid形狀為(452, 6),y_train形狀為(935, ),y_valid形狀為(452, )作為網(wǎng)絡(luò)輸入進(jìn)行學(xué)習(xí)。訓(xùn)練時(shí)batch_size分別設(shè)置為8、16、32、64、128,預(yù)測(cè)前,通過(guò)拷貝網(wǎng)絡(luò)的權(quán)值,用訓(xùn)練后模型中的權(quán)值,重新創(chuàng)建一個(gè)網(wǎng)絡(luò),并設(shè)置其batch_size為1,再進(jìn)行預(yù)測(cè),解決訓(xùn)練和預(yù)測(cè)使用不同batch_size的問(wèn)題。
圖10至圖14給出了基于歷史30個(gè)交易日,在訓(xùn)練集設(shè)置不同batch_size的學(xué)習(xí)曲線(左圖)和測(cè)試集上的預(yù)測(cè)值(Prediction)和真值(Close)曲線(右圖)。
表4給出了以歷史10天數(shù)據(jù)構(gòu)造的時(shí)間序列,共955個(gè)訓(xùn)練樣本,X_train形狀為(955, 6)和472個(gè)驗(yàn)證樣本,X_valid形狀為(472, 6),y_train形狀為(955, ),y_valid形狀為(472, )作為網(wǎng)絡(luò)輸入進(jìn)行學(xué)習(xí)。訓(xùn)練時(shí)batch_size分別設(shè)置為8、16、32、64、128,預(yù)測(cè)前,通過(guò)拷貝網(wǎng)絡(luò)的權(quán)值,用訓(xùn)練后模型中的權(quán)值,重新創(chuàng)建一個(gè)網(wǎng)絡(luò),并設(shè)置其batch_size為1,再進(jìn)行預(yù)測(cè),解決訓(xùn)練和預(yù)測(cè)使用不同batch_size的問(wèn)題。
圖15至圖19給出了基于歷史10個(gè)交易日,在訓(xùn)練集設(shè)置不同batch_size的學(xué)習(xí)曲線(左圖)和測(cè)試集上的預(yù)測(cè)值(Prediction)和真值(Close)曲線(右圖)。
3.5 邏輯回歸與LSTM的對(duì)比分析
比較表1和表2、表3、表4易見,邏輯回歸在不同天數(shù)歷史數(shù)據(jù)條件下,學(xué)習(xí)到的模型都可以達(dá)到較好的預(yù)測(cè)效果,并且MSE保持在0.0011左右。然而,LSTM模型在測(cè)試集上的預(yù)測(cè)效果浮動(dòng)較大,MSE最低時(shí)達(dá)到0.000807,顯著優(yōu)于邏輯回歸預(yù)測(cè)性能。LSTM網(wǎng)絡(luò)的預(yù)測(cè)能力受網(wǎng)絡(luò)深度、batch大小、樣本大小、時(shí)間序列長(zhǎng)度等參數(shù)的影響,本文實(shí)驗(yàn)在以歷史10天數(shù)據(jù)預(yù)測(cè)第11天,學(xué)習(xí)階段batch_size設(shè)置為8,測(cè)試階段batch_size設(shè)置為1,得到了最低的MSE。實(shí)驗(yàn)結(jié)果也進(jìn)一步說(shuō)明了對(duì)于數(shù)據(jù)量不是很大的時(shí)序數(shù)據(jù),用簡(jiǎn)單的機(jī)器學(xué)習(xí)方法也可以實(shí)現(xiàn)。而當(dāng)數(shù)據(jù)量比較大,網(wǎng)絡(luò)層次比較深,為了緩解過(guò)擬合、梯度爆炸、梯度消失的現(xiàn)象,選擇LSTM構(gòu)造深層網(wǎng)絡(luò)是一種較好的選擇。
4結(jié)論
本文研究了基于變長(zhǎng)batch的 LSTM 神經(jīng)網(wǎng)絡(luò)模型,模型相比于傳統(tǒng)邏輯回歸模型具有更低的均方根誤差MSE?;谀壳暗墓ぷ?,在后續(xù)研究中可以在參數(shù)自動(dòng)優(yōu)化方面展開進(jìn)一步研究,或者收集新聞等市場(chǎng)情緒因素,作為輸入特征,以提高預(yù)測(cè)準(zhǔn)確率。
參考文獻(xiàn):
[1] 于海姝,蔡吉花,夏紅.ARIMA模型在股票價(jià)格預(yù)測(cè)中的應(yīng)用[J].經(jīng)濟(jì)師,2015(11):156-157.
[2] Ariyo A A,Adewumi AO,Ayo CK.Stock price prediction using the ARIMA model[C]//2014 UKSim-AMSS 16th International Conference on Computer Modelling and Simulation.26-28 March2014,Cambridge,UK.IEEE,2014:106-112.
[3] 石佳,劉威,馮智超,等.基于ARIMA模型的股市價(jià)格規(guī)律分析與預(yù)測(cè)[J].統(tǒng)計(jì)學(xué)與應(yīng)用,2020,9(1): 101-114.
[4] Patel J,Shah S,Thakkar P,etal.Predicting stock market index using fusion of machine learning techniques[J].Expert Systems with Applications,2015,42(4):2162-2172.
[5] Kumar D,Meghwani SS,Thakur M.Proximal support vector machine based hybrid prediction models for trend forecasting in financial markets[J].JournalofComputationalScience,2016,17:1-13.
[6] Singh N,Khalfay N,Soni V,et al.Stock prediction using machine learning a review paper[J].International Journal of Computer Applications,2017,163(5):36-43.
[7] Kim K J.Financial time series forecasting using support vector machines[J].Neurocomputing,2003,55(1/2):307-319.
[8] Samarawickrama A J P,F(xiàn)ernandoTGI.A recurrent neural network approach in predicting daily stock prices an application to the Sri Lankanstockmarket[C]//2017 IEEE International Conference on Industrial and Information Systems (ICIIS).15-16 Dec.2017,Peradeniya,Sri Lanka.IEEE,2017:1-6.
[10] Liu, Y.; Guan, L.; Hou, C.; Han, H.; Liu, Z.; Sun, Y.; Zheng, M. Wind Power Short-Term Prediction Based on LSTM and Discrete Wavelet Transform[J]. Appl.Sci.2019,9:1108.
[11] Hochreiter, S.;Schmidhuber, J. Long short-term memory[J]. Neural Comput.1997, 9, 1735–1780.
[12] Kingma D P,Ba J Adam.A Method for Stochastic Optimization[A].International Conference on Learning Representations (ICLR)[C].2015(5) .
【通聯(lián)編輯:唐一東】