日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LSTM神经网络在证券市场分析上的应用

發布時間:2023/12/10 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LSTM神经网络在证券市场分析上的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前文中,我們利用tushare和python工具分析實現了對證券市場股票數據的獲取與保存。驗證了股票收益率符合正態分布,進而驗證了股票走勢較好符合布朗運動規律、維納過程和伊藤過程的這一基礎理論事實。此后,我們進一步探究股票價格的運動規律,引入基于神經網絡的LSTM模型,通過學習以往的股票價格運動對未來趨勢加以預測,實現了更為細致精確的擬合。


提示:本文內容限于本人對相關技術的原創性思考和理解,僅供學習參考。

目錄

  • 前言
  • 一、神經網絡是什么?
  • 二、時間序列與神經網絡
    • 1.傳統神經網絡的局限性
    • 2.循環神經網絡RNN
    • 3.長短期記憶神經網絡LSTM
    • 4.采用LSTM模型研究的優勢
  • 三、滬深股指實證研究
    • 1.導入相關包
    • 2.讀入數據
    • 3.數據預處理
    • 4.LSTM模型訓練
    • 5.可視化繪制
  • 四、預測結果
  • 總結


前言

本文主要分為三部分,在第一部分主要是對機器學習中的人工神經網絡技術作簡要的介紹和引入。第二部分,將簡要說明時間序列(也即隨機過程)數據所具有的特征,以及傳統神經網絡對于時間序列的學習所具有的缺陷,并引出當前較為時興和前沿的LSTM神經網絡技術,強調其在時間序列數據訓練和處理上所具有的優越性。最后,本文將以LSTM網絡在滬深股票指數上的學習與訓練作為技術的應用實例,從實際的代碼層面對LSTM神經網絡的具體原理和工作機制進行更為深入的講解。


一、神經網絡是什么?

什么是神經網絡呢?一說到神經網絡,根據我們在中學期間所學習的生物知識,我們會第一時間聯想到我們人類大腦中所擁有的生物神經網絡。作為計算機領域人工神經網絡技術的原型,人類大腦中的生物神經網絡具有極為強大的功能。
在大腦皮層中,約有10^11個神經元通過神經突觸與大約103個其它神經元相連,形成了一個高度復雜高度靈活的動態網絡。正是這樣一個龐大而精密的神經網絡系統,讓人類得以從事各項復雜精巧的工作,從而開創了屬于人類的文化與歷史。
接下來,我們將神經網絡細化至單個的神經元細胞。在神經元細胞中,外部刺激通過樹突輸入至細胞體。當細胞體接收的信號量超過某個閾值時,細胞體就會被激活,產生電脈沖,并將電位信號沿著軸突并通過突觸傳遞到其它神經元。神經元細胞的工作機制,啟發軟件工程師設計出一種最為基本簡單的神經網絡模型結構,也即右圖所示的感知器模型。

  • 感知器模型包括了由兩個輸入神經元組成的輸入層和一個輸出神經元的輸出層,能夠完成基礎的與或非運算。

此后,工程師們便在單個網絡模型基礎上不斷豐富完善,搭建多個信息處理層,構建各種激勵和損失函數,并用網絡相互關聯各層的多個細胞,組合構成出一個龐大可觀的復雜神經網絡決策模型。
其中,長短期記憶LSTM神經網絡是以循環神經網絡RNN為基礎算法模板的改進算法。極大地優化了對于長期依賴信息的學習過程,為長期隨機過程序列數據的機器學習提供了一份較好的解決方案。

二、時間序列與神經網絡

1.傳統神經網絡的局限性

傳統的神經網絡模型在對于某一類型的數據處理上顯得有些捉襟見肘。這便是所謂的隨機過程,也即傳統意義上所說的“時間序列數據”。這類數據相較于常規數據而言,其隨機變量的變化依賴于某一特定參數(通常自變量軸為時間),也即在時間軸上的不同時間點處具有不同的變化特征的一類數據。傳統神經網絡只能單次處理孤立的輸入信息并產生輸出,但在輸入輸出的前后序列間卻沒有構建充分的關聯。

  • 打個比方,在英語完形填空的題目上,I grew up in China. There’s many delicious food…I speak(?)。此處根據邏輯判斷,很輕易便能依照前文的China聯想到“Chinese”。但是對于計算機的神經網絡模型而言,卻是很難推測出這一缺失信息的。
  • 另一個例子是,如今的拼音輸入法能夠根據前文的輸入內容自動猜測后續內容,在詞性推測、語義推斷和輸入習慣上都進行了充分學習。但是以前常用的智能ABC輸入法,只能根據單個輸入預測下一詞,而不能從整體給出判斷建議,也是傳統神經網絡短板的集中體現。

