本發(fā)明屬于股票預測領域,更具體地,涉及一種基于lstm模型的股票預測方法和系統(tǒng)。
背景技術:
隨著互聯網行業(yè)的發(fā)展,信息技術占主導地位,證券市場向著現代化的市場方向發(fā)展?,F在滬深上市公司已經超過幾千家,然而股票投資的收益與風險往往是成正比的,即投資收益越高,可能冒得風險越大。因此,股市預測方法的研究具有極其重要的應用價值和理論意義。歷來有不少的傳統(tǒng)分析技術,應該說這些傳統(tǒng)的技術分析方法在股票分析上還是取得了較大的成就的,然而,不難發(fā)現,這些現有的理論和方法也是存在著很大的缺陷的,它們無不是采用靜態(tài)的方法,定性描述的多,定量描述的少,將影響股市的眾多因素割裂開來單一分析。因此,這些局限性使得這些方法在變幻莫測的股票價格波動中不能有效和準確地把握股票價格的變化。故需要探索股票市場波動的復雜性以及規(guī)律性,并根據其規(guī)律性設計一系列的操作簡便,精度夠高的預測軟件,為廣大投資者規(guī)避風險。
股票市場是多變量非線性動態(tài)系統(tǒng),目前學術上還沒有較好的建模方法,同時,股票市場具有一定程度的不確定性,因此,對那些試圖用建立精確模型的方法來進行股價預測的方法,其預測效果必然不會理想;股價自身以及影響股價的各變量之間呈現非線性特性,因此要求有強大的處理非線性問題的能力。
股票市場中各種因素之間的相關性錯綜復雜,主次關系變化不定,數量關系難于提取,因此應用常規(guī)預測方法對股市做出定量的分析也非常困難;
股票市場中隨機因素很多,對股指、價格的影響顯著,價格波動劇烈,燥聲高,表現出很強的非線性、不確定性。國內外對股票市場預測提出了許多方法。這些方法在實際工作中有著重要指導作用,但仍存在著某些不盡如人意的地方,如回歸模型外推性差,類比系數法準確性較差,神經網絡計算量大、易產生過擬合。
技術實現要素:
針對現有技術的以上缺陷或改進需求,本發(fā)明提供了一種基于lstm模型的股票預測方法和系統(tǒng),其目的在于由于股票的數據有著相當大的時序性,有一定的周期性,適合通過lstm模型對先前的股票走勢構建深度學習模型,預測未來的股票走勢,由此解決現有預測技術外推性差,準確性較差,計算量大、易產生過擬合的技術問題。
為實現上述目的,按照本發(fā)明的一個方面,提供了一種基于lstm模型的股票預測方法,所述方法包括一下步驟:
(1)獲取股票交易的歷史數據,基于實際需要選擇訓練數據;
(2)輸入訓練數據,基于深度學習理論構建股票預測模型,所述股票預測模型包括一層輸入層、一層隱含層和一層輸出層;
(3)輸出預測結果,結合真實值以誤差百分比作為評測指標進行測評。
進一步地,所述步驟(1)具體包括:
從股票交易歷史數據中選取前n天的股票參數來預測第n+1天的股票;選取股票的昨日收盤價、開盤價、最高價、最低價、成交量和調整收盤價作為股票預測模型的訓練數據。
進一步地,所述步驟(2)中股票預測模型包括:
維度為n×1的lstm層作為輸入層,將tanh函數作為輸入層內部激活函數和輸入層與隱含層之間的激活函數,輸入層網絡節(jié)點是n個;
tanh函數作為隱含層內部激活函數,其中隱含層是lstm結構,隱含層的維度為j×k的,有j個網絡節(jié)點,j優(yōu)選100,k優(yōu)選50;
linear函數作為輸出層的激活函數,輸出節(jié)點為1。
進一步地,所述股票預測模型訓練的過程中利用交叉驗證的方法來調節(jié)參數,劃分出20%的訓練數據作為驗證集,隨機梯度下降算法訓練股票預測模型。
進一步地,所述股票預測模型訓練的過程中選擇平均平方誤差作為損失函數,選擇rmsprop作為隨機梯度下降算法的優(yōu)化算法。
按照本發(fā)明的另一方面,提供了一種基于lstm模型的股票預測系統(tǒng),所述系統(tǒng)包括:
數據選擇模塊,用于獲取股票交易的歷史數據,基于實際需要選擇訓練數據;
模型構建模塊,用于輸入訓練數據,基于深度學習理論構建股票預測模型,所述股票預測模型包括一層輸入層、一層隱含層和一層輸出層;
預測及測評模塊,用于輸出預測結果,結合真實值以誤差百分比作為評測指標進行測評。
進一步地,所述步驟數據選擇模塊具體用于從股票交易歷史數據中選取前n天的股票參數來預測第n+1天的股票;選取股票的昨日收盤價、開盤價、最高價、最低價、成交量和調整收盤價作為股票預測模型的訓練數據。
進一步地,所述模型構建模塊用于構建股票預測模型,股票預測模型包括:
維度為n×1的lstm層作為輸入層,將tanh函數作為輸入層內部激活函數和輸入層與隱含層之間的激活函數,輸入層網絡節(jié)點是n個;
tanh函數作為隱含層內部激活函數,其中隱含層是lstm結構,隱含層的維度為j×k的,有j個網絡節(jié)點;
linear函數作為輸出層的激活函數,輸出節(jié)點為1。
進一步地,所述模型構建模塊還用于在股票預測模型訓練的過程中利用交叉驗證的方法來調節(jié)參數,劃分出20%的訓練數據作為驗證集,隨機梯度下降算法訓練股票預測模型。
進一步地,所述所述模型構建模塊還用于在股票預測模型訓練的過程中選擇平均平方誤差作為損失函數,選擇rmsprop作為隨機梯度下降算法的優(yōu)化算法。
總體而言,通過本發(fā)明所構思的以上技術方案與現有技術相比,具有以下技術特征及有益效果:
(1)采用了lstm模型構建股票預測模型,能更好預測周期性數據;
(2)采用了tanh函數作為lstm層的激活函數,對數據變化更敏感;
(3)采用了linear函數作為輸出層的激活函數,更好地處理模型中的回歸問題;
(4)由于采用誤差百分比作為評測指標進行測評,對預測結果的準確性有更直觀的體現。
附圖說明
圖1是本發(fā)明方法流程圖;
圖2是本發(fā)明基于深度學習理論構建股票預測模型結構示意圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
如圖1所示,本發(fā)明具體實施方法包括以下步驟:
(1)獲取股票交易的歷史數據,基于實際需要選擇數據;
從股票交易歷史數據中選取前n天的股票參數來預測第n+1天的股票;選取股票的昨日收盤價、開盤價、最高價、最低價和成交量作為股票預測模型的訓練數據。
選取的初始數據不能直接用于模型,需要轉換格式,輸入數據的格式如下矩陣所示:
每一條訓練數據有20天的股票數據,每一天都有6個特征,分別對應收盤價、開盤價、最高價、最低價、成交量和調整收盤價,選擇前20天的股票價格作為一個訓練樣本。預測下一天股票調整開盤價的值,
(2)基于深度學習理論構建股票預測模型,所述股票預測模型包括一層輸入層、一層隱含層和一層輸出層;如圖2所示:
維度為20×1的lstm層作為輸入層,將tanh函數作為輸入層內部激活函數和輸入層與隱含層之間的激活函數,輸入層網絡節(jié)點是20個;
tanh函數作為隱含層內部激活函數,其中隱含層是lstm結構,隱含層的維度為100×50的,有100個網絡節(jié)點;
linear函數作為輸出層的激活函數,輸出節(jié)點為1。
所述股票預測模型訓練的過程中利用交叉驗證的方法來調節(jié)參數,劃分出20%的訓練數據作為驗證集,隨機梯度下降算法訓練股票預測模型。
所述股票預測模型訓練的過程中選擇平均平方誤差作為損失函數,選擇rmsprop作為隨機梯度下降算法的優(yōu)化算法。
(3)輸出預測結果,結合真實值以誤差百分比作為評測指標進行測評。
本領域的技術人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。