喻麗春
股票指數是描述股票市場總的價格水平變化的指標.它是選取有代表性的一組股票,把它們的價格進行加權平均,通過一定的計算得到.在金融數據挖掘方面,股票指數預測一直是個比較熱門的研究領域.近年來,國內外很多計算機學者將神經網絡、遺傳算法、模式匹配識別[1,2]等算法思想應用于股票的預測和分析,取得了很大的成功.但由于股票指數受多方面因素的影響,各種算法都有固有的缺點和優點.人工神經網絡具有廣泛的學習能力和適應能力,但容易陷入局部最優,從而影響模型的建立和可靠性.模式匹配識別方法是以歷史數據來進行預測,具有較好的擬合度[3],但股指不僅僅是重復過去,隨著時間的推移有著自身的變化規律.所以將人工神經網絡和模式匹配識別進行結合,能夠揚長避短,取得更好的預測結果.
模式匹配識別系統最重要的步驟是確定與當前時間序列數據趨勢最接近的歷史時間序列數據,并根據最接近的歷史時間序列數據段的最后一個節點的升降趨勢,預測未來的時間序列數據趨勢.實現模式匹配識別系統的步驟如下:
(1)選擇歷史數據
歷史數據在模式匹配識別系統中有著很重要的作用.根據多次實驗,選取一段長度為n 的數據序列,n 為250 ~400 時最為合適.假設所選取的歷史時間數據序列為:
Y={y1,y2,…,yn}
選擇最近一段長度為k + 1 的時間序列數據,該時間序列數據可表示如下:
Yc={yn-k,yn-k+1,…,yn-1,yn}
yn代表今天的股票指數,yn-1為昨天的股票指數,如此類推.k+1 為其序列數據的個數,它的長短將對預測結果產生重要影響.太長或太短都將干擾預測的準確性.k 最適合的值在程序中根據預測值的相對誤差和準確率確定.根據實驗結果,k 的值在2 ~6 之間.
(2)最近似匹配時間序列數據
模式匹配識別系統的關鍵步驟是匹配,如何在過去的歷史數據中找出與當前時間序列數據最近似的序列是最主要的問題.假設最近似的序列為:
Yp={yj-k,yj-k+1,…,yj-1,yj}
對原來的數據序列Y 進行處理,產生兩個新的數據序列:
C={C1,C2,…,Cn-1}
D={D1,D2,…,Dn-1}
C 為股票指數升降趨勢序列,其構造方法如下:
D 為股票指數變化數據序列,其構造方法如下:
Di=yi+1- yi
在序列C 里面尋找與數據段相匹配的01 數據段Cp,可得到一個或多個與Cc相匹配的數據段Cp.比較它們在序列Y 里面相對應的數據段Yc和數據段Yp的差異distance,記為D.計算方法如下:

D 為兩個數據序列的差異,其值越接近零,則表示兩個數據序列之間的差異越小.
(3)確定股票預測指數
假設找到與時間序列數據Cc最接近的時間序列Cp,表示方法如下:
Cc={Cn-2,Cn-1}
Cp={Cj-2,Cj-1}
假設Cj=1,那么可以預測Cn=1,從而可以知道明天的股票指數Yn+1將比今天的高.計算yn+1的值的公式如下:

(4)誤差計算
可采用預測結果的趨勢準確率與平均相對誤差評價預測結果.當預測趨勢和實際一致時,計算器rightdirection 加1.n 天的預測結果趨勢準確率ET 的計算方法如下:

n 天的預測值平均相對誤差的計算公式如下:

其中,Y' 為預測的股指,Yi為實際股指,n 為預測天數,ER 的值越接近于0.預測多天的數據,可利用滾動的方式,把預測值也加入到歷史數據中,重復上面的步驟.
神經網絡在預測非線性系統方面有著很大的優勢,它通常用歷史數據來訓練網絡,并利用在時間上最靠近預測數據的幾個時間序列數據來預測實際輸出.BP 算法是神經網絡中應用最為廣泛的一種學習算法[4,5].
(1)網絡初始化,權值的初始值用小隨機數設定.
(2)輸入向量輸入到輸入層,并傳播到各神經元.
(3)向輸出層輸入教師信號.
(4)誤差逆傳播的權值學習.
(5)計算樣本的誤差,如樣本誤差小于預設誤差,則保存權值退出;否則,返回到步驟2 繼續訓練.
為提高神經網絡的訓練速度,首先對樣本進行歸一化操作.處理方法是分別用max、min 記錄樣本里面輸入輸出的最大最小值,然后對每個樣本值歸一化處理.公式如下:

對于初始權值,取0 ~1 之間隨機數.輸入歸一化后的樣本時,為防止樣本的輸入順序對訓練結果產生較大影響,可采用循環輸入的方法,并通過樣本的輸入數據計算輸出向量O.比較輸出向量O 和教師數據T,計算其均方誤差:

其中i 表示第i 個樣本.接著反向傳播,計算輸出層到隱層的δ,采用的激勵函數為Sigmoid 函數.激勵函數導數公式如下:
f'(x)= f(x)×[1 - f(x)]
δ 的計算公式如下:
δ=[(1 - Ok)·Ok]×[Tk- Ok]
調整隱層到輸出層的權值:
Vjk=Vik+ aδkHh
其中:k 為輸出層的第k 個節點,Hj為隱層節點中的第j 個節點的輸出,a 為學習效率.在調整輸入層到隱層的權值之前,需計算輸入層到隱層的δ,為了區別前面輸出層到隱層的δ,此處使用λ 表示.先計算來自緊接其后層的δ 的附加權值和δ',計算公式如下:

再計算λ 值,計算公式如下:
λj=[(1 - Hj)Hj]·δ'
計算調整輸入層到隱層的權值:
Wij=Wij+ bλjXi
其中:Wij為第i 個輸入節點到第j 個隱層節點的權值,b 為學習效率.累加n 個樣本的全局誤差.如果全局誤差小于預定值preErr,則訓練完畢;否則,改變n 個樣本的輸入次序,繼續訓練.
基于模式匹配識別和神經網絡的預測系統流程圖如圖1所示.

圖1 預測系統流程圖
假設需要預測30 個連續的預測值,預測值為Pi(1 ≤i ≤30).同時其對應的實際值為Ri(1≤i ≤30).可將預測值和實際值分成5 組,得到如表1所示的5 個樣本:

表1 樣本列表
由表1可知,輸入節點和輸出節點都為6個.隱層節點太多或太少都將不利于預測的最終效果.在經過實驗數據的預測效果對比之后,將隱層節點定為10 個,并設置輸入層到隱層、隱層到輸出層的學習效率均為0.7.當全局誤差小于0.005 時,訓練完畢.訓練完成時,權值將被保存到文件weight.sav.采用模式匹配識別系統讀入需預測的數值序列前270 d 的時間序列數據,產生30 d 的預測數據序列,將其作為神經網絡的輸入,并從weight.sav 文件讀取權值,輸出結果為最終預測值.
采用基于模式匹配識別和神經網絡的預測系統預測上證指數3 個不同時間段的數據.具體時間段如下:
2012.12.06 —2013.01.21;
2013.01.22 —2013.03.11;
2013.03.12 —2013.04.24.
預測天數分別為30 個交易日.預測結果分別如圖2、圖3、圖4所示.圖中空心正方形實線為真實值,空心圓形實線為模式匹配識別預測值,空心三角形虛線為混合系統預測值.實驗結果顯示:該系統的預測值和預測趨勢更接近于實際值,預測結果具有一定的準確性和實用性.

圖2 2012.12.06—2013.01.21 預測結果

圖3 2013.01.22—2013.03.11 預測結果

圖4 2013.03.12—2013.04.24 預測結果
由實驗測試結果可知:模式匹配識別和神經網絡相結合在總體上比單用模式匹配識別進行預測的效果更好.該混合系統在絕大多數情況下預測值逼近于真實值,預測結果良好.但是,由于訓練樣本個數偏少,可能使預測效果并沒有達到最佳狀態.如何改善算法,使混合系統的預測能力更強,如何克服股票市場外在的人為因素和經濟因素的影響,是值得我們繼續思考的問題.
[1] Sameer S,Jonathan F.Pattern matching and neural networks based hybrid forecasting system[J].Advances in Pattern Recognition,2001:72 -82.
[2] Sameer S.Fuzzy nearest neighbour method for time -series forecasting[C].Proc.6th European Congress on Intelligent Techniques and Soft Computing,1998:1901-1905.
[3] 胡金柱,熊春秀,舒江波,等.一種改進的字符串模式匹配算法[J].模式識別與人工智能,2010,23(1) :103 -106.
[4] 黃華,羅四維,李愛軍,等.實現人工神經網絡知識增殖能力的一種方法[J].計算機研究與發展,2004,41(7) :21 -26.
[5] 李炯城,黃漢雄.一種新的快速BP 神經網絡算法QLMBP[J].華南理工大學學報:自然科學版,2006,34(6) :49 -54.