最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Python數(shù)據(jù)分析實(shí)戰(zhàn)-基于長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)的SP500的股票價(jià)格預(yù)測(cè) 股價(jià)預(yù)測(cè)

2023-06-23 15:24 作者:無(wú)心同學(xué)1  | 我要投稿

摘要

近些年,隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,神經(jīng)網(wǎng)絡(luò)在預(yù)測(cè)方面的應(yīng)用愈加廣泛,尤其是長(zhǎng)短期記憶人工神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)在各領(lǐng)域、各學(xué)科都有應(yīng)用。它是一種時(shí)間循環(huán)神經(jīng)網(wǎng)絡(luò),是為了解決一般的RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))存在的長(zhǎng)期依賴問題而專門設(shè)計(jì)出來(lái)的,非常適合處理長(zhǎng)周期時(shí)間序列預(yù)測(cè)問題,并且預(yù)測(cè)速度快,準(zhǔn)確度高。因此LSTM預(yù)測(cè)方法被廣泛應(yīng)用在天氣預(yù)報(bào)、股票預(yù)測(cè)、行為預(yù)測(cè)等眾多領(lǐng)域?;谶@些優(yōu)點(diǎn),本文采用LSTM建立預(yù)測(cè)模型,根據(jù)美國(guó)標(biāo)準(zhǔn)普爾500股票指數(shù)的歷史收盤價(jià)來(lái)預(yù)測(cè)未來(lái)收盤價(jià)的變化趨勢(shì)。

關(guān)鍵詞:LSTM長(zhǎng)短期記憶人工神經(jīng)網(wǎng)絡(luò),時(shí)間序列分析,股票預(yù)測(cè)


第一章 前言

1.1 研究背景

????股票市場(chǎng)具有高收益與高風(fēng)險(xiǎn)并存的特性,預(yù)測(cè)股市走勢(shì)一直被普通股民和投資機(jī)構(gòu)所關(guān)注。股票市場(chǎng)是一個(gè)很復(fù)雜的動(dòng)態(tài)系統(tǒng),受多方面因素的影響,例如國(guó)家金融政策的調(diào)整、公司內(nèi)部結(jié)構(gòu)的調(diào)整以及媒體輿論的渲染。針對(duì)股票預(yù)測(cè),人們?cè)陂L(zhǎng)期實(shí)踐和研究的基礎(chǔ)上總結(jié)出一套股票預(yù)測(cè)方法,并進(jìn)行了基本的統(tǒng)計(jì)分析,但這種傳統(tǒng)的股票預(yù)測(cè)方法很難準(zhǔn)確地揭示股票的變化規(guī)律。金融領(lǐng)域一直是機(jī)器學(xué)習(xí)算法應(yīng)用較為活躍的領(lǐng)域,由于新的算法可能會(huì)給金融領(lǐng)域帶來(lái)顯著的經(jīng)濟(jì)利益,在人工智能和機(jī)器學(xué)習(xí)不斷發(fā)展的背景下,金融領(lǐng)域的機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)應(yīng)用也得到了人們的關(guān)注。所以本文使用長(zhǎng)短期記憶人工神經(jīng)網(wǎng)絡(luò)(LSTM),一種在時(shí)間序列分析中有較好效果的深度學(xué)習(xí)模型,對(duì)美國(guó)標(biāo)準(zhǔn)普爾500股票指數(shù)的歷史數(shù)據(jù)進(jìn)行分析以及預(yù)測(cè),試圖探尋股票趨勢(shì)之間的變化規(guī)律,并對(duì)股票市場(chǎng)的預(yù)測(cè)效果進(jìn)行探索,幫助股民以及投資機(jī)構(gòu)能更好地預(yù)測(cè)股市的走勢(shì)。

1.2 研究現(xiàn)狀

