王 崢 溫光灑 邱秀連
(1.南京烽火星空通信發展有限公司 南京 210019)(2.武漢郵電科學研究院 武漢 430074)
(3.南京烽火天地通信科技有限公司 南京 210019)
股票作為一種資本積累手段,其變化態勢常被用于衡量現代市場的發展狀況,它的出現和發展促使了交易市場的更新以及經濟資源調配制度的完善,有利于社會發展和資源的高效利用。對整個國家的經濟體系而言,資本市場扮演了一個不可或缺的角色,常被認為是國家經濟實力的真實寫照。
所以,如何在一定程度上通過算法預測股市的短期走向,降低投資者所要承擔的風險就顯得尤為重要。但是,根據分析能夠明顯看出股票數據存在著明顯特征:1)數據是跳躍的;2)數據含有噪聲;3)非線性特征明顯[1]。顯然,股票市場一直都是一個十分復雜的非線性系統[2],其價格波動受到了許多外部環境的共同作用,且自身的噪聲性表現也十分突出,所以針對股票價格的隨機性與不確定性問題,如何判斷其未來走勢和通過什么方法進行預測,就成為了廣大學者的研究熱點。
為研究股票復雜多變的特性,眾多國內外各領域的學者也針對這一問題提出過大量的研究方向。Jacek 等[3]提出了一種基于數據分類方法識別的股票預測模型,Salam 等[4]使用兩種聚類方法進行預測,Deng等[5]設計深度學習網絡來對市場狀態進行學習,Peng 等[6]設計了一種結合詞嵌入和深度學習方法的股票預測模型,Li 等[7]使用結合灰色神經網絡和馬爾科夫方法的模型研究股票價格。而在研究過程中,因為人工神經網絡擁有優秀的非線性映射能力,可以更為直觀地體現股票價格波動的動態變化特性,所以基于神經網絡的股票預測模型,也就成為了股市預測研究的熱點[8]。在前期的分析研究中,學者多采用了靜態的BP 神經網絡來嘗試進行股市預測[9],但其容易陷入局部最優解的局面,無法保證預測的準確性。而在加入模糊集后,對于股價系統的預測精度得到了提升[10~11],但在構建初始神經網絡模型時對模糊規則的確定卻是一個很大的難題,需要進行大量的理論實驗來確定參數,其過程繁瑣且效率較低。若單純運用動態神經網絡來進行預測時,沒有模糊理論的支撐,又會導致其泛化能力稍顯薄弱[12]。基于上述原因,本文擬采用動態模糊神經網絡來進行股市預測研究。并且,為了解決模糊系統中的知識抽取問題和避免初值選擇的任意性[13],采用分級學習的方法來使算法模型變得更為高效。
另一方面,模型的輸入變量的選擇也在很大程度上影響了預測結果的精度,并且運用粗糙集理論進行股價預測的例子也屢見不鮮[14~15]。所以,本文在此引入粗糙集理論來對原始數據進行預處理,去除冗余信息,選擇與待預測量相關性大的參數作為算法模型的輸入,使得預測結果更為精確有效。
粗糙集作為一種處理不確定性問題的數學工具,它對于人工智能和認知科學都非常重要,并且為粒度計算、近似推理、決策分析、知識獲取、數據挖掘和支持系統、模式識別、專家系統、控制科學等領域的信息處理提供了行之有效的理論框架。所以,對于粗糙集理論的研究一直都收到了廣泛的關注,而且模糊集合創始人曾高度評價這一理論,提出把它作為現代軟計算基礎理論之一[16]。
本文希望加入粗糙集理論,通過信息熵的計算得出更為合理的輸入參數。算法中用U 來代表論域,用C 來表示屬性集合中的條件屬性集合,把D作為決策屬性集合。算式中U 上基于條件屬性集合C 及決策屬性集合D 的等價關系分別表示為RC和Rd。而所謂的信息熵其實就是粗糙集理論中對知識不確定性進行度量的一種指標。其相關概念如下。
定義1:Rc在U上的子集的概率分布為
式中:[X]∈U/Rc表示U的等價類;|[X]|是集合[X]的“勢”,在此可以表示為[X]所含元素的個數。
定義2:令
稱H(Rc)為知識Rc的信息熵。
定義3:令

定義4:令

