趙紅蕊,薛 雷
上海大學 通信與信息工程學院,上海200444
隨著計算機科學和市場經濟的快速發(fā)展,股票市場作為資本市場的重要組成部分,成為了政府、上市公司、投資機構以及一些個人投資者的關注熱點。股票市場是國民經濟發(fā)展變化的“晴雨表”和“報警器”,其行情的變化與國家的宏觀經濟發(fā)展、法律法規(guī)的制定、政治事件的發(fā)生、公司的財務狀況和政策、投資者心理、輿論引導等等都有所關聯(lián),從而導致股票價格具有高度的波動性與不規(guī)律性,因此合理準確地預測股票價格的變化趨勢成為許多業(yè)界學者的主要探索和研究方向。
隨著大數(shù)據(jù)時代的發(fā)展,像支持向量機[1]、決策樹[2]、隨機森林[3]以及深度學習算法[4]等機器學習算法模型被廣泛應用于股票等金融數(shù)據(jù)研究。由于股票數(shù)據(jù)具有數(shù)據(jù)量大,信息模糊,長記憶性,非線性和非平穩(wěn)性等特征,傳統(tǒng)的機器學習算法并不能取得較好的預測效果,而深度學習模型與傳統(tǒng)的機器學習模型相比有著更為強大的學習能力和自適應能力[5],對非線性系統(tǒng)可以更好地進行預測分析。
LSTM[6]神經網(wǎng)絡作為深度學習算法模型中的一種新型遞歸神經網(wǎng)絡模型受到了廣泛的關注,由于其具備良好的選擇性、記憶性以及時序內部影響的特性極適用于股票價格時間序列的預測,因此具有廣闊的應用前景。
圖1 LSTM網(wǎng)絡結構展開圖
本文基于深度學習方法對股票金融數(shù)據(jù)進行研究,以收盤價格為預測目標,提出了一種結合LSTM和CNN的時間序列預測模型,該模型主要采用端到端的網(wǎng)絡結構,首先使用LSTM 來提取數(shù)據(jù)中的特征,尤其是時間序列中的時序特征,然后利用CNN 挖掘時間序列中的局部特征和深層特征[7]。同時結合了注意力機制[8]CBAM[9],相比于SENet[10]只關注通道的注意力機制可以更好地提升網(wǎng)絡模型的特征提取能力。
本實驗中使用PyTorch 作為神經網(wǎng)絡的框架,使用Python 語言進行了網(wǎng)絡的代碼實現(xiàn)。使用上海證券綜合指數(shù)(簡稱上證指數(shù),證券代碼為000001)1991—2018年股票數(shù)據(jù)進行分析預測實驗,將真實值和預測值進行對比,并且進行預測結果圖形擬合[11]和誤差評估,通過與LSTM 和LSTM-CNN 模型的對比實驗,最后驗證了在LSTM與CNN結合的網(wǎng)絡模型中加入CBAM模塊預測模型的有效性。
LSTM 是為了解決循環(huán)神經網(wǎng)絡[12](RNN)模型由于輸入序列過長而產生的梯度消失[13]問題而發(fā)展出來的一種機器學習神經網(wǎng)絡,主要由記憶細胞、輸入門、輸出門、遺忘門組成,三個門的激活函數(shù)均為Sigmoid。輸入門用來控制當前時刻神經單元的輸入信息,遺忘門用來控制上一時刻神經單元中存儲的歷史信息,輸出門用來控制當前時刻神經單元的輸出信息[14]。
圖1為LSTM的網(wǎng)絡結構展開圖,其中Xt表示當前t時刻的輸入,ht表示當前t時刻細胞的狀態(tài)值,下面是LSTM的計算公式:
其中,Wi、Wf、Wc、Wo分別為輸入門、遺忘門、更新門和輸出門的權值矩陣,bi、bf、bc、bo分別為輸入門、遺忘門、更新門和輸出門的偏置,以此計算得到當前t時刻的輸出ht與當前t時刻更新的細胞狀態(tài)Ct。
最近幾年注意力模型在深度學習的各個領域被廣泛使用,深度學習中的注意力機制的核心目標是從眾多信息中選擇出對當前任務目標更關鍵的信息。
本文中,采用Convolutional Block Attention Module(CBAM)去實現(xiàn)attention 機制。CBAM 表示卷積模塊的注意力機制模塊,它是一種為卷積神經網(wǎng)絡設計的,簡單有效的注意力模塊,結合了空間和通道的注意力模塊,相對于SENet多了一個空間attention,可以取得更好的效果。CBAM 使得模型擁有了重視關鍵特征忽視無用特征的能力。對于卷積神經網(wǎng)絡生成的特征圖,CBAM 從通道和空間兩個維度計算特征圖的權重圖,然后將權重圖與輸入的特征圖相乘來進行特征的自適應學習。CBAM是一個輕量的通用模塊,可以將其融入到各種卷積神經網(wǎng)絡中進行端到端的訓練。圖2 為CBAM網(wǎng)絡結構圖,其中Channel attention module主要關注于輸入數(shù)據(jù)中有意義的內容。它的表達式為:
圖2 CBAM網(wǎng)絡結構圖
而Spatial Attention Module 主要關注于哪個位置信息是有意義的,是對于通道注意力的補充。它的表達式為:
基于LSTM-CNN-CBAM 的股票預測網(wǎng)絡模型是在LINUX 操作系統(tǒng)下搭建的,使用的是GPU 版本的PyTorch 框架。通過在結合長短時記憶神經網(wǎng)絡和卷積神經網(wǎng)絡的長記憶性分析的時間序列分類模型中加入了CBAM 注意力機制,使模型自動學習和提取時間序列中的局部特征和長記憶性特征,模型展開如圖3所示。
圖3 網(wǎng)絡模型結構圖
首先是LSTM 模塊,使用了3 層LSTM 神經網(wǎng)絡學習數(shù)據(jù)中的時序特征,每層LSTM 有128 個隱藏神經元,學習率為0.001,迭代次數(shù)(epochs)為200次,然后將學習到的特征通過卷積神經網(wǎng)絡進行特征學習和提取,并且加入了注意力機制,最后通過5層反向傳播神經網(wǎng)絡[15]輸出預測價格,每個全連接層的神經元個數(shù)依次為1 024、128、64、20、1,激活函數(shù)使用ReLu函數(shù)。
實驗主要由數(shù)據(jù)下載、數(shù)據(jù)處理、模型訓練、微調參數(shù)[9]這幾個部分組成,具體流程圖如圖4所示。
圖4 實驗流程圖
4.2.1 數(shù)據(jù)來源
圖5 時間步長=5
圖6 時間步長=10
本文的實驗數(shù)據(jù)是利用Tushare財經接口包下載的上證指數(shù)1991年1月1日至2018年12月28日(共6 847組數(shù)據(jù)),主要包含收盤價(close)、開盤價(open)、最高價(high)、最低價(low)、昨日收盤價(pre_close)、漲跌額(change)、漲跌幅(pct_chg)成交量(vol)、成交額(amount)等時序數(shù)據(jù)。
4.2.2 數(shù)據(jù)處理
數(shù)據(jù)預處理:由于獲取到的原始數(shù)據(jù)集存在缺值和亂序等情況,所以要先對下載的數(shù)據(jù)集進行插值和按日期進行排序等操作,獲得一個無亂序的完整數(shù)據(jù)集。
數(shù)據(jù)標準化[16]:由于數(shù)據(jù)集的數(shù)據(jù)之間量級不一樣,例如開盤價、收盤價與成交量、成交額等數(shù)據(jù)量級之間存在著巨大的差異,為了消除數(shù)據(jù)之間不同量級的影響,將不同量級的數(shù)據(jù)統(tǒng)一轉化為同一個量級,所以本模型對這些數(shù)據(jù)進行了z-score 標準化處理,它是將觀測值減去該組觀測值的中值(μ),再除以標準差(σ)得到的,有利于提高模型的訓練速度和預測精度。表達式如公式(10)所示:
4.2.3 時間步數(shù)設置
因為LSTM神經網(wǎng)絡具有時間序列的特性,本文將數(shù)據(jù)集的前85%作為訓練集數(shù)據(jù),后15%作為測試集數(shù)據(jù)。在LSTM-CNN-CBAM 股票預測網(wǎng)絡模型中,通過設置不同的時間步長進行實驗對比,分別得到圖5~10的實驗結果,通過實驗可以發(fā)現(xiàn),設置不同的步長時間,對預測結果的準確性具有影響。
通過觀察圖5~10可以發(fā)現(xiàn)當時間步長為5時,因為考慮的時間步長較短,沒有考慮到全局因素影響,預測結果有較大偏差,數(shù)據(jù)具有一定的波動。
當時間步長設置為30時,考慮的時間范圍過大,容易忽略短時間內輿情等因素產生的影響,預測結果不準確。步長設置為20的時候,誤差最小,準確率最高。所以最后將時間步長設置為20,用前20天的9個屬性的數(shù)據(jù)作為神經單元的輸入層,第21 天的收盤價格作為標簽進行訓練模型。
圖7 時間步長=15
圖8 時間步長=20
圖9 時間步長=25
圖10 時間步長=30
圖11 LSTM
圖12 LSTM-CNN
圖13 LSTM-CNN-CBAM
模型預測結果如圖11~13所示,紅色虛線為股票收盤價預測值,藍色曲線為股票收盤價真實值,橫坐標為時間,縱坐標為股票標準化處理后的價格。
通過觀察對比實驗擬合圖形可以發(fā)現(xiàn)單一的LSTM網(wǎng)絡對于股票價格的波動不敏感,而LSTM與卷積神經網(wǎng)絡的結合模型有能力學習到股票價格波動的特征。然而,從圖12可知,盡管LSTM-CNN模型可以擬合股票價格的大致波動,但擬合的精度較低,LSTMCNN-CBAM的預測效果明顯優(yōu)于單純的LSTM網(wǎng)絡模型和LSTM-CNN 網(wǎng)絡模型,因為CBAM 模塊能夠通過通道注意力機制從卷積神經網(wǎng)絡產生的大量特征圖中選擇對預測結果有重要影響的特征圖。同時,通過空間注意力機制能夠從特征圖的空間信息中選擇有效的特征信息。該模型可以合理準確地預測到股票的價格。圖13 中,在150 天左右,該模型對于股票的價格的預測值與實際值差別較大,這可能是由于股市受到當時的政府政策或者網(wǎng)絡輿情的影響所造成的而非本文所提出的網(wǎng)絡的缺陷所致。因此,本次實驗驗證了本文提出的網(wǎng)絡具有有效性和可行性。
本文主要目標是預測股指未來收盤價,采用均方根誤差[17](RMSE)對預測結果進行評價。均方根誤差也稱之為標準誤差,是觀測值與真實值之間的偏差,常用來作為機器學習模型預測結果衡量的標準。
由表1 可知,表中各模型之間的誤差走勢與圖11~13中的預測價格曲線與實際價格曲線的之間的誤差走勢具有一致性。單一的LSTM 模型的預測價格能力最差,LSTM-CNN 模型的預測價格能力次之。LSTMCNN-CBAM 模型的性能較其他模型的預測RMSE 小,其預測值與真實值擬合圖形的分散程度較小,預測精度最高。因此,表1定量地證明了本文中設計的網(wǎng)絡模型的有效性。
表1 網(wǎng)絡模型預測誤差
時間復雜度決定了模型的預測時間。如果復雜度過高,則會導致模型預測耗費大量時間,既無法快速地驗證想法和改善模型,也無法做到快速地預測。針對這一問題,對三種股票預測模型的時效性做了一個對比分析,運用訓練集的數(shù)據(jù)進行預測,得到的三種模型的預測完成所需時間如表2。
表2 網(wǎng)絡模型的預測時效性
由表2可知,三種模型的預測完成所需時間相差不大,只有幾毫秒。在預測過程中不會耗費大量時間,可以做到快速的預測。因此,表2定量地證明了本文中設計的網(wǎng)絡模型具有一定的時效性。
本文通過對在結合長短時記憶網(wǎng)絡和卷積神經網(wǎng)絡中引入CBAM 進行理論研究與對比,并利用Python語言和PyTorch 框架對模型進行代碼實現(xiàn),采用上證指數(shù)數(shù)據(jù)進行價格預測,通過與LSTM 和LSTM-CNN 的對比實驗可以看出預測的準確率得到了一定的提升。表明了此模型對股票信息的預測是具有可行性和有效性的。通過對三種預測模型的時效性對比分析,證明了此模型具有良好的時效性??紤]到本次實驗中在峰值處出現(xiàn)的預測值與真實值之間的誤差,將會在未來的工作中考慮結合輿情分析等因素,進行文本挖掘[18],希望能提高模型對股價預測的精準度,給股民的選擇帶來更加有價值的參考。