????隨著股票市場(chǎng)壯大,時(shí)間序列分析相應(yīng)迎來(lái)崛起,時(shí)間序列的基本思想是利用序列變量與時(shí)間的關(guān)系建立統(tǒng)計(jì)模型來(lái)做預(yù)測(cè)。迄今為止,時(shí)間序列方法成果頗豐,相應(yīng)誕生ARIMA差分整合移動(dòng)自回歸模型算法、滑動(dòng)平均、指數(shù)平滑法、簡(jiǎn)單移動(dòng)平均法、加權(quán)移動(dòng)平均法、自回歸滑動(dòng)平均、廣義自回歸條件異方差以及蒙特卡洛模擬等時(shí)間序列模型。由于股票數(shù)據(jù)這種金融時(shí)間序列對(duì)象受到多種因素的影響,往往是非平穩(wěn)的、非線性的以及高噪聲的,不同于以往時(shí)間序列方法只涉及時(shí)間這個(gè)單方面影響因素,所以傳統(tǒng)時(shí)間序列方法往往不適合股票數(shù)據(jù),預(yù)測(cè)性能不夠理想。而隨著互聯(lián)網(wǎng)與計(jì)算機(jī)技術(shù)的突破,數(shù)據(jù)存儲(chǔ)技術(shù)的發(fā)展,迎來(lái)大數(shù)據(jù)時(shí)代,人們從電腦端和手機(jī)端不斷地接觸到大量的數(shù)據(jù)以及信息,對(duì)于龐大的數(shù)據(jù),如何從中獲得有用且人類想要的信息變?yōu)檠芯恐攸c(diǎn)。由于股票市場(chǎng)的時(shí)效性,每天大批量數(shù)據(jù)的產(chǎn)生,迄今為止,股票市場(chǎng)已經(jīng)累積了足量的歷史數(shù)據(jù),所以我們可以很好地利用以往的歷史數(shù)據(jù),通過分析這些數(shù)據(jù),探尋其中的股票走勢(shì)的規(guī)律 ,但是股票的價(jià)格受到大量因素的影響,這使得股價(jià)的預(yù)測(cè)不是那么容易,但是,隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,使得從海量信息中挖掘出來(lái)對(duì)股票預(yù)測(cè)極其重要的信息有了一定的可能性,所以股票預(yù)測(cè)這項(xiàng)工作依然是具有極高的價(jià)值和意義的。

1.3 研究意義

????在股票買賣過程中,如果建立了金融預(yù)測(cè)模型,我們將歷史數(shù)據(jù)灌入,學(xué)習(xí)到參數(shù),從而對(duì)未來(lái)的股票價(jià)格進(jìn)行預(yù)測(cè)。假如模型的預(yù)測(cè)價(jià)格高于當(dāng)天的收盤價(jià)格,即模型告訴我們未來(lái)股票價(jià)格可能出現(xiàn)上漲,則我們可以繼續(xù)持倉(cāng)這只股票以期獲得后續(xù)更高的投資收益;另外,情況相反時(shí),我們可以根據(jù)模型的建議采取相反的舉措與動(dòng)作。所以建立一個(gè)準(zhǔn)確且高效的股票預(yù)測(cè)模型對(duì)于投資者更好的收益顯得非常有意義。當(dāng)然,找到這種股票價(jià)格上漲下跌趨勢(shì)的規(guī)律對(duì)于國(guó)家宏觀調(diào)控和企業(yè)的經(jīng)營(yíng)管理也是有很高的現(xiàn)實(shí)價(jià)值的。股票預(yù)測(cè)研究不僅僅聚焦在技術(shù)上,技術(shù)上的突破固然重要,但是在數(shù)據(jù)的處理以及特征工程上的精益求精上往往能給股票預(yù)測(cè)模型精度帶來(lái)相當(dāng)明顯的提升。所以說股票預(yù)測(cè)這項(xiàng)工作依然是具有極高的價(jià)值和意義的,股票市場(chǎng)的價(jià)格波動(dòng)研究不僅有重要的學(xué)術(shù)意義,而且有重要的實(shí)際意義。這能幫助我們更好的理解和把握股票市場(chǎng)的運(yùn)行規(guī)律,以及探尋其對(duì)真實(shí)經(jīng)濟(jì)的影響機(jī)制與影響程度,能幫助我們?cè)诠善眱r(jià)格劇烈波動(dòng)情況下選擇并實(shí)施有效的貨幣政策,這有助于減輕和消除來(lái)自股票市場(chǎng)的不穩(wěn)定因素,從而進(jìn)一步提高各國(guó)宏觀經(jīng)濟(jì)的運(yùn)行質(zhì)量。