在此用I(ci,D)表示屬性ci相對決策屬性D的重要程度,該值越大說明在條件屬性C中屬性ci對決策屬性D越重要、二者的相關程度越大。若該值過小,則說明屬性ci是多余的,可從條件屬性集合中去掉,屬性集C簡化為C-{ci} 。
常用的模糊系統其主要不足在于大部分的算法模型都是針對于靜態問題進行設計的,使得其算法的模型適用范圍太過于局限,對于動態問題的研究顯得十分乏力。而在實際生活中,實驗研究對象大多存在動態特性,其動態變化多與時間相關,這就使得探討動態特性的算法模型具備更為實際的意義。而且,動態模糊神經網絡(DFNN)的各個參數具有其實際的物理意義,可以根據計算得出的輸入參數及對應歷史數據對構成的DFNN 網絡進行有監督學習,完成對于模糊系統的參數辨識任務。所以,本文擬用區別于模糊神經網絡的動態模糊神經網絡來實現對股票系統的預測研究。
3.2.1 算法模型結構
DFNN 共分為五層,分別為輸入層、隸屬函數層、T-范數層、歸一化層和輸出層,如圖1所示。

圖1 D-FNN網絡結構
第1 層:稱為輸入層,每一個節點直接與輸入向量xi相連,用于接收樣本的輸入參數。
第2 層:稱為隸屬函數層,其中每一個節點單獨表示一個隸屬函數,相關節點的隸屬函數可以通過下述高斯函數來進行表示:

上式中,uij是xj的第j 個隸屬函數,cij是xi的第j個高斯隸屬函數的中心,σj是xi的第j個高斯隸屬函數的寬度,r是輸入變量數,u是隸屬函數的數量,也代表系統總的規則數。
第3 層:稱為T-范數層,每一個節點分別代表一個可能的模糊規則中的IF-部分。因此,該層節點數反映了模糊規則數。第j個規則Rj的輸出為

第4 層:稱為歸一化層,稱這些節點為N 節點。其中,N 節點個數和系統模糊規則的節點數一致。該層中,第j個節點Nj的輸出為

第5 層:稱為輸出層,該層中每一個節點分別表示一個輸出變量,其值為所有輸出信號的疊加:

其中,y 表示算法的輸出,wk則為THEN-部分(結果參數)或者第k個規則的連接權。
3.2.2 模型的學習算法
本文采用的動態模糊神經網絡相較于傳統模糊神經網絡最大的特點就是算法模型的模糊規則數不需要預先進行設定。它會依據輸入參數的變化自身進行更新和調整,并根據特有的規則進行判斷算法是否有必要更新自身的規則或者是剪除舊有的規則。所以,其結構的確定也就是其模糊規則的確定過程。而在模型的學習算法上,本文采用如下的算法結構:根據可容納邊界、系統誤差這兩個參數來判別是否需要在模型中添加新的模糊規則,使用分級學習、最小二乘法(LLS)來計算算法模型中其余參數的權值系數,最后在模糊規則的修剪中擬用誤差下降率法(ERR)。
1)分級學習
分級學習的主要思想是指算法模型中每個RBF 單元的可容納邊界并不是固定不變的而是通過下列步驟來進行動態調節的。
起初,可以設置較大的可容納邊界,來實現算法的全局學習。然后,隨著不斷學習的過程,逐漸縮小邊界,開始所謂的局部學習。根據這個思想,不斷地縮小每個RBF單元的有效半徑和誤差指數。
而這也就使得算法模型中的系統誤差ke和可容納邊界kd的大小不再是一個預先設定的常數,而是根據學習速率的下降來慢慢降低的。二者的計算可以用下列式子來表示:

式中,emax為預先定義好的最大誤差;emin為期望的D-FNN精度;β(0 <β<1) 為收斂常數。

式中,dmax為輸入空間的最大長度;dmin為所關心的最小長度;γ(0 <γ< 1) 為衰減常數。
分級學習的一個重要步驟就是需要先找出算法模型中輸出誤差較高卻未被已確立的模糊規則所覆蓋到的地方,這個過程也被定義為粗學習。而當ke,kd分別達到預定的emin和dmax時,這個階段的學習就被定義為細學習。
2)模糊規則的剪除
本文擬用誤差下降率方法(Error Reduction Rate,ERR)作為規則的修剪策略,其算法核心在于分別計算出各個規則關于模型輸出的誤差下降率,然后分析現有規則對于算法模型的貢獻值,并通過預先設定的閾值來刪除那些貢獻值小的規則節點,該方法具有明顯的物理意義和穩定的數字計算。

上式中,D=TT∈Rn被稱為系統的期望輸出,叫做回歸向量,θ=WT∈Rn包含實數參數,式中的誤差向量E 被包含于Rn的范圍中,且回歸量hi和其不相關。
若H的列數小于其行數,可以進行分解得到:

通過上式易得:

G的線性最小二乘解為

也可以寫成下式:

G和 θ 滿足:

當h≠j時,因為qh和qj正交,D 的平方和或者輸出能量可以表示為

去掉均值后,D的方差為

其中,回歸量qh對系統的期望輸出方差中的一部分是由造成的。誤差err的定義:

帶入上式易得:

而這一算法的目的在于計算第i條模糊規則的重要性:

其中δS就是與第i個規則相關的(r+1)個err。
在算法中通過ηi的值來代表模糊規則對于系統的必要程度,當ηi值較大,則表示這個模糊規則在系統中比較重要,不能剪除,但是若:

式中,kerr為人為設定的閾值。表明該規則在系統中已不再是必要的,可以進行剪除。
本文使用蘇寧易購(002024)、招商銀行(600036)、華夏幸福(600340)的真實交易數據作為數據集,包含開盤價、收盤價等基本信息及WR、RSI 等多種技術指標。考慮到股票技術指標分為超買超賣指標、趨勢指標、能量指標、量價指標、大盤指標、分時指標、強弱指標等多種,在實際應用中,投資者主要是參考分析前四類指標,即超買超賣指標、趨勢指標、能量指標和量價指標[17]。根據股票屬性及相關文獻研究成果,從四個指標類型中選部分指標及基本信息進行初步篩選后確定16 個分析指標,然后對輸入數據進行離散化處理,再根據粗糙集理論的屬性約簡算法進行輸入參數的篩選。

表1 約簡結果
由表1 可以看出WR(威廉指數)、PSY(心理線指標)、AR(人氣指標)、開盤價、最低價、最高價以及當日收盤價等7 個屬性在三次約簡實驗中都有保留,可見這些指標在預測分析股票的價格變化時具有重要作用,故選定為輸入屬性。
本文研究的預測算法數據集以蘇寧易購的交易數據為代表,選擇 2016 年 11 月到 2018 年 5 月的共381 組記錄。對原始數據進行歸一化處理后,取前330條數據作為訓練數據,后51條作為測試數據進行算法模型的訓練預測。
在運用本文方法進行訓練預測的同時,通過構建合適的BP 神經網絡及模糊神經網絡系統(FNN)模型進行訓練預測,對預測結果進行對比驗證。
由圖2明顯可以看出DFNN方法的預測結果更為貼合實際輸出曲線。相對而言,圖中BP 神經網絡與FNN 方法的預測曲線雖然大致走向與實際輸出曲線一致,但都存在了多個點的預測數據嚴重偏離實際輸出的現象。其次,對實驗的結果數據進行分析,為了衡量預測結果與真實結果之間的誤差,本文使用了均方誤差MSE、均方根誤差RMSE 與平均絕對誤差MAE 作為算法評價標準,并對多種算法模型運行時RMSE值的變化進行對比分析。

圖2 多種算法模型預測結果對比

表2 算法結果對比

圖3 算法模型RMSE變化圖
由表2 與圖3 可見,本文方法的預測精度與收斂速度明顯高于FNN模型,而BP算法雖然高效,但其易陷入局部最優解,結果精度差。分析結果,從算法思想上來看,BP 算法根據各節點權值間的關系簡單地計算得出輸入數據與預測結果間的聯系。傳統的FNN 算法在模型構建的過程中,關于模糊規則和隸屬函數方面都太過于依賴專家的主觀意見。而本文方法在預處理階段通過信息熵算法去除了大量的冗余信息,給出了更為合理的輸入參數,而且是根據對歷史數據的訓練學習來計算得出更契合實際的系統參數,切實地體現了輸入參數與預測結果間的映射關系,在結果預測上相較于另外兩種算法都顯得更為精確合理。
最后,通過實驗可以表明:1)通過粗糙集理論來篩選和待預測量關聯度高的屬性作為算法輸入,確保了輸入數據的合理性,切實地提高了系統計算的運算效率,同時也提高了算法的預測精度。2)區別于傳統動態模糊神經網絡,采用分級學習的思想改變算法結構,有效地提高了算法的運行效率,使預測結果更為準確。3)與傳統算法模型不同,動態模糊神經網絡具有動態映射機制,可以很好地處理動態問題,并且其自身存在的自我調節能力避免了BP 神經網絡模型易陷入局部最優解的缺陷。4)運用動態模糊神經網絡算法模型進行預測時,存在模糊規則的剪除過程,相較于模糊神經網絡而言,后期實驗結果更加的準確和高效。
本文針對股票價格預測問題,提出了一種基于粗糙集和動態模糊神經網絡的股票預測模型。利用RS 出色的屬性約簡能力,在很大程度上消除了算法模型輸入數據的冗余信息,而DFNN 適用于對非線性系統進行預測分析,將二者有機的結合,優化了網絡拓撲結構,降低了運算的復雜度,并且在模型學習算法中采用分級學習的思想,使得實驗結果更加的高效和準確。最后通過分析測試集數據得到實驗結果,證明了本文方法的有效性。