LSTM 股票市場預測入門

做者:宋彤彤前端

相信不少人都會對股票市場數據的起起伏伏感到好奇,特別想知道他們將來的趨勢會是怎樣,最近看到一篇用 LSTM 作初步的股票市場預測的文章,在這裏分享給你們。網絡

1. LSTM 神經元

首先咱們來認識一下 LSTM 神經元:
長期困擾傳統神經網絡結構的一個基本問題是解釋「信息」和「上下文」相互依賴的輸入序列。這裏的「信息」能夠是句子中先前的單詞以容許上下文預測下一個單詞多是什麼,或者它能夠是序列的時間信息以容許上下文作基於時間的序列元素預測。
簡而言之,傳統的神經網絡每次都會輸入獨立的數據向量,而且沒有內存概念來幫助他們處理須要內存的任務。
解決這個問題的早期嘗試是對網絡中的神經元使用簡單的反饋類型方法,其中輸出被反饋到輸入中以提供最後看到的輸入的上下文。 這些被稱爲遞歸神經網絡(RNN)。 雖然這些 RNN 在必定程度上起做用,但任何大規模使用 RNN 都會致使消失梯度的問題。這個問題致使 RNN 在大多數現實問題中都不適合,所以,須要找到另外一種解決上下文存儲的方法。
這時長期短時間記憶(LSTM)神經網絡就派上用場了。 與 RNN 神經元同樣,LSTM 神經元在其管道中存儲上下文,以容許解決順序和時間問題,且沒有影響其性能的消失梯度問題。
對於上下文,下面是 LSTM 神經元的典型內部工做圖。 它由若干層和逐點操做組成,這些操做充當數據輸入、輸出和遺忘的門,爲 LSTM ****單元狀態提供信息。 這種單元狀態是保持網絡和輸入的長期記憶和上下文的緣由。
app

lstm_cell.png

2. 幾種預測方法

第一種是逐點預測,即咱們每次僅預測一個點,將此點畫出來,而後使用剛預測的點的真實數據填補到下一個窗口數據再預測下一個點。
該方法作正弦波預測會呈現出這樣的圖像:
機器學習

sinwave_pointbypoint.png

第二種是完整序列預測,咱們只用訓練數據的第一部分初始化一次訓練窗口。而後模型預測下一個點,而後咱們像逐點預測同樣移動窗口。不一樣之處在於咱們使用 先前預測中預測的數據來預測。 在第二步中,這意味着只有一個數據點(最後一個點)來自先前的預測。 在第三個點的預測中,最後兩個數據點未來自先前的預測,依此類推。 通過 50 次預測後,咱們的模型將徹底根據本身先前的預測進行預測。 這使咱們可使用該模型提早預測許多將來的時間點,但因爲它預測的預測能夠反過來基於預測,這將增長咱們預測的錯誤率。隨着咱們對將來愈來愈多的預測,偏差幅度會隨着先前預測中的偏差在用於將來預測時被愈來愈多地放大而增長。
該方法作正弦波預測會呈現這樣的圖像:
sinwave_full_seq.png

第三種是多序列預測,它是完整序列預測的混合,由於它仍然使用真實數據初始化測試窗口,預測下一個點,而後使用該預測點建立一個新窗口。 可是一旦它 到達輸入窗口徹底由過去預測的點組成的狀態,它就會中止,用 真實的數據重置窗口,而後再次啓動該過程。 實質上,這給出了對數據的 多個趨勢線預測,以便可以分析模型可以得到 將來動量趨勢的程度。

3. 不那麼簡單的股票市場數據

咱們能夠用逐點估計精確預測幾百個正弦波步長。 但咱們並不能將此辦法應用於股票市場,由於現實世界,並非那麼簡單。
與正弦波不一樣,股票市場時間序列不是能夠映射的任何特定靜態函數。 描述股票市場時間序列運動的最佳屬性是隨機遊走。 做爲隨機過程,真正的隨機遊走沒有可預測的模式,所以嘗試對其進行建模將毫無心義。 幸運的是,許多方面都在持續爭論說股票市場不是一個純粹的隨機過程,這使咱們可以從理論上說明股票市場時間序列可能具備某種隱藏模式。 正是因爲這些潛在的隱藏模式,LSTM 深度網絡在股票市場的研究纔有了意義。
股票市場的數據又涉及到開盤價,最高價,最低價,收盤價以及每日交易量。它是多維的。
若是僅用收盤價做爲輸入,作一維的模型預測,分別用上面的三種預測方法,咱們將獲得如下結果:
逐點預測:
函數