第二章 基本模型論述

2.1 LSTM模型的理論概述

????長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò),它在序列數(shù)據(jù)預(yù)測(cè)和建模方面表現(xiàn)出色。相對(duì)于傳統(tǒng)的RNN模型,LSTM可以更好地處理長(zhǎng)期依賴關(guān)系,并且不太容易出現(xiàn)梯度消失/爆炸的問題。LSTM模型的核心是記憶單元(memory cell),它允許模型選擇性地接受、遺忘或輸出信息。每個(gè)記憶單元都有三個(gè)門控,分別是輸入門(input gate)、遺忘門(forget gate)和輸出門(output gate)。這些門控允許模型擁有更加精細(xì)的控制能力,從而更好地捕獲序列中的重要特征。具體而言,在每個(gè)時(shí)間步驟,LSTM模型會(huì)接受當(dāng)前的輸入和前一個(gè)時(shí)間步驟的隱藏狀態(tài)作為輸入,并計(jì)算出當(dāng)前的輸出和新的隱藏狀態(tài)。

????LSTM模型的訓(xùn)練過程采用反向傳播算法,通過最小化損失函數(shù)來(lái)調(diào)整模型參數(shù),從而使得模型能夠更好地預(yù)測(cè)未知數(shù)據(jù)。在實(shí)際應(yīng)用中,為了減少過擬合和提高模型性能,常常會(huì)結(jié)合dropout、正則化、批歸一化等技術(shù)來(lái)進(jìn)行模型優(yōu)化??傊?,LSTM模型在序列建模和預(yù)測(cè)任務(wù)中表現(xiàn)出色,能很好地解決自然語(yǔ)言處理、股票價(jià)格預(yù)測(cè)等問題,因此將利用LSTM模型應(yīng)用到本文的股票預(yù)測(cè)中。

2.2 LSTM的三個(gè)主要結(jié)構(gòu)

2.2.1 遺忘門

????在我們 LSTM 中的第一步是決定我們會(huì)從細(xì)胞狀態(tài)中丟棄什么信息。這個(gè)決定通過一個(gè)稱為遺忘門層完成,它控制前一時(shí)刻的單元狀態(tài)中哪些信息需要被遺忘,從而適應(yīng)當(dāng)前序列中新出現(xiàn)或不再需要的信息。forget gate的輸出值在0到1之間,越接近0表示需要遺忘的信息越多,越接近1表示需要保留的信息越多。

2.2.2 輸入門

????輸入門是決定讓多少新的信息加入到cell狀態(tài)中來(lái)。實(shí)現(xiàn)這個(gè)需要包括兩個(gè) 步驟:首先,需要sigmoid層決定哪些信息需要更新;tanh 層生成一個(gè)向量,也就是備選的用來(lái)更新的內(nèi)容。在下一步,我們把這兩部分聯(lián)合起來(lái),對(duì)cell的狀態(tài)進(jìn)行一個(gè)更新。input gate的輸出值也在0到1之間,越接近0表示不需要輸入新的信息,越接近1表示需要輸入全部新的信息。

2.2.3 輸出門

????最終,我們需要確定輸出什么值。這個(gè)輸出將會(huì)基于我們的細(xì)胞狀態(tài),但是也是一個(gè)過濾后的版本。首先,sigmoid層來(lái)確定細(xì)胞狀態(tài)的哪個(gè)部分將被輸出。接著,細(xì)胞通過 tanh 進(jìn)行處理狀態(tài)并將它和sigmoid層的輸出相乘,最終會(huì)輸出我們確定輸出的那部分內(nèi)容。input gate的輸出值也在0到1之間,越接近0表示不需要輸入新的信息,越接近1表示需要輸入全部新的信息。

2.3 改進(jìn)模型

????LSTM模型有非常強(qiáng)大的功能,本文只是使用了相對(duì)簡(jiǎn)單的單步單特征的預(yù)測(cè),更深入研究的話可以發(fā)現(xiàn),LSTM還可以進(jìn)行多步單特征,單步多特征,多步多特征等更強(qiáng)大的預(yù)測(cè)工作。除此之外,模型還可以從以下幾個(gè)地方進(jìn)行調(diào)整和改進(jìn),以獲得更好的模型效果:

  1. 增加層數(shù):增加模型的深度可以提高模型的表示能力和捕捉序列長(zhǎng)時(shí)依賴關(guān)系的能力,同時(shí)也會(huì)增加模型的計(jì)算復(fù)雜度。通??梢允褂枚询B多個(gè)LSTM層來(lái)增加模型的深度。

  2. 使用不同類型的門控機(jī)制:除了標(biāo)準(zhǔn)的forget gate、input gate和output gate之外,還可以嘗試其他類型的門控機(jī)制,例如Peephole LSTM、Attention LSTM等。這些門控機(jī)制可以更好地適應(yīng)特定的任務(wù)需求和數(shù)據(jù)特征。

  3. 添加注意力機(jī)制:引入注意力機(jī)制可以使LSTM模型更加關(guān)注重要的信息,從而提高模型的性能。

  4. 使用殘差連接:在LSTM模型中添加殘差連接可以幫助信息流更加順暢地傳播,避免信息在經(jīng)過多個(gè)門控單元時(shí)被過度壓縮或者丟失。

  5. 應(yīng)用正則化技術(shù):使用Dropout、L2正則化、Gradient Clipping等方法可以幫助防止過擬合和梯度消失/爆炸問題。

  6. 組合不同類型的RNN模型:可以將LSTM與GRU、RNN-T等不同類型的RNN模型組合,形成復(fù)合型的模型,以取長(zhǎng)補(bǔ)短,進(jìn)一步提高模型的性能。

第三章 數(shù)據(jù)處理

3.1 數(shù)據(jù)讀取與可視化展示

????首先從包含 2010年1月1日至 2021年12月30日標(biāo)準(zhǔn)普爾 500 股票指數(shù)的開盤價(jià)、最高價(jià)、最低價(jià)、收盤價(jià)的美國(guó)標(biāo)準(zhǔn)普爾500指數(shù)歷史數(shù)據(jù).xls的excel文件根據(jù)時(shí)間拆分成2021年6月1日之前的訓(xùn)練數(shù)據(jù)TrainData.xls,2021年6月1日至12月30日的檢驗(yàn)數(shù)據(jù)ValidateData.xls,以及2022年1月到3月30日的預(yù)測(cè)數(shù)據(jù)TestData.xls。數(shù)據(jù)格式大致如圖所示:


????利用matplotlib繪圖庫(kù),以日期作為橫軸數(shù)據(jù),收盤價(jià)作為縱軸數(shù)據(jù)對(duì)三個(gè)文件的整體數(shù)據(jù)做一個(gè)大致的可視化分析。訓(xùn)練數(shù)據(jù),檢驗(yàn)數(shù)據(jù),預(yù)測(cè)數(shù)據(jù)的運(yùn)行結(jié)果分別如下:


????從運(yùn)行結(jié)果來(lái)看,SP500的收盤價(jià)趨勢(shì)除了中間幾次斷崖式暴跌之外,大致上是呈現(xiàn)上漲的趨勢(shì),具體放大細(xì)看的話不難發(fā)現(xiàn),股票的收盤價(jià)整體上呈現(xiàn)一個(gè)波動(dòng)的上漲趨勢(shì)。

3.2 數(shù)據(jù)預(yù)處理

3.2.1 標(biāo)準(zhǔn)化數(shù)據(jù)

????為了獲得更好的擬合效果并防止訓(xùn)練發(fā)散,我們需要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,也就是通過利用原數(shù)據(jù)減去訓(xùn)練數(shù)據(jù)的均值后再除以標(biāo)準(zhǔn)差得到標(biāo)準(zhǔn)化后的數(shù)據(jù)。數(shù)據(jù)標(biāo)準(zhǔn)化可以消除不同特征之間的量綱差異,使得特征之間具有可比性,從而提高模型的預(yù)測(cè)準(zhǔn)確率。這里利用sklearn中的StandardScaler,對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行擬合,并對(duì)訓(xùn)練數(shù)據(jù)、驗(yàn)證數(shù)據(jù)以及預(yù)測(cè)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。

3.2.2 準(zhǔn)備預(yù)測(cè)變量以及響應(yīng)變量

????要預(yù)測(cè)序列在將來(lái)時(shí)間步的值,需要將響應(yīng)變量指定為將值移位一個(gè)steptime時(shí)間步的訓(xùn)練序列,也就是取其[0:end-1]的數(shù)據(jù)作為預(yù)測(cè)的“輸入數(shù)據(jù)”,[1:end]的數(shù)據(jù)作為預(yù)測(cè)的“標(biāo)簽數(shù)據(jù)”。也就是說,在輸入序列的每個(gè)時(shí)間步,LSTM 網(wǎng)絡(luò)都學(xué)習(xí)預(yù)測(cè)下一個(gè)時(shí)間步的值。預(yù)測(cè)變量是沒有最終時(shí)間步的訓(xùn)練序列。


第四章 數(shù)據(jù)分析

4.1 訓(xùn)練LSTM模型

????通過Keras機(jī)器學(xué)習(xí)庫(kù)提供的方法,搭建一個(gè)能用于時(shí)序序列分析的LSTM模型,模型的摘要圖如圖所示:


????需要注意的是,LSTM模型的輸入形狀是一個(gè)三維的張量,也就是(batch_size, time_steps, input_dim)三個(gè)維度,分別對(duì)應(yīng)的是批次大小,時(shí)間步長(zhǎng)以及輸入的特征維度,batch_size批次大小由后期訓(xùn)練時(shí)確定,因此設(shè)置成None;由于我們是測(cè)試單步預(yù)測(cè)的,因此時(shí)間步長(zhǎng)設(shè)置成1;輸入維度也僅僅是前一天的收盤價(jià)。因此該神經(jīng)網(wǎng)絡(luò)的輸入就是(None, 1, 1)。為了挖掘到更深的特征,因此添加了一個(gè)有128個(gè)神經(jīng)元的LSTM層以及一個(gè)64個(gè)神經(jīng)元的LSTM層,并添加一個(gè)遺忘率為20%的Dropout遺忘層,表示將有20%的概率將神經(jīng)元暫時(shí)從網(wǎng)絡(luò)中丟棄,以此來(lái)防止過擬合的情況發(fā)生。最后再設(shè)置一個(gè)全連接層,最后以回歸輸出的形式將數(shù)據(jù)進(jìn)行輸出。

????為了提高模型的訓(xùn)練效果,優(yōu)化器將使用Adam算法,并且使用指數(shù)衰減的形式設(shè)置學(xué)習(xí)率,將Mean Squared Error均方誤差設(shè)置為模型的損失函數(shù),MSE的值越小,說明模型的性能越好,預(yù)測(cè)結(jié)果與真實(shí)值之間的差距越小。

????緊接著,我們調(diào)用模型的fit方法對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行擬合,設(shè)置批次大小為32,進(jìn)行大概250輪的訓(xùn)練。訓(xùn)練的過程如圖所示,可以看到,模型在訓(xùn)練了幾個(gè)輪次之后,MSE均方誤差在剛開始下降的比較快,到后來(lái)大概就在0.005左右不斷地波動(dòng),可以從損失函數(shù)的變化情況看出模型的訓(xùn)練效果還是不錯(cuò)的。


4.2 模型效果檢驗(yàn)

????我們利用模型的predict方法,對(duì)檢驗(yàn)數(shù)據(jù)進(jìn)行預(yù)測(cè)。由于之前傳入的數(shù)據(jù)是使用了標(biāo)準(zhǔn)化處理的,所以輸出的預(yù)測(cè)值也是經(jīng)過標(biāo)準(zhǔn)化后的數(shù)據(jù),所以最終我們需要將預(yù)測(cè)的結(jié)果值反標(biāo)準(zhǔn)化,也就是利用inverse_transform方法,將預(yù)測(cè)結(jié)果轉(zhuǎn)換為實(shí)際的預(yù)測(cè)值。

