LSTM 股票市場預測入門

相信很多人都會對股票市場數據的起起伏伏感到好奇,特別想知道他們未來的趨勢會是怎樣,最近看到一篇用 LSTM 做初步的股票市場預測的文章,在這裡分享給大家。

1. LSTM 神經元

首先我們來認識一下 LSTM 神經元:

長期困擾傳統神經網絡結構的一個基本問題是解釋“信息”和“上下文”相互依賴的輸入序列。這裡的“信息”可以是句子中先前的單詞以允許上下文預測下一個單詞可能是什麼,或者它可以是序列的時間信息以允許上下文做基於時間的序列元素預測。

簡而言之,傳統的神經網絡每次都會輸入獨立的數據向量,並且沒有內存概念來幫助他們處理需要內存的任務。

解決這個問題的早期嘗試是對網絡中的神經元使用簡單的反饋類型方法,其中輸出被反饋到輸入中以提供最後看到的輸入的上下文。 這些被稱為遞歸神經網絡(RNN)。 雖然這些 RNN 在一定程度上起作用,但任何大規模使用 RNN 都會導致消失梯度的問題。這個問題導致 RNN 在大多數現實問題中都不適合,因此,需要找到另一種解決上下文存儲的方法。

這時長期短期記憶(LSTM)神經網絡就派上用場了。 與 RNN 神經元一樣,LSTM 神經元在其管道中存儲上下文,以允許解決順序和時間問題,且沒有影響其性能的消失梯度問題。

對於上下文,下面是 LSTM 神經元的典型內部工作圖。 它由若干層和逐點操作組成,這些操作充當數據輸入、輸出和遺忘的門,為 LSTM ****單元狀態提供信息。 這種單元狀態是保持網絡和輸入的長期記憶和上下文的原因。

LSTM 股票市場預測入門

2. 幾種預測方法

第一種是逐點預測,即我們每次僅預測一個點,將此點畫出來,然後使用剛預測的點的真實數據填補到下一個窗口數據再預測下一個點。

該方法做正弦波預測會呈現出這樣的圖像:

LSTM 股票市場預測入門

第二種是完整序列預測,我們只用訓練數據的第一部分初始化一次訓練窗口。然後模型預測下一個點,然後我們像逐點預測一樣移動窗口。不同之處在於我們使用先前預測中預測的數據來預測。 在第二步中,這意味著只有一個數據點(最後一個點)來自先前的預測。 在第三個點的預測中,最後兩個數據點將來自先前的預測,依此類推。 經過 50 次預測後,我們的模型將完全根據自己先前的預測進行預測。 這使我們可以使用該模型提前預測許多未來的時間點,但由於它預測的預測可以反過來基於預測,這將增加我們預測的錯誤率。隨著我們對未來越來越多的預測,誤差幅度會隨著先前預測中的誤差在用於未來預測時被越來越多地放大而增加。

該方法做正弦波預測會呈現這樣的圖像:

LSTM 股票市場預測入門

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

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

我們可以用逐點估計精確預測幾百個正弦波步長。 但我們並不能將此辦法應用於股票市場,因為現實世界,並不是那麼簡單。

與正弦波不同,股票市場時間序列不是可以映射的任何特定靜態函數。 描述股票市場時間序列運動的最佳屬性是隨機遊走。 作為隨機過程,真正的隨機遊走沒有可預測的模式,因此嘗試對其進行建模將毫無意義。 幸運的是,許多方面都在持續爭論說

股票市場不是一個純粹的隨機過程,這使我們能夠從理論上說明股票市場時間序列可能具有某種隱藏模式。 正是由於這些潛在的隱藏模式,LSTM 深度網絡在股票市場的研究才有了意義。

股票市場的數據又涉及到開盤價,最高價,最低價,收盤價以及每日交易量。它是多維的。

如果僅用收盤價作為輸入,做一維的模型預測,分別用上面的三種預測方法,我們將得到以下結果:

逐點預測:

LSTM 股票市場預測入門

序列預測:

LSTM 股票市場預測入門

多序列預測:

LSTM 股票市場預測入門

從上面的對比結果可以看出:用逐點預測運行數據可以非常接近地匹配真實數據。 但這有點欺騙性。 因為預測線由單個的預測點組成,這些預測點基於的整個先前歷史窗口都是真實數據。 因此,網絡除了知道每個下一個點不會離最後一點太遠,並不需要太瞭解時間序列本身。 即使它預測了一個錯誤的點,再下一次預測也將考慮真實的歷史而忽略不正確的預測,然後再次允許發生錯誤。雖然對於下一個價格點的精確預測這可能聽起來並不樂觀,但它確實有一些重要的用途,比如精確預測下一個價格的範圍或應用於異常檢測。

完整序列預測,似乎是對這種類型的時間序列最沒用的預測(至少是使用這些超參數訓練的這個模型)。 我們可以看到預測開始時有輕微波動,其中模型遵循著某種類型的動量,但是很快模型收斂到時間序列的某個均衡值。 對於預測股票價格走勢,這可能看起來並沒有太多價值,但平均迴歸交易者可能會在認為該模型可以找到價格序列的平均值。

多序列預測,

網絡似乎正確地預測了絕大多數時間序列的趨勢(和趨勢幅度)。 雖然不完美,但它確實表明了 LSTM 深度神經網絡在順序和時間序列問題中的有用性。 通過仔細的超參數調整,肯定可以實現更高的準確性。

接下來,我將使用兩個輸入維度來訓練模型: 收盤價和交易量,結果如下:

LSTM 股票市場預測入門

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

4. 總結

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

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

**

博客:www.altumintelligence.com/articles/a/…

視頻資料:www.youtube.com/watch?v=2np…

論文:LSTM,1997 www.bioinf.jku.at/publication…

關於我們


參考文獻:K碼農-http://kmanong.top/kmn/qxw/form/home?top_cate=28


分享到:


相關文章: