宮振華,王嘉寧,蘇 翀
1(南京機電職業技術學院,南京 211135)
2(江蘇科技大學 電氣與信息工程學院,張家港 215600)
3(南京郵電大學 管理學院,南京 210023)
隨著經濟改革開放初期[1],股份制開始誕生,我國股票發行市場隨即開始萌芽.相比于美國市場,我國股票市場的起步較晚,但是經過三十多年經濟的建設、證券制度和法規的逐步完善,市場已經越來越趨于成熟規范化發展.因此越來越多的人搖身變成"股民",投身于浩瀚的“股市”之中.
隨著中國股票市場的不斷發展,上市公司數量也在逐步遞增,流通于證券市場的股票數量也隨之增加[2].每只股票都擁有幾十個不同的層面、維度上的數據,中小股民在面對多維度,數量巨大的數據時就加大了基于股票技術層面上分析的難度.投資者在處理過多的變量時,容易造成分析過程的混亂.
為了實現較為準確的股票預測,本文研究了MLP 和BP 神經網絡模型,并結合兩種模型構造了MLBP 模型,分別將爬取的股票歷史數據作為神經網絡的輸入集,通過模型的調參處理,得出預測的結果.根據MSE 誤差對比分析選取誤差最小的作為股票預測的應用模型,并利用其找出每股變化所表現出來的動態運行規律,為股市中廣大中小投資者等弱勢群體服務,并指導其進行有效的價值投資[3].
MLP (Multi-Layer Perception)神經網絡是一種結構為層層遞進的人工神經網絡,一組輸入變量可以被映射、傳遞到一組輸出變量.該網絡輸入層、隱藏層和輸出層.除了輸入節點之外,每個節點自身都帶有一個非線性激活函數的神經元[4].隱藏層主要實現對輸入空間的非線性映射,輸出層則是實現結果的線性分類.
MLP 網絡有輸入層(最左邊),隱藏層(中間兩層),和輸出層(最右邊),MLP 只有向前傳播過程.每個神經元上面都有對于一個輸入的權值、一個偏置和一個激活函數.所以一個前向過程的流程就是input 輸入,然后經過第一層神經元運算得到輸出,然后第一層的輸出作為第二層的輸入運算,得到第二層的輸出,直到輸出層運算,最后得到結果.神經網絡就是依靠這樣一套機制來進行計算和預測的.神經網絡模型圖如圖1.

圖1 MLP 神經網絡模型
BP(Back Propagation)前饋神經網絡,是一種在MLP 神經網絡基礎上改進的反饋型學習網絡.由兩個階段組成,第一階段是將訓練輸入送入網絡以獲得激勵響應;再將激勵響應同訓練輸入對應的目標輸出求差,獲得最后兩層的響應誤差;第二階段將輸入激勵和響應誤差相乘獲得權重的梯度;再將這個梯度乘上一個比例并取反后加到權重上.當整個訓練網絡輸出層的誤差縮小到期望值范圍或訓練次數超過閾值的時候,所有訓練過程才最終結束,這就是BP 神經網絡一次學習訓練的全部過程.
BP 神經網絡算法一般由三層或多層組成,是一種多層前饋神經網絡.由輸入層、輸出層和隱含層組成[5].由于BP 模型具有誤差反向傳播,能夠很好的改變網絡的權值和閾值,因此其具有泛化能力.80%的人工神經網絡中包含了BP 網絡[6,7],所以是使用最廣泛的神經網絡模型[8],在股票預測分析系統中也會將BP 模型作為第一選擇,BP 算法的模型如圖2所示.

圖2 BP 神經網絡模型圖
假設輸入節點xj、隱層節點yi、輸出節點O1分別表示BP 神經網絡三層節點.隱節點與輸入節點間的權值為Wij,輸出節點與隱含層節點的網絡權值為Tli.BP 算法的核心是對權值Wij,Tli的 調整和對閾值θ 的調整,使誤差函數E沿梯度方向下降.假設在輸出節點的期望輸出為t1時,BP 模型的計算公式為:
(1)隱含節點輸出公式:

(2)輸出節點輸出公式:

(3)輸出節點誤差的公式:

BP 和MLP 組合模型即為MLBP 模型,其是在BP 模型和MLP 模型的基礎上進行改進的模型,將MLP 的多個隱含層放入到BP 模型中,因此MLBP 模型是有1 個輸入層,2 個隱含層和1 個輸出層的反向傳播神經網絡.
MLBP 模型的執行流程如下:
(1)首先獲取股票的歷史數據及待預測的數據,作為模型的輸入集.
(2)對數據進行預處理,包括轉置和歸一化.
(3)構建MLBP 模型,并初始化參數.
(4)不斷地進行調參進行訓練,直到訓練次數達到一定數值,保存訓練數據訓練出的模型(包括網絡的層數、權值等參數).
(5)帶入待測數據,進行預測,并進行誤差分析.
主要MLBP 模型的流程圖如圖3所示.