對于隨機過程的時間序列數據而言,其重要特征和意義,往往就蘊含于序列的前后關聯性上,常常具備時間相關性。因此,傳統神經網絡所采用的簡單分類劃分的策略,不再普遍適用于此類數據的學習與預測。

2.循環神經網絡RNN


循環神經網絡RNN是一類以序列數據為輸入,并在序列的演進方向遞歸且所有節點按鏈式連接的遞歸神經網絡。RNN的引入最初是為了解決時間序列數據的機器學習問題的,可被視為同一神經網絡的多次復制和循環消息傳遞,其鏈式的特征能夠較好揭示序列的相關性。RNN的輸入和輸出能夠前后關聯,便于存儲長期記憶,并隨時根據當前的輸入對狀態進行更新,克服了傳統神經網絡的短板。
但是,當RNN學習的序列間隔不斷增大時,其對信息的學習能力會不斷衰減至0,從而產生了長期記憶的依賴問題,也即RNN對于長記憶依賴關系的學習能力趨近于0。

3.長短期記憶神經網絡LSTM

長短期記憶神經網絡LSTM是在RNN的循環神經網絡上加以改造和優化的神經網絡模型,通過在RNN的重復神經網絡模塊基礎上引入四層神經網絡交互層,極大地優化了對于長期依賴信息的學習過程,為長期隨機過程序列數據的機器學習提供了一份較好的解決方案。

在LSTM中,其關鍵在于細胞狀態。類似于傳送帶,細胞狀態呈水平線在整個鏈圖上貫穿運行,而LSTM則通過精心設計的三大門層結構,控制信息在細胞上的傳遞與交互,從而影響對序列數據的學習效果。
三大門層是LSTM神經網絡的核心,包括決定從細胞狀態中丟棄信息的忘記門層、確定添加至細胞狀態中信息的輸入門層和確認過濾后輸出信息內容的輸出門層。三大門層的核心內涵如下:

  • 忘記門層:對于前一狀態矩陣中每個輸入值都會產生一個對應的向量,該向量中的0-1值表示細胞狀態中的信息遺忘的程度。具體邏輯如圖所示。
  • 輸入門層:在輸入邏輯上,首先利用輸入門層篩選所需要更新的信息,然后利用內部的一個tanh層得到新的候選細胞信息。接下來,通過忘記門層篩選忘記舊細胞信息的一部分(σ),再通過輸入門層選擇添加候選細胞信息的一部分(忘記后剩下的部分與新添加信息的權重加和),從而更新得到新的細胞信息。
  • 輸出門層:細胞狀態更新完畢后,將輸入信息經過輸出門層的sigmoid層得到判斷條件,然后將細胞狀態經過tanh層激活得到一個-1~1之間值的向量。該向量再與輸出門得到的判斷條件相乘,便得到了該層LSTM網絡的輸出結果。

整體流程:遺忘→根據現有的輸入和上一個細胞的輸出更新狀態→根據現有的狀態輸出預測值。

在上述所列示的圖中,有幾個要點:

  • LSTM模塊當中的線就是狀態矩陣C和輸出h的流動,一般來說變動很少,主線是最上面那條直線,其他的線都是對這條主要流動線進行微加工。

  • 里面有一些黃色方塊代表層:σ激活層輸出0到1的值,代表權重;tanh層表示對輸入進行激活,輸出新的候選值。

  • 粉色的部分代表操作,x號代表矩陣點乘,+代表添加,tanh代表運算。

概括來說,LSTM上細胞狀態信息流動過程的主要特征可總結為以下三點:

  • 基于RNN,更好適應刻畫時間序列長記憶依賴關系。具有更多的神經網絡重復模塊鏈結構層數,構建門層方式用以交互。相較于BP神經網絡和傳統RNN模型具有更高的預測準確度。
  • LSTM具備優異的特征,包括時間序列特性、選擇記憶特性以及信息門層邏輯的架構。
  • LSTM作為一種模型本身,自然也具備一些短板和不足。其中最大的缺陷便是“時滯效應”,也即預測值可能在時間軸上相較真實值具備滯后性。這一現象產生的原因可追溯至時間序列本身所存在的自相關特性,可通過對時間序列數據采用廣義差分法等消減自相關性,或者調整優化模型訓練參數來較好規避。

