MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测
MATLAB-基于長短期記憶網(wǎng)絡(luò)(LSTM)的SP500的股票價格預(yù)測 股價預(yù)測 matlab實戰(zhàn) 數(shù)據(jù)分析 數(shù)據(jù)可視化 時序數(shù)據(jù)預(yù)測 變種RNN 股票預(yù)測
摘要
近些年,隨著計算機技術(shù)的不斷發(fā)展,神經(jīng)網(wǎng)絡(luò)在預(yù)測方面的應(yīng)用愈加廣泛,尤其是長短期記憶人工神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)在各領(lǐng)域、各學(xué)科都有應(yīng)用。它是一種時間循環(huán)神經(jīng)網(wǎng)絡(luò),是為了解決一般的RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))存在的長期依賴問題而專門設(shè)計出來的,非常適合處理長周期時間序列預(yù)測問題,并且預(yù)測速度快,準確度高。因此LSTM預(yù)測方法被廣泛應(yīng)用在天氣預(yù)報、股票預(yù)測、行為預(yù)測等眾多領(lǐng)域?;谶@些優(yōu)點,本文采用LSTM建立預(yù)測模型,根據(jù)美國標準普爾500股票指數(shù)的歷史收盤價來預(yù)測未來收盤價的變化趨勢。
關(guān)鍵詞:LSTM長短期記憶人工神經(jīng)網(wǎng)絡(luò),時間序列分析,股票預(yù)測
文章目錄
- 摘要
- 第一章 前言
- 1.1 研究背景
- 1.2 研究現(xiàn)狀
- 1.3 研究意義
- 第二章 基本模型論述
- 2.1 LSTM模型的理論概述
- 2.2 LSTM的三個主要結(jié)構(gòu)
- 2.2.1 遺忘門
- 2.2.2 輸入門
- 2.2.3 輸出門
- 2.3 改進模型
- 第三章 數(shù)據(jù)處理
- 3.1 數(shù)據(jù)讀取與可視化展示
- 3.2 數(shù)據(jù)預(yù)處理
- 3.2.1 數(shù)據(jù)分區(qū)
- 3.2.2 標準化數(shù)據(jù)
- 3.2.3 準備預(yù)測變量以及響應(yīng)變量
- 3.3 訓(xùn)練模型
- 3.3.1 定義 LSTM 網(wǎng)絡(luò)結(jié)構(gòu)以及訓(xùn)練選項
- 3.3.2 訓(xùn)練LSTM網(wǎng)絡(luò)
- 3.3.3 對檢驗數(shù)據(jù)集進行標準化處理
- 3.4 模型預(yù)測
- 3.4.1 預(yù)測將來的時間步
- 3.4.2 反標準化
- 3.4.3 計算誤差指標
- 3.4.4 對檢驗數(shù)據(jù)進行可視化展示
- 3.4.5 標準化預(yù)測數(shù)據(jù)
- 3.4.6 預(yù)測將來的時間步
- 3.4.7 反標準化預(yù)測數(shù)據(jù)并獲取預(yù)測數(shù)據(jù)的真實值
- 3.4.8 對預(yù)測數(shù)據(jù)進行可視化展示
- 3.5 構(gòu)建預(yù)測誤差表
- 第四章 結(jié)論
- 參考文獻
- 代碼附錄
第一章 前言
1.1 研究背景
股票市場具有高收益與高風險并存的特性,預(yù)測股市走勢一直被普通股民和投資機構(gòu)所關(guān)注。股票市場是一個很復(fù)雜的動態(tài)系統(tǒng),受多方面因素的影響,例如國家金融政策的調(diào)整、公司內(nèi)部結(jié)構(gòu)的調(diào)整以及媒體輿論的渲染。針對股票預(yù)測,人們在長期實踐和研究的基礎(chǔ)上總結(jié)出一套股票預(yù)測方法,并進行了基本的統(tǒng)計分析,但這種傳統(tǒng)的股票預(yù)測方法很難準確地揭示股票的變化規(guī)律。金融領(lǐng)域一直是機器學(xué)習算法應(yīng)用較為活躍的領(lǐng)域,由于新的算法可能會給金融領(lǐng)域帶來顯著的經(jīng)濟利益,在人工智能和機器學(xué)習不斷發(fā)展的背景下,金融領(lǐng)域的機器學(xué)習以及深度學(xué)習應(yīng)用也得到了人們的關(guān)注。所以本文使用長短期記憶人工神經(jīng)網(wǎng)絡(luò)(LSTM),一種在時間序列分析中有較好效果的深度學(xué)習模型,對美國標準普爾500股票指數(shù)的歷史數(shù)據(jù)進行分析以及預(yù)測,試圖探尋股票趨勢之間的變化規(guī)律,并對股票市場的預(yù)測效果進行探索,幫助股民以及投資機構(gòu)能更好地預(yù)測股市的走勢。
1.2 研究現(xiàn)狀
隨著股票市場壯大,時間序列分析相應(yīng)迎來崛起,時間序列的基本思想是利用序列變量與時間的關(guān)系建立統(tǒng)計模型來做預(yù)測。迄今為止,時間序列方法成果頗豐,相應(yīng)誕生ARIMA差分整合移動自回歸模型算法、滑動平均、指數(shù)平滑法、簡單移動平均法、加權(quán)移動平均法、自回歸滑動平均、廣義自回歸條件異方差以及蒙特卡洛模擬等時間序列模型。由于股票數(shù)據(jù)這種金融時間序列對象受到多種因素的影響,往往是非平穩(wěn)的、非線性的以及高噪聲的,不同于以往時間序列方法只涉及時間這個單方面影響因素,所以傳統(tǒng)時間序列方法往往不適合股票數(shù)據(jù),預(yù)測性能不夠理想。而隨著互聯(lián)網(wǎng)與計算機技術(shù)的突破,數(shù)據(jù)存儲技術(shù)的發(fā)展,迎來大數(shù)據(jù)時代,人們從電腦端和手機端不斷地接觸到大量的數(shù)據(jù)以及信息,對于龐大的數(shù)據(jù),如何從中獲得有用且人類想要的信息變?yōu)檠芯恐攸c。由于股票市場的時效性,每天大批量數(shù)據(jù)的產(chǎn)生,迄今為止,股票市場已經(jīng)累積了足量的歷史數(shù)據(jù),所以我們可以很好地利用以往的歷史數(shù)據(jù),通過分析這些數(shù)據(jù),探尋其中的股票走勢的規(guī)律 ,但是股票的價格受到大量因素的影響,這使得股價的預(yù)測不是那么容易,但是,隨著機器學(xué)習技術(shù)的發(fā)展,使得從海量信息中挖掘出來對股票預(yù)測極其重要的信息有了一定的可能性,所以股票預(yù)測這項工作依然是具有極高的價值和意義的。
1.3 研究意義
在股票買賣過程中,如果建立了金融預(yù)測模型,我們將歷史數(shù)據(jù)灌入,學(xué)習到參數(shù),從而對未來的股票價格進行預(yù)測。假如模型的預(yù)測價格高于當天的收盤價格,即模型告訴我們未來股票價格可能出現(xiàn)上漲,則我們可以繼續(xù)持倉這只股票以期獲得后續(xù)更高的投資收益;另外,情況相反時,我們可以根據(jù)模型的建議采取相反的舉措與動作。所以建立一個準確且高效的股票預(yù)測模型對于投資者更好的收益顯得非常有意義。當然,找到這種股票價格上漲下跌趨勢的規(guī)律對于國家宏觀調(diào)控和企業(yè)的經(jīng)營管理也是有很高的現(xiàn)實價值的。股票預(yù)測研究不僅僅聚焦在技術(shù)上,技術(shù)上的突破固然重要,但是在數(shù)據(jù)的處理以及特征工程上的精益求精上往往能給股票預(yù)測模型精度帶來相當明顯的提升。所以說股票預(yù)測這項工作依然是具有極高的價值和意義的,股票市場的價格波動研究不僅有重要的學(xué)術(shù)意義,而且有重要的實際意義。這能幫助我們更好的理解和把握股票市場的運行規(guī)律,以及探尋其對真實經(jīng)濟的影響機制與影響程度,能幫助我們在股票價格劇烈波動情況下選擇并實施有效的貨幣政策,這有助于減輕和消除來自股票市場的不穩(wěn)定因素,從而進一步提高各國宏觀經(jīng)濟的運行質(zhì)量。
第二章 基本模型論述
2.1 LSTM模型的理論概述
長短期記憶神經(jīng)網(wǎng)絡(luò)(long shortterm memory networks,LSTM)是一種時間遞歸神經(jīng)網(wǎng)絡(luò),是循環(huán)神經(jīng)網(wǎng)絡(luò)的一種變體,適合處理和預(yù)測時間序列中間隔和延遲相對較長的重要事件,這一技術(shù)特征與股票預(yù)測問題有著很高的契合度,將普通循環(huán)網(wǎng)絡(luò)中的隱藏節(jié)點設(shè)計為自循環(huán)形式,記憶單元維持一個誤差流,進而可以記憶長時期的有效信息,避免梯度爆炸和梯度消失。LSTM 在文本預(yù)測、情感分析和股票預(yù)測等領(lǐng)域都有著非常優(yōu)異的表現(xiàn),結(jié)合股票特性將基礎(chǔ)數(shù)據(jù)轉(zhuǎn)換為相關(guān)的技術(shù)指標。它還改善了RNN中存在的長期依賴問題;LSTM的表現(xiàn)通常比時間遞歸神經(jīng)網(wǎng)絡(luò)及隱馬爾科夫模型(HMM)更好;作為非線性模型,LSTM可作為復(fù)雜的非線性單元用于構(gòu)造更大型深度神經(jīng)網(wǎng)絡(luò)。但是仍然存在缺陷,就是RNN的梯度問題在LSTM及其變種里面得到了一定程度的解決,但還是不夠。它可以處理100個量級的序列,而對于1000個量級,或者更長的序列則依然會顯得很棘手;另一個缺點是每一個LSTM的cell里面都意味著有4個全連接層(MLP),如果LSTM的時間跨度很大,并且網(wǎng)絡(luò)又很深,這個計算量會很大且很耗時。
2.2 LSTM的三個主要結(jié)構(gòu)
2.2.1 遺忘門
在我們 LSTM 中的第一步是決定我們會從細胞狀態(tài)中丟棄什么信息。這個決定通過一個稱為遺忘門層完成
2.2.2 輸入門
輸入門是決定讓多少新的信息加入到cell狀態(tài)中來。實現(xiàn)這個需要包括兩個 步驟:首先,需要sigmoid層決定哪些信息需要更新;tanh 層生成一個向量,也就是備選的用來更新的內(nèi)容。在下一步,我們把這兩部分聯(lián)合起來,對cell的狀態(tài)進行一個更新。
2.2.3 輸出門
最終,我們需要確定輸出什么值。這個輸出將會基于我們的細胞狀態(tài),但是也是一個過濾后的版本。首先,sigmoid層來確定細胞狀態(tài)的哪個部分將被輸出。接著,細胞通過 tanh 進行處理狀態(tài)并將它和sigmoid層的輸出相乘,最終會輸出我們確定輸出的那部分內(nèi)容。
2.3 改進模型
LSTM模型有非常強大的功能,本文只是使用了相對簡單的單步單特征的預(yù)測,更深入研究的話可以發(fā)現(xiàn),LSTM還可以進行多步單特征,單步多特征,多步多特征等更強大的預(yù)測工作。除此之外,模型進行改進的地方還可以從模型的網(wǎng)絡(luò)結(jié)構(gòu),訓(xùn)練模型的選項,網(wǎng)絡(luò)層的激活函數(shù)等進行調(diào)整改進。
第三章 數(shù)據(jù)處理
3.1 數(shù)據(jù)讀取與可視化展示
首先從包含 2010 年 1月1日至 2021 年 12 月30日標準普爾 500 股票指數(shù)的開盤價、最高價、最低價、收盤價的美國標準普爾500指數(shù)歷史數(shù)據(jù).xls的excel文件根據(jù)時間拆分成2021年6月1日之前的訓(xùn)練數(shù)據(jù)TrainData.xls,2021年6月1日至12月30日的檢驗數(shù)據(jù)InspectData.xls,以及2022年1月到3月30日的預(yù)測數(shù)據(jù)TestData.xls。數(shù)據(jù)格式大致如圖所示:
將三個excel文件的NumData數(shù)值型數(shù)據(jù)的第一列的所有元素作為收盤價的數(shù)據(jù),把TestData文本型數(shù)據(jù)的第一列的日期數(shù)據(jù)轉(zhuǎn)換成日期類型數(shù)據(jù),為了后續(xù)讀取數(shù)據(jù)的方便,將日期以及收盤價保存到各自的mat文件中。
然后通過讀取mat文件的數(shù)據(jù),以日期作為橫軸數(shù)據(jù),收盤價作為縱軸數(shù)據(jù)對三個文件的整體數(shù)據(jù)做一個大致的可視化分析。訓(xùn)練數(shù)據(jù),檢驗數(shù)據(jù),預(yù)測數(shù)據(jù)的運行結(jié)果分別如下:
從運行結(jié)果來看,SP500的收盤價趨勢除了中間幾次斷崖式暴跌之外,大致上是呈現(xiàn)上漲的趨勢,具體放大細看的話不難發(fā)現(xiàn),股票的收盤價整體上呈現(xiàn)一個波動的上漲趨勢。
3.2 數(shù)據(jù)預(yù)處理
3.2.1 數(shù)據(jù)分區(qū)
緊接著,在開始預(yù)測之前,我們需要對數(shù)據(jù)進行一定的處理,首先需要把SP500的收盤價數(shù)據(jù)轉(zhuǎn)換成(1, numel(SP500)) 形狀的行數(shù)據(jù),然后加載mat文件,用不同的變量保存訓(xùn)練,檢驗,預(yù)測的數(shù)據(jù)。
3.2.2 標準化數(shù)據(jù)
為了獲得較好的擬合效果并防止訓(xùn)練發(fā)散,首先通過mean方法預(yù)計std方法分別獲取訓(xùn)練數(shù)據(jù)的均值以及標準差,將訓(xùn)練數(shù)據(jù)通過(數(shù)據(jù)-均值)/標準差的形式標準化為具有零均值和單位方差的標準化訓(xùn)練數(shù)據(jù)。在預(yù)測時,我們將使用與訓(xùn)練數(shù)據(jù)相同的參數(shù)來標準化測試數(shù)據(jù)。
3.2.3 準備預(yù)測變量以及響應(yīng)變量
要預(yù)測序列在將來時間步的值,需要將響應(yīng)變量指定為將值移位一個steptime時間步的訓(xùn)練序列。也就是說,在輸入序列的每個時間步,LSTM 網(wǎng)絡(luò)都學(xué)習預(yù)測下一個時間步的值。預(yù)測變量是沒有最終時間步的訓(xùn)練序列。
3.3 訓(xùn)練模型
3.3.1 定義 LSTM 網(wǎng)絡(luò)結(jié)構(gòu)以及訓(xùn)練選項
通過matlab提供的構(gòu)建深度學(xué)習網(wǎng)絡(luò)的設(shè)計器,創(chuàng)建如圖所示的LSTM 回歸網(wǎng)絡(luò)。
需要注意的是,我們需要手動修改一下其中網(wǎng)絡(luò)層的一些參數(shù),由于我們是單步預(yù)測,所以序列輸入層的輸入大小應(yīng)該是1,將LSTM網(wǎng)絡(luò)設(shè)置成250個神經(jīng)元,將狀態(tài)激活函數(shù)設(shè)置為tanh,將激活門函數(shù)設(shè)置為sigmoid,將輸出模式設(shè)置成sequence。將遺忘層的遺忘率設(shè)置成45%,表示將有45%的概率將神經(jīng)元暫時從網(wǎng)絡(luò)中丟棄,以此來防止過擬合的情況發(fā)生。然后再設(shè)置一個全連接層,最后以回歸輸出的形式將數(shù)據(jù)進行輸出。
緊接著,我們需要指定訓(xùn)練的選項,這里將求解器設(shè)置為 ‘a(chǎn)dam’ 并進行 350 輪訓(xùn)練。為防止梯度爆炸,將梯度閾值設(shè)置為 1。指定初始學(xué)習率為 0. 002,為防止網(wǎng)絡(luò)震蕩不收斂,在 150 輪訓(xùn)練后通過乘以因子 0.2 來降低學(xué)習率。
3.3.2 訓(xùn)練LSTM網(wǎng)絡(luò)
我們需要使用 trainNetwork 以指定的訓(xùn)練選項訓(xùn)練 LSTM 網(wǎng)絡(luò),并傳入預(yù)測變量以及響應(yīng)變量。
訓(xùn)練的過程如圖所示,可以看到RMSE均方根誤差與Loss損失函數(shù)在剛開始下降的比較快,到后來Loss損失函數(shù)就趨近于0,RMSE均方根誤差就趨于0.1,可以從這兩個指標看出訓(xùn)練的效果還是不錯的
3.3.3 對檢驗數(shù)據(jù)集進行標準化處理
我們將使用訓(xùn)練數(shù)據(jù)的均值以及標準差對驗證數(shù)據(jù)進行Z-Score標準化處理,然后再取其(1,end-1)的數(shù)據(jù)作為預(yù)測的輸入數(shù)據(jù)
3.4 模型預(yù)測
3.4.1 預(yù)測將來的時間步
首先我們需要初始化網(wǎng)絡(luò)狀態(tài),并先對訓(xùn)練數(shù)據(jù) XTrain 進行預(yù)測,預(yù)測將來多個時間步的值,我們需要使用 predictAndUpdateState 函數(shù)一次預(yù)測一個時間步,并在每次預(yù)測時更新網(wǎng)絡(luò)狀態(tài),對于每次預(yù)測,我們使用前一次的真實值作為函數(shù)的輸入。接下來,使用訓(xùn)練響應(yīng)的最后一個時間步進行第一次預(yù)測。循環(huán)其余預(yù)測并將前一次預(yù)測輸入到 predictAndUpdateState。由于我們的是單步預(yù)測,所以我們將使用CPU的環(huán)境進行預(yù)測,并將 predictAndUpdateState 的ExecutionEnvironment選項設(shè)置為 cpu
3.4.2 反標準化
由于之前傳入的數(shù)據(jù)是使用了標準化處理的,所以輸出的預(yù)測值也是經(jīng)過標準化后的數(shù)據(jù),所以最終我們需要將預(yù)測的結(jié)果值反標準化,最終轉(zhuǎn)換為實際的預(yù)測值。
3.4.3 計算誤差指標
我們需要根據(jù)去標準化的預(yù)測值去計算誤差指標。對于 RMSE均方根誤差,首先我們需要先獲取到預(yù)測樣本的真實值,然后對樣本點的測量值和真實值求差,求平方后做平均運算,最后取根植,獲取到RMSE均方根誤差。對于MAE平均絕對誤差,我們需要把預(yù)測值與真實值做差,然后取絕對值后做平均處理,最后獲取到MAE平均絕對誤差。對于MAPE平均絕對百分比誤差,我們需要把預(yù)測值與真實值做差,結(jié)果除以真實值,取絕對值后做平均處理,最后獲取到MAPE平均絕對百分比誤差。
計算所得的RMSE均方根誤差結(jié)果如圖所示:
計算所得的MAE平均絕對誤差結(jié)果如圖所示:
計算所得的MAPE平均絕對百分比誤差結(jié)果如圖所示:
3.4.4 對檢驗數(shù)據(jù)進行可視化展示
對檢驗數(shù)據(jù)的可視化展示,由于訓(xùn)練數(shù)據(jù)和檢驗數(shù)據(jù)是相連的,所以首先將訓(xùn)練數(shù)據(jù)和檢驗數(shù)據(jù)的預(yù)測值聯(lián)合展示。
運行結(jié)果如下:
緊接著,將預(yù)測值與檢驗數(shù)據(jù)進行比較,繪制出如下的比較折線圖和誤差棉棒圖,這里僅把RMSE均方根誤差作為誤差的展示項
運行結(jié)果如下圖所示:
如上的分析以及可視化結(jié)果來看,訓(xùn)練的模型對檢驗數(shù)據(jù)的擬合程度還是相當不錯的,在大致的趨勢上可以看到預(yù)測的效果與實際的效果是接近一致的,從誤差棉棒圖中也可以看出來誤差的范圍大概在(-180,100)之間,所以說整體的擬合效果是不錯的。
3.4.5 標準化預(yù)測數(shù)據(jù)
用檢驗數(shù)據(jù)檢驗了模型擬合效果后,接下來應(yīng)該對預(yù)測數(shù)據(jù)做同樣的標準化處理,然后將標準化過后的數(shù)據(jù),作為輸入數(shù)據(jù)輸入到訓(xùn)練好的模型中進行預(yù)測。
3.4.6 預(yù)測將來的時間步
緊接著就需要根據(jù)XTest預(yù)測下一個時間步的值,每次預(yù)測時都需要更新網(wǎng)絡(luò)狀態(tài),由于數(shù)據(jù)量不大,所以運行環(huán)境選擇cpu即可,最后循環(huán) (預(yù)測數(shù)據(jù)長度-1)次,根據(jù)XTest的數(shù)據(jù),預(yù)測出YTest_pred也就是2-end之間的數(shù)據(jù)
3.4.7 反標準化預(yù)測數(shù)據(jù)并獲取預(yù)測數(shù)據(jù)的真實值
由于之前的輸入數(shù)據(jù)是經(jīng)過標準化的,所以獲得的預(yù)測數(shù)據(jù)也是標準化過后的數(shù)據(jù),所以需要將預(yù)測所得的值進行反標準化處理,轉(zhuǎn)換成實際的預(yù)測值。并獲取好2-end的真實值,以方便后續(xù)的比較處理
3.4.8 對預(yù)測數(shù)據(jù)進行可視化展示
首先需要將訓(xùn)練數(shù)據(jù)和檢驗數(shù)據(jù)拼接起來,繪制第一個圖形,然后在此基礎(chǔ)上,將預(yù)測的值用紅色的折線繪制出來,并定義好橫縱坐標,圖例的顯示設(shè)置。
可視化結(jié)果如圖所示:
緊接著需要將預(yù)測數(shù)據(jù)單獨拿出來與實際數(shù)據(jù)做一個對比,繪制出預(yù)測-實際的折線圖,并繪制二者之間的誤差棉棒圖,這里以RMSE作為表現(xiàn)誤差項的指標。
可視化結(jié)果如圖所示:
通過以上的預(yù)測分析可以看到,預(yù)測值與真實值之間存在一定的誤差,誤差范圍大概在[-200,200]之間,但是大致趨勢上還是吻合的。猜測誤差較大的原因就是這個時間段內(nèi),股市的波動情況太大,導(dǎo)致根據(jù)前向的趨勢預(yù)測后向的數(shù)據(jù)的精度有一定程度的下降,但是從整體上來看我們的預(yù)測效果還是不錯的。
3.5 構(gòu)建預(yù)測誤差表
通過以上的預(yù)測結(jié)果,有表展示:
時間 真實值 模型預(yù)測值 預(yù)測誤差
2022年1月3日 4,796.56 4,796.56 0
2022年1月4日 4,793.54 4792.7681 -0.77193
2022年1月5日 4,700.58 4790.5269 89.94685
2022年1月6日 4,696.05 4756.9443 60.89434
2022年1月7日 4,677.02 4718.5068 41.48684
2022年1月10日 4,670.29 4685.3433 15.05326
2022年1月11日 4,713.07 4664.2129 -48.8571
2022年1月12日 4,726.35 4668.9238 -57.4262
2022年1月13日 4,659.02 4688.3735 29.35354
2022年1月14日 4,662.85 4687.6782 24.82822
2022年1月18日 4,577.34 4677.5229 100.183
2022年1月19日 4,532.76 4639.5654 106.8054
2022年1月20日 4,482.73 4586.6387 103.9087
2022年1月21日 4,397.93 4528.5640 130.634
2022年1月24日 4,410.13 4461.3511 51.22107
2022年1月25日 4,356.45 4415.1621 58.71211
2022年1月26日 4,349.93 4377.7480 27.81805
2022年1月27日 4,326.50 4353.9966 27.49658
2022年1月28日 4,431.85 4336.3853 -95.4647
2022年1月31日 4,515.55 4357.7056 -157.844
2022年2月1日 4,546.54 4415.2383 -131.302
2022年2月2日 4,589.32 4480.5474 -108.773
2022年2月3日 4,477.44 4540.4761 63.03608
2022年2月4日 4,500.54 4544.5249 43.9849
2022年2月7日 4,483.87 4526.2266 42.35656
2022年2月8日 4,521.54 4498.4497 -23.0903
2022年2月9日 4,587.18 4487.8281 -99.3519
2022年2月10日 4,504.06 4510.2500 6.19
2022年2月11日 4,418.64 4517.8618 99.22182
2022年2月14日 4,401.67 4489.9775 88.30754
2022年2月15日 4,471.07 4447.8252 -23.2448
2022年2月16日 4,475.01 4433.0283 -41.9817
2022年2月17日 4,380.26 4438.2500 57.99
2022年2月18日 4,348.87 4423.5049 74.63488
2022年2月22日 4,304.74 4393.5366 88.79662
2022年2月23日 4,225.50 4351.6133 126.1133
2022年2月24日 4,288.70 4293.0605 4.360547
2022年2月25日 4,384.62 4263.9351 -120.685
2022年2月28日 4,373.79 4287.3765 -86.4135
2022年3月1日 4,306.26 4326.0654 19.80543
2022年3月2日 4,386.54 4338.9795 -47.5605
2022年3月3日 4,363.49 4357.2905 -6.19947
2022年3月4日 4,328.87 4364.7124 35.8424
2022年3月7日 4,201.09 4354.0659 152.9759
2022年3月8日 4,170.62 4299.7788 129.1588
2022年3月9日 4,277.88 4232.2261 -45.6539
2022年3月10日 4,259.52 4212.3696 -47.1504
2022年3月11日 4,204.31 4218.1191 13.80914
2022年3月14日 4,173.11 4218.6426 45.53258
2022年3月15日 4,262.45 4206.0918 -56.3582
2022年3月16日 4,357.95 4216.2656 -141.684
2022年3月17日 4,411.67 4262.1948 -149.475
2022年3月18日 4,463.09 4327.2256 -135.864
2022年3月21日 4,461.18 4396.1255 -65.0545
2022年3月22日 4,511.61 4444.1680 -67.442
2022年3月23日 4,456.23 4481.2764 25.04637
2022年3月24日 4,520.16 4485.1626 -34.9974
2022年3月25日 4,543.04 4491.3242 -51.7158
2022年3月28日 4,575.52 4504.8560 -70.664
2022年3月29日 4,631.60 4528.9009 -102.699
2022年3月30日 4,602.45 4568.1245 -34.3255
第四章 結(jié)論
剛開始對時序數(shù)據(jù)的分析還是一個很懵懂的狀態(tài),然后通過查閱資料,知道了時序分析是以分析時間序列的發(fā)展過程、方向和趨勢,預(yù)測將來時域可能達到的目標的方法。這運用了概率統(tǒng)計中時間序列分析原理和技術(shù),利用時序系統(tǒng)的數(shù)據(jù)相關(guān)性,建立相應(yīng)的數(shù)學(xué)模型,描述系統(tǒng)的時序狀態(tài),以達到預(yù)測未來的效果。而適合股票預(yù)測的方法有很多種,例如移動平均法、季節(jié)系數(shù)法、指數(shù)平滑法、自回歸滑動平均模型(ARIMA)、隨機森林等等,但是在查找資料的過程中發(fā)現(xiàn),長短期記憶網(wǎng)絡(luò)在時序數(shù)據(jù)的分析上有非常好的效果,傳統(tǒng)的RNN在時序數(shù)據(jù)的分析中有較好的效果,之所以會有較好的預(yù)測效果是因為在 t時間點時會將 t-1時間點的隱節(jié)點作為當前時間點的輸入,這樣有效的原因是因為之前時間點的信息也用于計算當前時間點的內(nèi)容,但是傳統(tǒng)的RNN卻存在長期依賴以及梯度消失或爆炸的問題,而LSTM的出現(xiàn)正是對RNN的一種補充,他能很好地利用”門機制”來控制特征的流通和損失,這使得它能解決RNN存在的問題并保留其優(yōu)秀的時序分析的能力。經(jīng)過先從python股票預(yù)測的LSTM的實現(xiàn),再到matlab的編程實現(xiàn),其中對LSTM的實現(xiàn)方法以及過程都經(jīng)過了深入的理解,最終實現(xiàn)了基于LSTM模型的股票預(yù)測。
但是依舊存在一些的不足之處,比如在模型的優(yōu)化上就無從下手,由于之前都是學(xué)習計算機視覺相關(guān)的圖片識別類的深度學(xué)習課程,對于這類問題的提高精度和優(yōu)化的方法更為擅長。因為是第一次接觸時序數(shù)據(jù)的分析,所以在優(yōu)化方面難免有些不足。除了影響股票價格的因素眾多導(dǎo)致某一時間段的波動情況比較劇烈以外,模型本身還是有一些不足以及更大的優(yōu)化空間的。所以在今后的學(xué)習中,我會努力學(xué)習并且深入研究深度學(xué)習中的神經(jīng)網(wǎng)絡(luò)在金融,大數(shù)據(jù),統(tǒng)計分析等方面的運用,并且探尋能提高和優(yōu)化算法的方法,以達到能更好、更高效地使用模型進行實際運用和操作的目的。
參考文獻
[1] 張倩倩,林天華,祁旭陽,趙霞,基于機器學(xué)習的股票預(yù)測研究綜述[J]. 河北省科學(xué)院學(xué)報,2020, 37(04):18-19.
[2] 隋金城.基于LSTM神經(jīng)網(wǎng)絡(luò)的股票預(yù)測研究[D].青島科技大學(xué),2020.
[3] 周陽.基于LSTM模型的上證綜指價格預(yù)測研究[D].南京郵電大學(xué),2019.
代碼附錄
1、數(shù)據(jù)預(yù)處理代碼
2、數(shù)據(jù)可視化代碼
3、加載數(shù)據(jù)集代碼
4、訓(xùn)練數(shù)據(jù),檢驗數(shù)據(jù),預(yù)測數(shù)據(jù)標準化代碼
5、定義LSTM回歸網(wǎng)絡(luò)與訓(xùn)練選項
6、初始化網(wǎng)絡(luò),對檢驗數(shù)據(jù)進行預(yù)測
7、計算RMSE,MAE,MAPE三大誤差指標
8、可視化預(yù)測結(jié)果及對比代碼
9、對預(yù)測數(shù)據(jù)進行預(yù)測
10、繪制預(yù)測數(shù)據(jù)的預(yù)測結(jié)果
總結(jié)
以上是生活随笔為你收集整理的MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软开源 纸牌游戏代码_5个适用于Lin
- 下一篇: 人工智能-用matlab实现数字识别