????緊接著,我們需要根據(jù)去標(biāo)準(zhǔn)化的預(yù)測(cè)值去計(jì)算誤差指標(biāo)。對(duì)于 RMSE均方根誤差,首先我們需要先獲取到預(yù)測(cè)樣本的真實(shí)值,然后對(duì)樣本點(diǎn)的測(cè)量值和真實(shí)值求差,求平方后做平均運(yùn)算,最后取根植,獲取到RMSE均方根誤差。對(duì)于MAE平均絕對(duì)誤差,我們需要把預(yù)測(cè)值與真實(shí)值做差,然后取絕對(duì)值后做平均處理,最后獲取到MAE平均絕對(duì)誤差。對(duì)于MAPE平均絕對(duì)百分比誤差,我們需要把預(yù)測(cè)值與真實(shí)值做差,結(jié)果除以真實(shí)值,取絕對(duì)值后做平均處理,最后獲取到MAPE平均絕對(duì)百分比誤差。檢驗(yàn)數(shù)據(jù)的三個(gè)誤差結(jié)果如圖所示:


????緊接著需要對(duì)檢驗(yàn)數(shù)據(jù)的可視化展示,由于訓(xùn)練數(shù)據(jù)和檢驗(yàn)數(shù)據(jù)是相連的,所以首先將訓(xùn)練數(shù)據(jù)和檢驗(yàn)數(shù)據(jù)的預(yù)測(cè)值聯(lián)合展示。運(yùn)行結(jié)果如下:


????緊接著,將預(yù)測(cè)值與原數(shù)據(jù)放在一個(gè)折線圖中進(jìn)行比較,可以清楚地看到二者之間的趨勢(shì)變化情況以及差距,運(yùn)行結(jié)果如下圖所示:


????緊接著,再通過繪制出預(yù)測(cè)數(shù)據(jù)與原數(shù)據(jù)之間差值的棉棒圖,來(lái)更清楚地看到預(yù)測(cè)的效果。棉棒圖如圖所示:


????從如上的分析以及可視化結(jié)果來(lái)看,訓(xùn)練的模型對(duì)檢驗(yàn)數(shù)據(jù)的擬合程度還是相當(dāng)不錯(cuò)的,在大致的趨勢(shì)上可以看到預(yù)測(cè)的效果與實(shí)際的效果是接近一致的,從誤差棉棒圖中也可以看出來(lái)誤差的范圍大概在(-110,80)之間,所以說整體的擬合效果是不錯(cuò)的。

4.3 預(yù)測(cè)將來(lái)的時(shí)間步

????在將模型運(yùn)用到驗(yàn)證數(shù)據(jù)進(jìn)行預(yù)測(cè)之后,從三個(gè)評(píng)估指標(biāo)可以看出,我們模型的訓(xùn)練效果是不錯(cuò)的,因此我們將利用訓(xùn)練好的模型,對(duì)未來(lái)的時(shí)間步進(jìn)行預(yù)測(cè)。我們利用模型的predict方法,對(duì)預(yù)測(cè)數(shù)據(jù)進(jìn)行預(yù)測(cè)。由于之前傳入的數(shù)據(jù)是使用了標(biāo)準(zhǔn)化處理的,所以輸出的預(yù)測(cè)值也是經(jīng)過標(biāo)準(zhǔn)化后的數(shù)據(jù),所以最終我們需要將預(yù)測(cè)的結(jié)果值反標(biāo)準(zhǔn)化,也就是利用inverse_transform方法,將預(yù)測(cè)結(jié)果轉(zhuǎn)換為實(shí)際的預(yù)測(cè)值。

