本申請涉及人工智能
技術領域:
,具體涉及一種基于lstm(long-shorttermmemory,長短期記憶神經網絡)的股票趨勢預測方法,還涉及一種執行并實現該方法的智能終端。
背景技術:
:股票交易市場是經濟運行的晴雨表。投資者如果能夠精確的把握股票市場的變化規律,不僅可以獲取巨大收益,還可以規避投資風險。對于政府監管而言,既可以提前制定合理政策以引導市場健康發展,也可以對上市公司提前預警風險。因此,股票市場趨勢預測一直以來都是一個涉及到國計民生的關鍵問題,既是投資者追求的圣杯,也是金融市場監管的難點。但是,股票市場變化涉及到政治、經濟、文化等諸多方面的影響因素,目前并不存在一個完美的預測方案。股票預測一直以來都是學術界和金融界的研究熱點。自從股票市場誕生以來,眾多國家的科學家和專業人士先后嘗試了各種方法來預測股票價格的時間序列,其中包括統計學方法,計量經濟學模型,人工智能與機器學習等。現有技術中,沿用至今的分析方法大致上可以分為基本面分析法與技術分析法兩大類。其中基本面分析法著手點在于國家經濟政策與公司的基本面等信息,而技術分析方法則側重利用歷史數據帶入數學模型或機器中來訓練和演算。具體而言,基本面分析方法,是通過宏觀國家經濟政策、世界經濟局勢、企業基本盈利狀態和未來行業發展前景等基本面因素來研究公司股票價格變動趨勢的。常用的分析面主要包括宏觀經濟政策、企業基本盈利狀態、行業發展前景等。但是基本面分析方法中的影響因素極難定量,并且其影響因素一般都處于一個長期的經濟周期中,需要學者們實時跟蹤才能真正在預測股價走向時有所幫助。技術分析法相比基本面分析來說,是量化研究價格走勢方法。主要依靠的是股票的量化指標,如開盤價、收盤價和成交量等。從作用上講,技術分析法比較注重市場本身的運行規律,其適合于對市場進行短期分析,但是難以預測價格的長遠趨勢。技術分析重視數量方面的變化,并通過相關因素數量上的變化研究與分析目標的相關性。技術分析依賴的理論前提主要有兩個,首先是歷史數據代表市場發展過程,其次是價格變動具有趨勢性與自影響性。目前較為常見的技術分析方法主要分為兩類:1)以arima(自回歸移動平均模型,autoregressiveintegratedmovingaveragemodel)、arch模型為代表的傳統時間序列分析方法;2)近年來興起的機器學習方法。傳統時間序列分析方法主要是通過將時間序列數據分解為趨勢項、周期項與噪音項三個部分,從而實現預測。為了實現這個分解,往往需要平穩性、可逆性、正態分布等假設前提,對于不平穩序列還需要通過差分等手段將非平穩時間序列轉換為平穩時間序列。但是,機器學習方法主要是通過海量數據的訓練來最小化損失函數,從而實現擬合數據特征,實現預測未來走向的目的。此外,目前有現有方案是使用單個lstm模型進行股票預測的方法,lstm模型是循環神經網絡模型的一個變種,能夠解決時間序列分析中的長時依賴問題。但是,現有方法中使用單個lstm模型進行預測的缺點較多:首先,lstm模型作為一種深度學習模型,需要大量數據進行訓練,而現有的模型僅使用單支股票的歷史交易數據進行日線預測,數據量過小,即使是1991年就已經上市的公司,其至今的股票日線數據也僅有不到9000條,與訓練lstm模型所需要的海量數據相比差距甚大;其次,單個lstm模型的訓練方式實際上是在預測每個時刻向上或者向上的動量,無法實現對未來較長一段時間的預測。因而,雖然現有技術使用單個lstm模型實現了與真實曲線幾乎一致的預測曲線,但是其結果具有一定的迷惑性。因為其預測曲線由對各個時刻分別預測的單一預測點組成,預測的起點使用的是上一段時間的真實歷史數據,但后續預測點都是由前一個預測點的真實數據來預測。這樣會導致即使每個時刻都具有較大偏差(最終結果可能會與真實曲線接近),因此現有的基于單個lstm模型的簡單預測方法誤差較大且實用性較低。技術實現要素:基于此,有必要針對上述lstm模型的簡單預測方法誤差較大且實用性較低的問題,提供一種智能終端及其基于lstm的股票趨勢預測方法,能夠提高對于股票趨勢預測的準確度,有效地減小誤差,在一定程度上把握比如多方力量影響下的股票走勢。一種基于lstm的股票趨勢預測方法,所述基于lstm的股票趨勢預測方法包括:獲取目標股票的歷史數據;將所述歷史數據進行數據清洗、歸一化;將清洗歸一化后的歷史數據按照時間劃分為訓練數據集與測試數據集;對所述訓練數據集的訓練數據進行離線模型訓練,以分別訓練長短期記憶神經網絡lstm的多個神經網絡模型;獲取訓練數據對于訓練后的多個神經網絡模型輸出的預測值列表,將所述預測值列表與實際的股票趨勢值進行比較,計算得到多個神經網絡模型作為組合模型時所占的權重值;利用測試數據集的測試數據對組合模型中的多個神經網絡模型評估預測效果,根據預測效果調整所述多個神經網絡模型作為組合模型時所占的權重值。一種智能終端,所述智能終端包括處理器,所述處理器用于讀取并執行程序數據,可實現上述的基于lstm的股票趨勢預測方法。上述基于lstm的股票趨勢預測方法通過將歷史數據按照時間劃分為訓練數據集與測試數據集,對所述訓練數據集的訓練數據進行離線模型訓練,以分別訓練lstm的多個神經網絡模型,接著,獲取訓練數據對于訓練后的多個神經網絡模型輸出的預測值列表,并將所述預測值列表與實際的股票趨勢值進行比較,以計算得到多個神經網絡模型作為組合模型時所占的權重值,最終,利用測試數據集的測試數據對組合模型中的多個神經網絡模型評估預測效果,根據預測效果調整所述多個神經網絡模型作為組合模型時所占的權重值。本申請通過組合模型的方式,避免單個lstm模型的簡單預測方法誤差較大且實用性較低的問題,并通過計算調整組合模型的權重值,進一步提高預測的準確性。本申請能夠提高對于股票趨勢預測的準確度,有效地減小誤差,在一定程度上把握比如多方力量影響下的股票走勢。附圖說明圖1為一實施例中基于lstm的股票趨勢預測方法的流程示意圖;圖2為一實施例中智能終端的模塊框圖。具體實施方式請參閱圖1,圖1為一實施例中基于lstm的股票趨勢預測方法的流程示意圖。在圖1所示實施例中,本實施例的所述基于lstm的股票趨勢預測方法包括但不限于如下步驟。s100、獲取目標股票的歷史數據。在s100中,所述獲取目標股票的歷史數據,本實施例具體可以包括:獲取目標股票、目標股票的同一板塊、所在大盤、其他相關股票、和/或房價等相關領域數據進行融合,以綜合得到所述目標股票的歷史數據。進一步而言,所述以綜合得到所述目標股票的歷史數據,在本實施例中可以包括如下過程:根據目標股票的數據分布特點,使用接受-拒絕采樣方法,選取分布相似的目標股票的同一板塊、所在大盤、其他相關股票、和/或房價等相關領域數據,與目標股票的數據一并構成原始的所述歷史數據。不難看出,針對現有實際情況中,股票歷史交易數據過少的問題,將股票所在大盤的歷史數據,以及同一板塊股票的歷史交易數據等等,作為股票相關歷史數據,可以有效地解決存在的歷史數據的數據量過少的問題。s101、將所述歷史數據進行數據清洗、歸一化。s102、將清洗歸一化后的歷史數據按照時間劃分為訓練數據集與測試數據集。需要說明的是,所述將清洗歸一化后的歷史數據按照時間劃分為訓練數據集與測試數據集,在本實施例可以具體包括:將所述歷史數據中時間位于指定時刻之前的早期數據劃分為訓練數據集,將所述歷史數據中時間位于指定時刻之后的晚期數據劃分為測試數據集。s103、對所述訓練數據集的訓練數據進行離線模型訓練,以分別訓練長短期記憶神經網絡lstm的多個神經網絡模型。值得注意的是,在s103對所述訓練數據集的訓練數據進行離線模型訓練之前,還可以包括:使用訓練數據集的訓練數據生成不同跨度的時間序列數據;其中,對于每個時間跨度(t0,t1,t2,...tn),使用(t0,t1,t2,...tn-1)作為輸入值,使用tn-1與tn之間的差異值,將其進行離散化后,轉換為獨熱碼數據作為監督值(validation)。其中,s103中對所述訓練數據集的訓練數據進行離線模型訓練,可以對應包括:使用不同跨度的時間序列數據中的每份時間序列數據分別訓練lstm的多個神經網絡模型。需要說明的是,本實施例的組合模型可以在spark(分布式內存計算)平臺上的分布式訓練方式。在s103中,所述對所述訓練數據集的訓練數據進行離線模型訓練,本實施例具體可以包括:對所述訓練數據集的訓練數據采用基于內存計算的分布式訓練方法進行訓練,其中,將訓練數據分發到各個節點上并將神經網絡模型的初始模型參數廣播給各個節點,每個節點根據當前的模型參數與一定規模的訓練數據,獲得當前梯度與模型參數更新量,通過匯總各個節點反饋的模型參數更新量來更新模型參數,并將更新后的模型參數廣播給各個節點,依此迭代反復,以根據要求完成單個lstm神經網絡模型的訓練。不難看出,本實施例針對lstm模型用于回歸問題上精度低問題,通過離散化手段將股票趨勢預測回歸問題轉換為分類問題,可以有效地提高預測精度。此外,本實施例的基于內存計算的分布式訓練方法進行訓練,可以有效地加快訓練的速度。s104、獲取訓練數據對于訓練后的多個神經網絡模型輸出的預測值列表,將所述預測值列表與實際的股票趨勢值進行比較,計算得到多個神經網絡模型作為組合模型時所占的權重值。在s104中,所述計算得到多個神經網絡模型作為組合模型時所占的權重值,本實施例具體可以包括:通過多個時段的訓練數據,使用線性回歸的方法,得到各個lstm神經網絡模型在最終的組合模型輸出中的權重值。s105、利用測試數據集的測試數據對組合模型中的多個神經網絡模型評估預測效果,根據預測效果調整所述多個神經網絡模型作為組合模型時所占的權重值。不難看出,本實施例針對單個lstm出現的預測精確度不高的問題,提出模型組合的方法,從而在實際股市中,普通投資者可以預測股市會根據不同時間跨度的股市信息分別判斷,最終綜合考量,從而得出對于股市走勢的較好判斷。具體而言,本實施例在具體應用時可以針對股票時間序列數據的特點,使用不同長度的時間窗口,生成序列數據,使用不同的序列數據訓練lstm模型,然后將其組合,使用線性回歸方法確定各個模型的權重,從而提高預測精度。s106、使用滾動時間窗口的方式對未來預定時間段的股票趨勢具體數值進行預測。在s106中,所述使用滾動窗口的方式對未來預定時間段的股票趨勢進行預測,本實施例具體可以包括:將組合模型預測的漲跌幅轉換為被預測時刻的預測數值,再將當前預測出的預測數值,填入下一被預測時刻的時間窗口,并依此交替循環;當獲取到目標股票實際變化趨勢的實際數值時,將預測數值與實際數值對比,并根據對比結果將實際數值作為一組新的訓練數據,代入模型以更新模型參數。需要說明的是,滾動窗口的方式可以為逐次單個時間窗口滾動循環,也可以是多組時間窗口一并滾動循環,在此不作限定。在本實施例中,監督值也就是目標值(target),在本
技術領域:
中為涉及機器學習的監督學習概念,在有監督學習中,本申請計算過程中的算法通過預測數值與監督值之間的差值計算損失(loss),然后根據損失更新模型參數,迭代反復,實現機器學習中的訓練過程,最終使得預測數值與監督值相同。本申請通過組合模型的方式,避免單個lstm模型的簡單預測方法誤差較大且實用性較低的問題,并通過計算調整組合模型的權重值,進一步提高預測的準確性。本申請能夠提高對于股票趨勢預測的準確度,有效地減小誤差,在一定程度上把握比如多方力量影響下的股票走勢。舉例而言,本申請可以包括下述的具體應用例中,其中,本申請的具體應用例不應用來限制本申請的范圍。應用例:(1)首先獲取目標股票的歷史數據,包括但不限于同一板塊、所在大盤、以及其他相關股票的數據等等,隨后根據目標股票的數據分布特點,使用接受-拒絕采樣方法,選取分布相似的其他相關股票數據,與目標股票歷史數據一起構成綜合的歷史數據;(2)將歷史數據進行數據清洗、歸一化,然后將清洗后的歷史數據按照時間劃分為訓練數據集與測試數據集,比如較為早期的數據被劃分為訓練數據集,較為晚期的數據被劃分為測試數據集。使用訓練數據集的數據生成不同跨度的時間序列數據x1,x2,...xn,其中時間跨度(1<x1<x2,...<xn)。對于每個時間跨度(t0,t1,t2,...tn),使用(t0,t1,t2,...tn-1)作為輸入值x,使用tn-1與tn之間的差異值,將其依照表1.1離散化后,轉換為獨熱碼數據作為監督值y。在本實施例中,下列表1.1的劃分是根據大量股票歷史交易數據匯總而得,依照其劃分可使得落在各個范圍內點的數目大致相等:表1.1漲跌幅與獨熱碼對應表漲跌幅s對應獨熱碼s≥5%00000000015%>s≥2%00000000102%>s≥1%00000001001%>s≥0.5%00000010000.5%>s≥000000100000>s≥-0.5%0000100000-0.5%>s≥-1%0001000000-1%>s≥-2%0010000000-2%>s≥-5%0100000000-5%>s1000000000(3)在訓練數據生成好后,進行離線模型的訓練,使用訓練數據集生成的不同跨度的時間序列數據x1,x2,...xn,對于每份時間序列數據分別訓練lstm神經網絡模型m1,m2,...mn。(4)鑒于深度學習訓練速度比較慢,而本實施例需要訓練多個模型,因此本實施例基于內存計算的分布式訓練方法,首先將數據分發到各個節點上,隨后將初始模型參數廣播給各個節點,每個節點根據當前的模型參數與一定規模(onebatch)的訓練數據,獲得當前梯度與模型參數更新量,然后通過匯總各個節點反饋的更新量來更新模型參數,并再將更新后的模型參數廣播出去,這樣迭代反復,最終根據要求完成單個lstm神經網絡模型的訓練過程。(5)在訓練數據集中隨機抽取若干段時間,對于每個訓練好的lstm神經網絡模型mn,輸出其對于該段時間(例如:t0時段)的預測值得到各個模型的預測值列表再以真實的股票趨勢值y0作為參照,得到對于t0時段的訓練數據通過多個時段的訓練數據,使用線性回歸的方法,得到各個lstm神經網絡模型在最終的組合模型輸出中的權重值。(6)對于訓練好的組合模型,使用測試數據集評估其預測效果,并根據評估結果調節組合模型的各項超參數。(7)在實際預測過程中借助組合模型,使用滾動窗口的方式實現對于未來一段時間股票走勢的預測,比如:將組合模型預測的漲跌幅轉換為被預測日的收盤價等信息的具體數值,再將當前預測出的具體數值,填入下一時刻的時間窗口,這樣交替循環,可以在保證精度的情況下,實現對于未來一段時間內股票走勢的預測。(8)當獲取到實際變化趨勢數據時,將預測結果與實際結果對比,同時作為一組新的訓練數據,代入模型,更新模型參數。本申請使用level1的股票歷史交易數據進行模擬實驗,其對于股票走勢的預測較為準確,總體表現平穩,能夠在一定程度上把握在多方力量影響下的股票走勢。與現有技術相比,本申請具有更高的準確度與魯棒性。請參閱圖2,本申請還提供一種智能終端20,所述智能終端包括存儲設備21和處理器22,所述處理器22用于讀取并執行存儲設備21中的程序數據,可實現前面任一實施例所述的基于長短期記憶神經網絡的股票趨勢預測方法。需要說明的是,智能終端20可以為手機、平板電腦或臺式電腦,也可以為服務器。此外,本實施例的存儲設備21可以為外接的,也可以為設置于智能終端20內的,在此不作限定。上述基于lstm的股票趨勢預測方法和智能終端,通過將歷史數據按照時間劃分為訓練數據集與測試數據集,對所述訓練數據集的訓練數據進行離線模型訓練,以分別訓練lstm的多個神經網絡模型,接著,獲取訓練數據對于訓練后的多個神經網絡模型輸出的預測值列表,并將所述預測值列表與實際的股票趨勢值進行比較,以計算得到多個神經網絡模型作為組合模型時所占的權重值,最終,利用測試數據集的測試數據對組合模型中的多個神經網絡模型評估預測效果,根據預測效果調整所述多個神經網絡模型作為組合模型時所占的權重值。本申請通過組合模型的方式,避免單個lstm模型的簡單預測方法誤差較大且實用性較低的問題,并通過計算調整組合模型的權重值,進一步提高預測的準確性。本申請能夠提高對于股票趨勢預測的準確度,有效地減小誤差,在一定程度上把握比如多方力量影響下的股票走勢。在本申請所提供的幾個實施例中,應該理解到,以上所描述的實施例僅僅是示意性的,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如一些特征可以忽略,或不執行。本申請的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(processor)執行本申請各個實施方式所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質。以上所述僅為本申請的實施例,并非因此限制本申請的專利范圍,凡是利用本申請說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的
技術領域:
,均同理包括在本申請的專利保護范圍內。當前第1頁12