通過上述基本邏輯,LSTM模型便可初步實現通過充分利用過往時間序列信息對未來時點信息進行預測的機制。

4.采用LSTM模型研究的優勢

在金融數據等時間序列數據的研究中廣泛應用LSTM模型進行學習訓練和預測,已逐漸成為當下數據分析和機器學習的熱點話題。這是由于LSTM對于這一類數據的學習上,具有諸多獨特的優勢和特點:

  • LSTM模型能便利地利用已有現成封裝的包keras、廣泛應用于機器學習算法中的數據流編程符號數學系統TensorFlow,對于初學者較為友好。
  • 在目前的實證研究中,綜合比較類似模型而言,LSTM模型對于時間序列分析的擬合優度較高,能較好解決梯度消失和梯度爆炸的問題,從而規避在實證研究和預測中,資產價格出現大幅度偏離實際的極端情況。
  • LSTM模型的構建和使用過程能較好對接tushare接口所導出的數據格式,也能較好發揮python這一高級編程語言及其配套環境的資源稟賦優勢。

三、滬深股指實證研究

利用前文的tushare和python工具獲取并保存證券市場股票數據,在接下來的代碼中采用lstm神經網絡對本地保存的金融序列數據進行預測分析并生成圖片。

1.導入相關包

在代碼中引入了keras包,采用該神經網絡學習庫提供的現成LSTM模型,對所獲取的股票時間序列數據加以學習與訓練,可為模型訓練提供充足便利。此外,還引入了一個強力的機器學習庫sklearn(scikit-learn),用于進行數據預處理,能夠極大節省編程時間和代碼量。讓用戶得以擁有更多的精力去分析數據分布,調整模型和修改超參。

import numpy as np import matplotlib.pyplot as plt import pandas as pd import warnings import os os.environ["CUDA_VISIBLE_DEVICES"]="-1"#限于各驅動程序差異,此處禁止GPU運算處理 from keras.models import Sequential from keras.optimizers import Adam from keras.layers import Dense, LSTM, LeakyReLU, Dropout from sklearn.preprocessing import MinMaxScaler

2.讀入數據

將待獲取的股票代碼存為列表,通過遍歷的方式將此前存儲的股票數據文件加以讀取。

stock=['601318','601988','601939','600519','002230','000858','002594','601099','600019','600036']for i in stock:filepath="D:/Documents/finance/data/"+str(i)ds = pd.read_csv(filepath+".csv",index_col="ts_code")[["pct_chg","close","open","high","low"]]#讀取表格中的各項數據

3.數據預處理

通過sklearn包中MinMaxScaler()的fit_transform()對數據進行歸一化和訓練轉化處理。

min_max_scaler = MinMaxScaler()#對數據進行均一化處理close_price = ds[['close']]close_norm_data = min_max_scaler.fit_transform(close_price.values)open_price = ds[['open']]open_norm_data = min_max_scaler.fit_transform(open_price.values)high_price = ds[['high']]high_norm_data = min_max_scaler.fit_transform(high_price.values)low_price = ds[['low']]low_norm_data = min_max_scaler.fit_transform(low_price.values)

4.LSTM模型訓練

根據所選時間序列數據的實際特征,設置相應的訓練和測試參數,用于對數據進行更好的預處理。例如此處將past_history設為5,future_target設為0,并按TRAIN_SPLIT取了模型的前80%進行訓練,后20%用于模型測試。按上述參數調用univariate_data函數,分別獲取預處理后的訓練數據集和測試數據集。

past_history = 5future_target = 0# 取 80%數據進行訓練 20%進行測試TRAIN_SPLIT = int(len(close_norm_data) * 0.8)# 訓練數據集x_train, y_train = univariate_data(close_norm_data,open_norm_data,high_norm_data,low_norm_data,0,TRAIN_SPLIT,past_history,future_target)# 測試數據集x_test, y_test = univariate_data(close_norm_data,open_norm_data,high_norm_data,low_norm_data,TRAIN_SPLIT,len(close_norm_data),past_history,future_target)

