宮振華,王嘉寧,蘇 翀
1(南京機(jī)電職業(yè)技術(shù)學(xué)院,南京 211135)
2(江蘇科技大學(xué) 電氣與信息工程學(xué)院,張家港 215600)
3(南京郵電大學(xué) 管理學(xué)院,南京 210023)
隨著經(jīng)濟(jì)改革開放初期[1],股份制開始誕生,我國股票發(fā)行市場(chǎng)隨即開始萌芽.相比于美國市場(chǎng),我國股票市場(chǎng)的起步較晚,但是經(jīng)過三十多年經(jīng)濟(jì)的建設(shè)、證券制度和法規(guī)的逐步完善,市場(chǎng)已經(jīng)越來越趨于成熟規(guī)范化發(fā)展.因此越來越多的人搖身變成"股民",投身于浩瀚的“股市”之中.
隨著中國股票市場(chǎng)的不斷發(fā)展,上市公司數(shù)量也在逐步遞增,流通于證券市場(chǎng)的股票數(shù)量也隨之增加[2].每只股票都擁有幾十個(gè)不同的層面、維度上的數(shù)據(jù),中小股民在面對(duì)多維度,數(shù)量巨大的數(shù)據(jù)時(shí)就加大了基于股票技術(shù)層面上分析的難度.投資者在處理過多的變量時(shí),容易造成分析過程的混亂.
為了實(shí)現(xiàn)較為準(zhǔn)確的股票預(yù)測(cè),本文研究了MLP 和BP 神經(jīng)網(wǎng)絡(luò)模型,并結(jié)合兩種模型構(gòu)造了MLBP 模型,分別將爬取的股票歷史數(shù)據(jù)作為神經(jīng)網(wǎng)絡(luò)的輸入集,通過模型的調(diào)參處理,得出預(yù)測(cè)的結(jié)果.根據(jù)MSE 誤差對(duì)比分析選取誤差最小的作為股票預(yù)測(cè)的應(yīng)用模型,并利用其找出每股變化所表現(xiàn)出來的動(dòng)態(tài)運(yùn)行規(guī)律,為股市中廣大中小投資者等弱勢(shì)群體服務(wù),并指導(dǎo)其進(jìn)行有效的價(jià)值投資[3].
MLP (Multi-Layer Perception)神經(jīng)網(wǎng)絡(luò)是一種結(jié)構(gòu)為層層遞進(jìn)的人工神經(jīng)網(wǎng)絡(luò),一組輸入變量可以被映射、傳遞到一組輸出變量.該網(wǎng)絡(luò)輸入層、隱藏層和輸出層.除了輸入節(jié)點(diǎn)之外,每個(gè)節(jié)點(diǎn)自身都帶有一個(gè)非線性激活函數(shù)的神經(jīng)元[4].隱藏層主要實(shí)現(xiàn)對(duì)輸入空間的非線性映射,輸出層則是實(shí)現(xiàn)結(jié)果的線性分類.
MLP 網(wǎng)絡(luò)有輸入層(最左邊),隱藏層(中間兩層),和輸出層(最右邊),MLP 只有向前傳播過程.每個(gè)神經(jīng)元上面都有對(duì)于一個(gè)輸入的權(quán)值、一個(gè)偏置和一個(gè)激活函數(shù).所以一個(gè)前向過程的流程就是input 輸入,然后經(jīng)過第一層神經(jīng)元運(yùn)算得到輸出,然后第一層的輸出作為第二層的輸入運(yùn)算,得到第二層的輸出,直到輸出層運(yùn)算,最后得到結(jié)果.神經(jīng)網(wǎng)絡(luò)就是依靠這樣一套機(jī)制來進(jìn)行計(jì)算和預(yù)測(cè)的.神經(jīng)網(wǎng)絡(luò)模型圖如圖1.
圖1 MLP 神經(jīng)網(wǎng)絡(luò)模型
BP(Back Propagation)前饋神經(jīng)網(wǎng)絡(luò),是一種在MLP 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上改進(jìn)的反饋型學(xué)習(xí)網(wǎng)絡(luò).由兩個(gè)階段組成,第一階段是將訓(xùn)練輸入送入網(wǎng)絡(luò)以獲得激勵(lì)響應(yīng);再將激勵(lì)響應(yīng)同訓(xùn)練輸入對(duì)應(yīng)的目標(biāo)輸出求差,獲得最后兩層的響應(yīng)誤差;第二階段將輸入激勵(lì)和響應(yīng)誤差相乘獲得權(quán)重的梯度;再將這個(gè)梯度乘上一個(gè)比例并取反后加到權(quán)重上.當(dāng)整個(gè)訓(xùn)練網(wǎng)絡(luò)輸出層的誤差縮小到期望值范圍或訓(xùn)練次數(shù)超過閾值的時(shí)候,所有訓(xùn)練過程才最終結(jié)束,這就是BP 神經(jīng)網(wǎng)絡(luò)一次學(xué)習(xí)訓(xùn)練的全部過程.
BP 神經(jīng)網(wǎng)絡(luò)算法一般由三層或多層組成,是一種多層前饋神經(jīng)網(wǎng)絡(luò).由輸入層、輸出層和隱含層組成[5].由于BP 模型具有誤差反向傳播,能夠很好的改變網(wǎng)絡(luò)的權(quán)值和閾值,因此其具有泛化能力.80%的人工神經(jīng)網(wǎng)絡(luò)中包含了BP 網(wǎng)絡(luò)[6,7],所以是使用最廣泛的神經(jīng)網(wǎng)絡(luò)模型[8],在股票預(yù)測(cè)分析系統(tǒng)中也會(huì)將BP 模型作為第一選擇,BP 算法的模型如圖2所示.
圖2 BP 神經(jīng)網(wǎng)絡(luò)模型圖
假設(shè)輸入節(jié)點(diǎn)xj、隱層節(jié)點(diǎn)yi、輸出節(jié)點(diǎn)O1分別表示BP 神經(jīng)網(wǎng)絡(luò)三層節(jié)點(diǎn).隱節(jié)點(diǎn)與輸入節(jié)點(diǎn)間的權(quán)值為Wij,輸出節(jié)點(diǎn)與隱含層節(jié)點(diǎn)的網(wǎng)絡(luò)權(quán)值為Tli.BP 算法的核心是對(duì)權(quán)值Wij,Tli的 調(diào)整和對(duì)閾值θ 的調(diào)整,使誤差函數(shù)E沿梯度方向下降.假設(shè)在輸出節(jié)點(diǎn)的期望輸出為t1時(shí),BP 模型的計(jì)算公式為:
(1)隱含節(jié)點(diǎn)輸出公式:
(2)輸出節(jié)點(diǎn)輸出公式:
(3)輸出節(jié)點(diǎn)誤差的公式:
BP 和MLP 組合模型即為MLBP 模型,其是在BP 模型和MLP 模型的基礎(chǔ)上進(jìn)行改進(jìn)的模型,將MLP 的多個(gè)隱含層放入到BP 模型中,因此MLBP 模型是有1 個(gè)輸入層,2 個(gè)隱含層和1 個(gè)輸出層的反向傳播神經(jīng)網(wǎng)絡(luò).
MLBP 模型的執(zhí)行流程如下:
(1)首先獲取股票的歷史數(shù)據(jù)及待預(yù)測(cè)的數(shù)據(jù),作為模型的輸入集.
(2)對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,包括轉(zhuǎn)置和歸一化.
(3)構(gòu)建MLBP 模型,并初始化參數(shù).
(4)不斷地進(jìn)行調(diào)參進(jìn)行訓(xùn)練,直到訓(xùn)練次數(shù)達(dá)到一定數(shù)值,保存訓(xùn)練數(shù)據(jù)訓(xùn)練出的模型(包括網(wǎng)絡(luò)的層數(shù)、權(quán)值等參數(shù)).
(5)帶入待測(cè)數(shù)據(jù),進(jìn)行預(yù)測(cè),并進(jìn)行誤差分析.
主要MLBP 模型的流程圖如圖3所示.
圖3 MLBP 模型流程
MSE (Mean Square Error)均方誤差[9]是衡量訓(xùn)練模型的輸出值與真實(shí)值之間平方誤差的總體期望偏差,如式(4)所示.
這里需要引入兩個(gè)定義:
(1)估計(jì)的偏差bias
其中,期望作用在所有從隨機(jī)變量采樣得到的數(shù)據(jù)上,θ為真實(shí)值.如果bias為0,則稱估計(jì)量是無偏的.
(2)方差Var
其中,μ是樣本的均值.
此處,可以根據(jù)式(5)、式(6)將式(4)改寫為:
MSE包含了偏差和方差,理想的估計(jì)具有較小的MSE或是在檢查中會(huì)稍微約束它們的偏差和方差.
實(shí)驗(yàn)包括數(shù)據(jù)爬取和模型對(duì)比兩部分.首先通過Python 提供的Tushare 接口[10]爬取50 天的股票數(shù)據(jù)信息,對(duì)這些數(shù)據(jù)進(jìn)行轉(zhuǎn)置和歸一化處理,并將數(shù)據(jù)分成訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集存入數(shù)據(jù)庫.隨后分別使用MLP、BP 和MLBP 模型對(duì)數(shù)據(jù)庫中的股票數(shù)據(jù)進(jìn)行訓(xùn)練和預(yù)測(cè),并根據(jù)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行模型對(duì)比.
實(shí)驗(yàn)中的調(diào)參包括:Sigmoid 選取正切函數(shù),初始權(quán)重的范圍在[-0.1,0.1]之間,使用MSE計(jì)算誤差.設(shè)訓(xùn)練次數(shù)記為T,T取值300 和500,學(xué)習(xí)速率記為N,N取值0.05、0.1 和0.15,動(dòng)量因子記為M,M取值0.1,輸入層記為I,隱含層記為H,輸出層記為O,誤差記為E.
實(shí)驗(yàn)內(nèi)容是根據(jù)50 天的歷史數(shù)據(jù)來預(yù)測(cè)未來3 天的股票信息.表1至表3分別是MLP、BP 和MLBP的預(yù)測(cè)數(shù)據(jù).
在這3 種算法中,BP 和MLBP 模型計(jì)算的誤差要遠(yuǎn)遠(yuǎn)小于MLP 算法,而MLBP 模型相比BP 模型誤差進(jìn)一步降低.因?yàn)镸LBP 在訓(xùn)練參數(shù)和權(quán)值時(shí)用了反向傳播并更新的過程,所以能夠更加準(zhǔn)確的進(jìn)行預(yù)測(cè).模型誤差對(duì)比如圖4所示.
表1 50 天數(shù)據(jù)預(yù)測(cè)3 天數(shù)據(jù)表(MLP 模型)
表2 50 天數(shù)據(jù)預(yù)測(cè)3 天數(shù)據(jù)表(BP 模型)
表3 50 天數(shù)據(jù)預(yù)測(cè)3 天數(shù)據(jù)表(MLBP 模型)
三種模型的誤差都非常均勻,因此預(yù)測(cè)的結(jié)果具有平穩(wěn)性.但是三種算法的都有的缺點(diǎn)是當(dāng)選取的數(shù)據(jù)量特別多時(shí),會(huì)導(dǎo)致訓(xùn)練時(shí)間過長(zhǎng),而較少的數(shù)據(jù)量雖然能夠加快運(yùn)算速度,但預(yù)測(cè)的誤差會(huì)變大,因此選擇合適的數(shù)據(jù)規(guī)模可以權(quán)衡誤差與效率.
圖4 模型誤差對(duì)比圖
通過對(duì)股票數(shù)據(jù)的訓(xùn)練和預(yù)測(cè)實(shí)驗(yàn),可證明MLBP模型更能夠準(zhǔn)確的對(duì)股票數(shù)據(jù)進(jìn)行分析,因此其在股票分析方面具有潛在的應(yīng)用價(jià)值[11].
為了能夠極大地發(fā)揮該模型的作用,同時(shí)讓用戶更加方便的進(jìn)行股票數(shù)據(jù)的分析和預(yù)測(cè),本文將該模型應(yīng)用于股票分析平臺(tái).該平臺(tái)為Django 框架[12]的WEB 應(yīng)用程序,以MLBP 模型作為平臺(tái)的核心業(yè)務(wù)部分.另外增加了注冊(cè)登錄、上市公司信息、財(cái)務(wù)報(bào)表、行業(yè)分類等功能作為輔助部分.平臺(tái)的用例圖和功能模塊圖分別如圖5、圖6所示.
圖5 平臺(tái)用例圖
平臺(tái)包括用戶、股票、企業(yè)、企業(yè)報(bào)表等實(shí)體,各個(gè)實(shí)體之間具有一定關(guān)聯(lián)性包括:
(1)每個(gè)用戶可以查看所有股票基本信息、查看所有企業(yè)信息和所有企業(yè)報(bào)表信息.
(2)每只股票對(duì)應(yīng)一個(gè)企業(yè),并且每只股票的所有信息能被所有用戶查詢.
(3)每份企業(yè)報(bào)表都可以被所有用戶查看,每份企業(yè)報(bào)表對(duì)應(yīng)一個(gè)企業(yè).
(4)每個(gè)企業(yè)對(duì)應(yīng)一只股票,并且擁有許多企業(yè)報(bào)表,每個(gè)企業(yè)可以被所有用戶查看.
實(shí)體關(guān)系(E-R)圖如圖7所示.
圖6 平臺(tái)功能模塊圖
圖7 平臺(tái)E-R 圖
平臺(tái)部署在本地服務(wù)器上,通過訪問項(xiàng)目網(wǎng)址可展示平臺(tái)界面.平臺(tái)首頁如圖8所示.
以股票行情預(yù)測(cè)模塊為例,用戶在頭部輸入框中輸入查詢的股票代碼,系統(tǒng)后臺(tái)調(diào)用財(cái)經(jīng)數(shù)據(jù)接口獲取交易數(shù)據(jù),并將數(shù)據(jù)放入神經(jīng)網(wǎng)絡(luò)算法代碼中處理,將各個(gè)算法的輸出值使用MSE 誤差估計(jì)模型進(jìn)行比較,最后得出最佳的預(yù)測(cè)結(jié)果.后臺(tái)將運(yùn)行結(jié)果返回到前臺(tái)頁面展示,如圖9所示.
圖8 平臺(tái)首頁
圖9 股票行情預(yù)測(cè)界面
通過分析現(xiàn)今的股票市場(chǎng)發(fā)展,根據(jù)眾多中小投資者對(duì)股市信息的預(yù)測(cè)需求,本文研究了MLP、BP和MLBP 模型,并通過實(shí)驗(yàn)和模型對(duì)比可知,MLP 和BP 組合模型可以進(jìn)一步提高預(yù)測(cè)的準(zhǔn)確度,降低誤差率,從而使投資者可以根據(jù)預(yù)測(cè)的股票信息更清楚的進(jìn)行投資決策.另外通過將MLBP 應(yīng)用在WEB 程序中,更加方便了用戶操作,提高了模型的應(yīng)用價(jià)值.
在接下來的工作中,還會(huì)繼續(xù)完善MLBP 模型,在降低誤差的基礎(chǔ)上進(jìn)一步提高運(yùn)行速率.同時(shí)廣泛爬取不同種類的股票信息,拓展股票分析平臺(tái)的功能,為不同需求的用戶提供多方面服務(wù).