sp500_pointbypoint.png

序列預測:
sp500_full.png

多序列預測:
sp500_multi.png

從上面的對比結果能夠看出:用 逐點預測運行數據能夠很是接近地匹配真實數據。 但這有點欺騙性。 由於預測線由單個的預測點組成,這些預測點基於的整個先前歷史窗口都是真實數據。 所以,網絡除了知道每一個下一個點不會離最後一點太遠,並不須要太瞭解時間序列自己。 即便它預測了一個錯誤的點,再下一次預測也將考慮真實的歷史而忽略不正確的預測,而後再次容許發生錯誤。雖然對於下一個價格點的精確預測這可能聽起來並不樂觀,但它確實有一些重要的用途,好比精確預測下一個價格的範圍或應用於異常檢測。
完整序列預測,彷佛是對這種類型的時間序列最沒用的預測(至少是使用這些超參數訓練的這個模型)。 咱們能夠看到預測開始時有輕微波動,其中模型遵循着某種類型的動量,可是很快模型收斂到時間序列的某個均衡值。 對於預測股票價格走勢,這可能看起來並無太多價值,但平均迴歸交易者可能會在認爲該模型能夠找到價格序列的平均值。
多序列預測, 網絡彷佛正確地預測了絕大多數時間序列的趨勢(和趨勢幅度)。 雖然不完美,但它確實代表了 LSTM 深度神經網絡在順序和時間序列問題中的有用性。 經過仔細的超參數調整,確定能夠實現更高的準確性。
接下來,我將使用兩個輸入維度來訓練模型: 收盤價和交易量,結果以下:
sp500_multi_2d.png

能夠看到兩個輸入維度可使輸出預測變得更加細化。 預測趨勢線彷佛更準確地預測即將到來的小幅下跌,不只是從一開始的主流趨勢,趨勢線的準確性彷佛也在這種狀況下獲得改善。

4. 總結

目前使用基礎的 LSTM 存在一些侷限性,特別是在使用金融時間序列時,該系列自己具備很難建模的非平穩特性(儘管在使用貝葉斯深度神經網絡方法解決時間序列的非平穩性方面取得了進展)。一樣對於一些應用,還發現基於 Attention 的神經網絡機制的新進展已經超過 LSTM(而且LSTM 與這些基於 Attention 機制相結合已經超出了它們自身)。這裏咱們提供該文章的項目地址和一些參考資料,感興趣的同窗能夠進一步探索。性能

項目源碼地址:https://momodel.cn/explore/5d6b22c5c7e247a961bc8084?type=app
** 學習

5. 參考資料

博客:www.altumintelligence.com/articles/a/…
視頻資料:www.youtube.com/watch?v=2np…
論文:LSTM,1997 www.bioinf.jku.at/publication…測試

關於咱們

Mo(網址:https://momodel.cn)是一個支持 Python 的人工智能在線建模平臺,能幫助你快速開發、訓練並部署模型。大數據


Mo 人工智能俱樂部 是由人工智能在線建模平臺(網址:momodel.cn)的研發與產品團隊發起、致力於下降人工智能開發與使用門檻的俱樂部。團隊具有大數據處理分析、可視化與數據建模經驗,已承擔多領域智能項目,具有從底層到前端的全線設計開發能力。主要研究方向爲大數據管理分析與人工智能技術,並以此來促進數據驅動的科學研究。

目前團隊每兩週(週六)在杭州舉辦線下沙龍,進行機器學習相關論文分享與學術交流。但願能匯聚來自各行各業對人工智能感興趣的朋友,不斷交流共同成長,推進人工智能民主化、應用普及化。人工智能

image.png
相關文章
相關標籤/搜索