配置神經網絡相關的參數,按照數據與模型特征和訓練實際要求,以達到更為優越的訓練與擬合結果。相關參數在機器學習神經網絡的訓練中具有通用意義。

  • num_units:LSTM網絡輸出結果向量的維度。
  • learning_rate:學習率,控制模型學習進度。
  • activation_function:激活函數,定義神經網絡節點在給定輸入或輸入集合下輸出。
  • loss_function:損失函數,估量模型的預測值與真實值的不一致程度,表征魯棒性。
  • batch_size:一次訓練所選取的樣本數。
  • num_epochs:樣本批次的訓練迭代次數。
  • Input_shape(x,y):規定了時間上展開框的個數以及每個時刻輸入樣本向量的維度。

上述參數指定完畢后,即可開始編譯模型并指定相應參數變量。采用model.fit()函數訓練LSTM模型,并返回一個名為history的對象,用于在周期結束時記錄跟蹤的損失和所指定的參數。

# Initialize the RNNmodel = Sequential()# input_shape 時間步,每個時間步的特征長度(dim)model.add(LSTM(units=num_units, activation=activation_function, input_shape=(4, 5)))model.add(LeakyReLU(alpha=0.5))model.add(Dropout(0.2))model.add(Dense(units=1))# Compiling the RNNmodel.compile(optimizer=adam, loss=loss_function)# 訓練模型# Using the training set to train the modelhistory = model.fit(x_train,y_train,validation_split=0.1,batch_size=batch_size,epochs=num_epochs,shuffle=False)
  • validation_split:指定一部分訓練數據作為驗證集
  • shuffle:指定每個epoch開始前是否打亂訓練集數據順序(由于時間序列相關數據的特性恰恰體現在其順序相關性上,因此在時間序列的訓練中該參數應被禁用)

5.可視化繪制

模型訓練完畢后,將數據格式處理為pd.DataFrame,并調用matplotlib.pyplot對結果進行可視化繪圖,便于直觀衡量模型的訓練和測試結果,分析并比較模型的擬合優度和有效性。

#繪圖并加入標簽original_value = min_max_scaler.inverse_transform(y_test).flatten()predictions_value = min_max_scaler.inverse_transform(model.predict(x_test)).flatten()df_result = pd.DataFrame({"key": pd.Series(range(0, len(original_value))), "original": original_value, "predictions": predictions_value})df_result["original"].plot(label="original")df_result["predictions"].plot(label="predictions")plt.xlabel('time')plt.ylabel('index')plt.title('Stock:'+i+'\'s chart')plt.legend()plt.savefig(filepath+"lstm.png")plt.close()

四、預測結果

我們在python中編譯運行上述代碼,將10只股票1318個交易日內的開盤價(open)、最高價(high)、最低價(low)、收盤價(close)進行歸一化處理后導入LSTM模型,取其中80%的數據(約1055個交易日的股票數據)對神經網絡進行訓練,并用剩余的數據對模型加以驗證。利用matplotlib包提供的可視化工具將進行訓練預測后10只股票真實值和預測值折線圖繪制如下:


上圖中,藍色線為原始數據,橙色線為預測線。我們可以明顯觀察得出,經由LSTM神經網絡訓練后的預測曲線和原始數據曲線走勢的重合度較高,證明該模型能夠較好預測擬合證券市場股票的價格走勢。
不過,從圖中仍可看出LSTM的些許弊端,例如預測值存在時滯效應,預測效果仍較差強人意等,可通過改進模型算法、參數調整、數據預處理等方式進一步優化模型的擬合精度。


總結

總而言之,LSTM是一種基于RNN的長短期記憶神經網絡,通過精心設計的“三大門層”架構,對細胞狀態中的數據加以選擇性過濾,能夠更好刻畫時間序列的長記憶依賴關系。相較于BP、RNN等傳統神經網絡模型而言,LSTM對于時間序列的學習具有更高的預測準確度。盡管LSTM模型本身也具備“時滯效應”的短板,不過隨著模型的不斷豐富和優化,LSTM的優勢正被不斷挖掘和凸顯。各種在LSTM基礎上衍生而出的變種算法也不斷涌現。相信在不遠的將來,LSTM模型的應用領域將會更加廣泛。

總結

以上是生活随笔為你收集整理的LSTM神经网络在证券市场分析上的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。