????對(duì)預(yù)測(cè)數(shù)據(jù)進(jìn)行可視化展示,首先需要將訓(xùn)練數(shù)據(jù)和檢驗(yàn)數(shù)據(jù)拼接起來(lái),繪制第一個(gè)圖形,然后在此基礎(chǔ)上,將預(yù)測(cè)的值用紅色的折線繪制出來(lái),并定義好橫縱坐標(biāo),圖例的顯示設(shè)置。可視化結(jié)果如圖所示:


????緊接著需要將預(yù)測(cè)數(shù)據(jù)單獨(dú)拿出來(lái)與實(shí)際數(shù)據(jù)做一個(gè)對(duì)比,繪制出預(yù)測(cè)-實(shí)際的折線圖,通過兩條折現(xiàn)的變化趨勢(shì)來(lái)確定模型的預(yù)測(cè)效果??梢暬Y(jié)果如圖所示:


????緊接著,再通過繪制出預(yù)測(cè)數(shù)據(jù)與原數(shù)據(jù)之間差值的棉棒圖,來(lái)更清楚地看到預(yù)測(cè)的效果。棉棒圖如圖所示:


????通過以上的預(yù)測(cè)分析可以看到,預(yù)測(cè)值與真實(shí)值之間存在一定的誤差,誤差范圍大概在[-120,110]之間,但是大致趨勢(shì)上還是吻合的。猜測(cè)誤差較大的原因就是這個(gè)時(shí)間段內(nèi),股市的波動(dòng)情況太大,導(dǎo)致根據(jù)前向的趨勢(shì)預(yù)測(cè)后向的數(shù)據(jù)的精度有一定程度的下降,但是從整體上來(lái)看我們的預(yù)測(cè)效果還是不錯(cuò)的。

4.4 構(gòu)建預(yù)測(cè)誤差表

????通過以上的預(yù)測(cè)結(jié)果(注:預(yù)測(cè)是利用2022/1/3-2022/3/29的數(shù)據(jù)去預(yù)測(cè)2022/1/4-2022/3/30的數(shù)據(jù),因此第一天不算預(yù)測(cè)),有表展示:

第五章 結(jié)論

????這次的股票預(yù)測(cè)作業(yè),讓我對(duì)深度學(xué)習(xí)與金融的結(jié)合有了全新的認(rèn)識(shí),在以往學(xué)習(xí)深度學(xué)習(xí)的過程,更多的是對(duì)現(xiàn)有代碼的改進(jìn)以及優(yōu)化,實(shí)現(xiàn)的更多的是對(duì)圖像處理的計(jì)算機(jī)視覺的學(xué)習(xí)。剛開始對(duì)時(shí)序數(shù)據(jù)的分析還是一個(gè)很懵懂的狀態(tài),然后通過查閱資料,知道了時(shí)序分析是以分析時(shí)間序列的發(fā)展過程、方向和趨勢(shì),預(yù)測(cè)將來(lái)時(shí)域可能達(dá)到的目標(biāo)的方法。這運(yùn)用了概率統(tǒng)計(jì)中時(shí)間序列分析原理和技術(shù),利用時(shí)序系統(tǒng)的數(shù)據(jù)相關(guān)性,建立相應(yīng)的數(shù)學(xué)模型,描述系統(tǒng)的時(shí)序狀態(tài),以達(dá)到預(yù)測(cè)未來(lái)的效果。而適合股票預(yù)測(cè)的方法有很多種,例如移動(dòng)平均法、季節(jié)系數(shù)法、指數(shù)平滑法、自回歸滑動(dòng)平均模型(ARIMA)、隨機(jī)森林等等,但是在查找資料的過程中發(fā)現(xiàn),長(zhǎng)短期記憶網(wǎng)絡(luò)在時(shí)序數(shù)據(jù)的分析上有非常好的效果,傳統(tǒng)的RNN在時(shí)序數(shù)據(jù)的分析中有較好的效果,之所以會(huì)有較好的預(yù)測(cè)效果是因?yàn)樵?t時(shí)間點(diǎn)時(shí)會(huì)將 t-1時(shí)間點(diǎn)的隱節(jié)點(diǎn)作為當(dāng)前時(shí)間點(diǎn)的輸入,這樣有效的原因是因?yàn)橹皶r(shí)間點(diǎn)的信息也用于計(jì)算當(dāng)前時(shí)間點(diǎn)的內(nèi)容,但是傳統(tǒng)的RNN卻存在長(zhǎng)期依賴以及梯度消失或爆炸的問題,而LSTM的出現(xiàn)正是對(duì)RNN的一種補(bǔ)充,他能很好地利用”門機(jī)制”來(lái)控制特征的流通和損失,這使得它能解決RNN存在的問題并保留其優(yōu)秀的時(shí)序分析的能力。經(jīng)過先從python股票預(yù)測(cè)的LSTM的實(shí)現(xiàn),再到matlab的編程實(shí)現(xiàn),其中對(duì)LSTM的實(shí)現(xiàn)方法以及過程都經(jīng)過了深入的理解,最終實(shí)現(xiàn)了基于LSTM模型的股票預(yù)測(cè)。