圖3 MLBP 模型流程
MSE (Mean Square Error)均方誤差[9]是衡量訓練模型的輸出值與真實值之間平方誤差的總體期望偏差,如式(4)所示.

這里需要引入兩個定義:
(1)估計的偏差bias

其中,期望作用在所有從隨機變量采樣得到的數據上,θ為真實值.如果bias為0,則稱估計量是無偏的.
(2)方差Var

其中,μ是樣本的均值.
此處,可以根據式(5)、式(6)將式(4)改寫為:

MSE包含了偏差和方差,理想的估計具有較小的MSE或是在檢查中會稍微約束它們的偏差和方差.
實驗包括數據爬取和模型對比兩部分.首先通過Python 提供的Tushare 接口[10]爬取50 天的股票數據信息,對這些數據進行轉置和歸一化處理,并將數據分成訓練數據集和測試數據集存入數據庫.隨后分別使用MLP、BP 和MLBP 模型對數據庫中的股票數據進行訓練和預測,并根據實驗數據進行模型對比.
實驗中的調參包括:Sigmoid 選取正切函數,初始權重的范圍在[-0.1,0.1]之間,使用MSE計算誤差.設訓練次數記為T,T取值300 和500,學習速率記為N,N取值0.05、0.1 和0.15,動量因子記為M,M取值0.1,輸入層記為I,隱含層記為H,輸出層記為O,誤差記為E.
實驗內容是根據50 天的歷史數據來預測未來3 天的股票信息.表1至表3分別是MLP、BP 和MLBP的預測數據.
在這3 種算法中,BP 和MLBP 模型計算的誤差要遠遠小于MLP 算法,而MLBP 模型相比BP 模型誤差進一步降低.因為MLBP 在訓練參數和權值時用了反向傳播并更新的過程,所以能夠更加準確的進行預測.模型誤差對比如圖4所示.

表1 50 天數據預測3 天數據表(MLP 模型)

表2 50 天數據預測3 天數據表(BP 模型)

表3 50 天數據預測3 天數據表(MLBP 模型)
三種模型的誤差都非常均勻,因此預測的結果具有平穩性.但是三種算法的都有的缺點是當選取的數據量特別多時,會導致訓練時間過長,而較少的數據量雖然能夠加快運算速度,但預測的誤差會變大,因此選擇合適的數據規模可以權衡誤差與效率.

圖4 模型誤差對比圖
通過對股票數據的訓練和預測實驗,可證明MLBP模型更能夠準確的對股票數據進行分析,因此其在股票分析方面具有潛在的應用價值[11].
為了能夠極大地發揮該模型的作用,同時讓用戶更加方便的進行股票數據的分析和預測,本文將該模型應用于股票分析平臺.該平臺為Django 框架[12]的WEB 應用程序,以MLBP 模型作為平臺的核心業務部分.另外增加了注冊登錄、上市公司信息、財務報表、行業分類等功能作為輔助部分.平臺的用例圖和功能模塊圖分別如圖5、圖6所示.

圖5 平臺用例圖
平臺包括用戶、股票、企業、企業報表等實體,各個實體之間具有一定關聯性包括:
(1)每個用戶可以查看所有股票基本信息、查看所有企業信息和所有企業報表信息.
(2)每只股票對應一個企業,并且每只股票的所有信息能被所有用戶查詢.
(3)每份企業報表都可以被所有用戶查看,每份企業報表對應一個企業.
(4)每個企業對應一只股票,并且擁有許多企業報表,每個企業可以被所有用戶查看.
實體關系(E-R)圖如圖7所示.

圖6 平臺功能模塊圖

圖7 平臺E-R 圖
平臺部署在本地服務器上,通過訪問項目網址可展示平臺界面.平臺首頁如圖8所示.
以股票行情預測模塊為例,用戶在頭部輸入框中輸入查詢的股票代碼,系統后臺調用財經數據接口獲取交易數據,并將數據放入神經網絡算法代碼中處理,將各個算法的輸出值使用MSE 誤差估計模型進行比較,最后得出最佳的預測結果.后臺將運行結果返回到前臺頁面展示,如圖9所示.

圖8 平臺首頁

圖9 股票行情預測界面
通過分析現今的股票市場發展,根據眾多中小投資者對股市信息的預測需求,本文研究了MLP、BP和MLBP 模型,并通過實驗和模型對比可知,MLP 和BP 組合模型可以進一步提高預測的準確度,降低誤差率,從而使投資者可以根據預測的股票信息更清楚的進行投資決策.另外通過將MLBP 應用在WEB 程序中,更加方便了用戶操作,提高了模型的應用價值.
在接下來的工作中,還會繼續完善MLBP 模型,在降低誤差的基礎上進一步提高運行速率.同時廣泛爬取不同種類的股票信息,拓展股票分析平臺的功能,為不同需求的用戶提供多方面服務.