????但是依舊存在一些的不足之處,比如在模型的優(yōu)化上就無(wú)從下手,由于之前都是學(xué)習(xí)計(jì)算機(jī)視覺相關(guān)的圖片識(shí)別類的深度學(xué)習(xí)課程,對(duì)于這類問題的提高精度和優(yōu)化的方法更為擅長(zhǎng)。因?yàn)槭堑谝淮谓佑|時(shí)序數(shù)據(jù)的分析,所以在優(yōu)化方面難免有些不足。除了影響股票價(jià)格的因素眾多導(dǎo)致某一時(shí)間段的波動(dòng)情況比較劇烈以外,模型本身還是有一些不足以及更大的優(yōu)化空間的。所以在今后的學(xué)習(xí)中,我會(huì)努力學(xué)習(xí)并且深入研究深度學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)在金融,大數(shù)據(jù),統(tǒng)計(jì)分析等方面的運(yùn)用,并且探尋能提高和優(yōu)化算法的方法,以達(dá)到能更好、更高效地使用模型進(jìn)行實(shí)際運(yùn)用和操作的目的。

附錄

1、訓(xùn)練參數(shù)設(shè)置代碼


2、數(shù)據(jù)預(yù)覽代碼



3、訓(xùn)練數(shù)據(jù),檢驗(yàn)數(shù)據(jù),預(yù)測(cè)數(shù)據(jù)標(biāo)準(zhǔn)化代碼


4、定義LSTM回歸網(wǎng)絡(luò)與訓(xùn)練選項(xiàng)



5、計(jì)算RMSE,MAE,MAPE三大誤差指標(biāo)



6、可視化預(yù)測(cè)結(jié)果及對(duì)比代碼





參考文獻(xiàn)

[1] 張倩倩,林天華,祁旭陽(yáng),趙霞,基于機(jī)器學(xué)習(xí)的股票預(yù)測(cè)研究綜述[J]. 河北省科學(xué)院學(xué)報(bào),2020, 37(04):18-19.

[2] 隋金城.基于LSTM神經(jīng)網(wǎng)絡(luò)的股票預(yù)測(cè)研究[D].青島科技大學(xué),2020.

[3] 周陽(yáng).基于LSTM模型的上證綜指價(jià)格預(yù)測(cè)研究[D].南京郵電大學(xué),2019.


Python數(shù)據(jù)分析實(shí)戰(zhàn)-基于長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)的SP500的股票價(jià)格預(yù)測(cè) 股價(jià)預(yù)測(cè)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
托克逊县| 本溪市| 朝阳区| 中阳县| 蛟河市| 宁远县| 新宾| 秀山| 都江堰市| 保定市| 应城市| 辉县市| 永春县| 廊坊市| 濮阳市| 绍兴市| 焉耆| 百色市| 卢氏县| 上高县| 巴彦淖尔市| 曲阜市| 禹城市| 宜川县| 清丰县| 宁南县| 桐庐县| 泾源县| 平度市| 佛坪县| 象山县| 南溪县| 二连浩特市| 昌黎县| 平安县| 罗山县| 河北区| 长寿区| 博湖县| 江山市| 郁南县|