綦方中 林少倩 俞婷婷
1(浙江工業大學管理學院 浙江 杭州 310023)2(杭州國信大數據應用研究院 浙江 杭州 310023)
隨著我國改革開發的推進,我國的股票市場在快速發展。股票市場的運行影響著國民經濟的發展,對未來的股票走勢進行準確的預測能夠降低投資者的風險,同時在適當時引導金融市場經濟,使得我國經濟更健康的發展。
股票預測的基本思想一般是利用股票價格的歷史數據對股票未來的價格進行預測判斷[1]。最初,技術分析法被用于股票的價格預測,通過長期觀察股票價格的日線圖、周線圖,歸納總結股價的波動規律。后來,國內外學者建立時間序列預測模型實現預測。李麗莎[2]建立ARCH模型驗證了上海股市的可預測性,并得出上海股市具有杠桿效應、波動集群性和波動持續性的結論。馮盼等[3]通過建立ARMA模型,對招商銀行的股票歷史數據進行分析,并預測出未來三天的股價情況。
但是,由于股票價格(指數)具有非線性的波動,在股票價格(指數)原有趨勢發生反轉時,時間序列模型難以應對。此時,人工智能技術開始興起,給股票價格的預測帶來新的方向。其中,BP神經網絡由于其強大的噪聲數據承受能力和非線性映射能力而受到了廣泛的應用。王莎[4]運用改進的BP神經網絡實現了湖南三一重工的股價預測。李杰等[5]利用神經網絡并結合主成分分析對中國石化天股票歷史指標數據的收盤價進行了預測,并通過圖像仿真擬合驗證了該方法的準確性。但是,傳統BP神經網絡在股票價格預測時,存在容易陷入局部、訓練時間過長、預測數據不準確的問題。針對上述問題,本文構建了基于PCA和IFOA-BP神經網絡的股票預測模型。
主成分分析(PCA)是一種廣泛應用的無監督線性數據轉換技術,其作用是實現有效的數據降維,并從最大程度上保留原始數據信息[5]。在實際的應用中,PCA經常應用于數據的預處理,其能夠降低由于影響因素過多而造成的信息冗余。
果蠅優化算法(FOA)是2011年潘文超教授受果蠅覓食行為的啟發而推演出的一種群體智能算法[6]。與其他群智能算法相比,FOA算法容易理解,參數設置較少,程序代碼易于實現且運行效率高,有較強的尋優能力[6]。本文首先將采用PCA對預處理后的樣本數據進行降維,并利用改進的果蠅算法(IFOA)優化BP神經網絡,得到最優的初始權值和閾值,接著建立PCA-IFOA-BP神經網絡股票預測模型,最后實現股票價格預測,并與其他模型的對比,從而驗證模型的有效性。
PCA是一種廣泛應用的無監督線性數據轉換技術,其作用是實現有效的數據降維。在實際的股票價格預測中,通過使用PCA來對數據進行預處理,能夠降低由于股票因素較多而造成的信息冗余,最大程度上反映原始數據信息。
以下是PCA算法的主要流程[5]:
假設有一個樣本集,樣本數為n,變量維數為d,將其用數據矩陣表示為:
(1)
(1) 對原始d維數據做標準化處理,假定標準化后的矩陣為Z。
(2)

(2) 構造樣本的協方差矩陣。
(3)

(3) 求解協方差矩陣R的特征向量u1,u2,…,ud,特征根λ1,λ2,…,λd。
(4) 選擇與前k個最大特征值對應的特征向量,其中k為新特征空間的維度(k≤d)。前k個主成分的累積貢獻率為:
(4)
(5) 通過前k個特征值構建映射矩陣W。
(6) 通過映射矩陣W將d維的輸入數據矩陣Z轉換到新的k維特征子空間,假定映射后的主成分矩陣為Y。
Y=ZW
(5)
果蠅算法是一種基于果蠅覓食行為推演出的尋求全局優化的新方法[7]。果蠅在視覺與嗅覺上的先天優秀特性能夠幫助其找到遠距離的食物[8],果蠅在搜尋食物時,先用靈敏的嗅覺尋找空氣中的各種氣味,捕捉食物源的大致位置,然后飛往那個位置,接近食物時,再利用敏銳的視覺確定同伴聚集的位置,直到找到食物,覓食過程如圖1所示[9]。

圖1 果蠅覓食過程
FOA作為一種新型群智能算法,具有結構簡單、優化過程易于理解的優點[8]。但是果蠅算法也存在以下的缺陷:果蠅算法取得的最優值均為正數;對于極值點為零點的優化問題,果蠅算法難以解決;果蠅算法極易陷入局部極值點。為了使FOA的優化性能得到提高,在本文中將引入以下的改進策略:
(1) 在味道濃度判定值中加入一個逃逸參數[10],使得候選集Si能夠取到負值。
(2) 將果蠅個體的搜索半徑改為自適應值[11]來平衡算法的全局搜索能力和局部搜索能力,提高算法執行效率。
(3) 將細菌覓食算法中的細菌遷徙操作自適應地引入到果蠅算法[12]中來提高算法跳出局部極值的能力。
改進果蠅算法的迭代尋優步驟如下[10-14]:
Step1設定初始參數,包括果蠅種群規模Sizepop,迭代次數Maxgen,可行閾值范圍內隨機設定果蠅群體的初始位置。
Step2設定果蠅個體利用嗅覺器官尋找食物的隨機方向和距離。
Xi=X_axis+L
Yi=Y_axis+L
Zi=Z_axis+L
(6)

Step3計算個體果蠅到原點(0,0)的距離Di,將Di的倒數賦值給味道濃度判定值Si。
(7)
式中:δ是[0,1]之間的隨機數。
Step4求解味道濃度Smelli。將上個步驟中求得的Si代入到味道濃度判定函數Function中進行計算,求得Smelli。
Smelli=Function(Si)
(8)
Step5根據個體果蠅對應的味道濃度值,得到味道濃度的最小值、最大值以及最小值、最大值所在的位置。
[bestSmellbestIndex]=min(Smell)
[worstSmellworstIndex]=min(Smell)
(9)
Step6將味道濃度最小的值及其位置分別賦值給相應的變量,其余的果蠅利用視覺飛向該位置。
Smellbest=bestSmell
Smellworst=worstSmell
X_axis=X(bestIndex)
Y_axis=Y(bestIndex)
Z_axis=Z(bestIndex)
(10)
Step7記錄并保留最佳味道濃度值bestSmell,更新進化停滯步數t,記錄并且保留最差味道濃度值worstSmell。
if(bestSmell {Smellbest=bestSmell;t=0} else{t=t+1;Smellworst=worstSmell} (11) Step8判斷t P(i)=(Smellbest-Smell(i))/ ((Smellbest-Smellworst)×P) (12) 計算得到每個果蠅個體的遷徙概率P(i),并根據遺傳算法中的輪盤賭方式來選擇需要遷徙的個體,將需遷徙的個體重新分配至尋優空間,而未遷徙的個體轉向Step 9。 Step9更新果蠅個體位置Xi、Yi、Zi。 Xi=XbestIndex+L Yi=YbestIndex+L Zi=ZbestIndex+L (13) Step10進入迭代尋優,重復執行Step 3-Step 7。判斷最佳味道濃度是否達到精度要求。若是,結束算法;否則,判斷當前迭代次數小于最大迭代數Maxgen,若是則執行Step 8-Step 9。 BP神經網絡是基于誤差反向傳播的多層前饋神經網絡,利用BP神經網絡的非線性和動態性,可以通過調整網絡連接的權值和閾值,以任意精度逼近任何一個連續函數[13]。因此可應用BP神經網絡學習和模擬股票市場的交易模式,發現股票的內在運行規律,從而得到股票價格隨時間的變化的函數關系[15]。 然而,BP神經網絡在訓練時容易出現以下問題:BP神經網絡對隱含節點、初始的權重和閾值十分敏感,一旦初始權值和閾值選取不當,可能導致在搜索全局最小值時陷入局部極小值;在訓練數據集較大的情況下,由于學習速率值較小導致系統收斂速度下降和訓練周期延長。上述的問題在一定程度上都將影響模型的預測精度,為改善上述問題,引入改進果蠅算法,通過改進果蠅算法在一定范圍內搜索出一組使得味道濃度判定值(適應度值)最小的網絡連接權值和閾值作為BP神經網絡的初始值[15],降低BP神經網絡的預測誤差,提高預測精度。 采用改進果蠅算法優化BP神經網絡的計算流程如圖2所示。 圖2 IFOA優化BP神經網絡流程圖 采用IFOA對BP神經網絡進行優化的過程包括BP神經網絡結構的確定、果蠅算法優化和BP 神經網絡的訓練預測。首先,為了實現IFOA對BP神經網絡的優化,必須確定BP神經網絡的結構。其次,采取改進的果蠅算法對BP神經網絡的權值和閾值迭代尋優,得到IFOA優化后的最優權值和閾值。最后,通過對樣本數據的訓練建立BP神經網絡預測模型并實現股票價格的預測。 基于PCA-IFOA-BP神經網絡的股票價格預測算法步驟如下: (1) 選取股票歷史數據,確定股票價格影響指標,并歸一化處理樣本數據。 (2) 對歸一化處理后的樣本數據進行主成分分析,根據各主成分解釋總方差的占比,選擇主成分的個數。根據主成分的個數,確定 BP神經網絡的輸入變量、輸出變量以及輸入層、隱含層以及輸出層的各層神經元個數。 (3) 初始化模型參數。確定IFOA的種群規模Sizepop,最大迭代次數Maxgen,初始步長L1,細菌遷徙概率P,進化停滯步數T。確定改進果蠅算法濃度判定函數為: (14) (4) 采用改進的果蠅算法優化BP神經網絡。通過計算果蠅味道濃度值的大小,尋找使得濃度判定函數值最小的最優果蠅個體,記錄其位置及最優果蠅味道濃度值,并根據果蠅群體進化停滯情況,判斷是否進行遷徙操作[12]。迭代循環,直至最優味道濃度值小于指定值或達到最大迭代次數,即找到最優的權值和閾值。 (5) 利用得到的最優的權值和閾值對樣本數據進行訓練,得到BP神經網絡預測模型后,對測試樣本數據進行測試。 本文選取了2014年9月24日至2017年2月24日之間的共605天的上證指數交易數據作為實驗數據。輸入變量中包括股票價格歷史數據以及技術指標,分別為股票的開盤價、收盤價、最高價、最低價、漲跌、漲跌幅、成交額、成交量MACD(平滑異同移動平均線)、KDJ(隨機指數)、RSI(相對強弱指數)、W&R(威廉指標)、DMI(動向指標)、BIAS(乖離率)、OBV(能量潮)、CCI(順勢指標)、ROC(變動速率指標)、CR(中間意愿指標)、BOLL(布林線)。部分股票交易數據如表1所示。 選取原始數據前550天的股票歷史數據作為訓練樣本,后55天的數據作為測試樣本。股票預測可選取5天、10天、15天等作為一個預測周期,為實現較為精確的預測,將選取5天為一個周期實現股票價格的分析預測,即通過前五天的股票數據來預測后一天的收盤價格,所以最終形成的訓練樣本為545組,測試樣本為50組。 表1 股票交易數據表 BP神經網絡所輸入的初始值可能會影響模型的收斂速度以及預測精度。所以,在采用BP神經網絡建立模型前,需要對輸入數據進行歸一化處理。針對每一個輸入變量采用如下歸一化處理公式進行處理,從而將數據轉化成[0,1]之間的數字。 (15) 式中:x′是歸一化后數據,x為樣本數據,xmax和xmin分別為x的最大值和最小值。 按照主成分分析的步驟對歸一化后的19個輸入變量進行主成分分析,表2是經過PCA提取后,各個主成分總共能解釋原始變量總方差的百分比。 表2 主成分分析結果表 由表2可以看出,前5個主成分的累積百分比達到了92.474%,即共能解釋原始變量的總方差占比達到90%以上,可以概括原始數據的大部分信息,故只采用前面5個主成分進行后續實驗。 采用改進果蠅算法對BP神經網絡的初始閾值和權值進行迭代尋優,使用Python3.6編程實現模型算法。算法相關參數的設置如下: 改進果蠅算法的參數設置為:果蠅群體隨機初始化位置為[-5,5],最大迭代次數Maxgen=500,果蠅群體初始規模Sizepop=50,初始步長L1=4,遷徙概率P=0.25,進化停滯步數T=5。 BP神經網絡算法的參數設置為:采用3層結構,由PCA輸出的主成分為5個,以5天為一周期實現價格預測結果可知輸入層神經元個數設置為25個;通過誤差計算,求得最佳隱藏層神經元個數為8個;輸出層神經元個數為1個,表示收盤指數。設置隱含層和輸出層的激活函數分別為tanh和purelin,系統訓練誤差為1e-5,學習率為0.4,最大訓練次數為1 000次。 為了更好地說明本文提出的PCA-IFOA-BP神經網絡模型具備有更好的預測性能,本文還將采用傳統BP神經網絡,PCA-BP神經網絡以及PCA-FOA-BP神經網絡三種模型對股票價格進行預測。 圖3為訓練集在果蠅尋優過程中適應度值隨著迭代次數變化的情況。 圖3 適應度值變化圖 由圖3可知,在迭代初期,相比于FOA,采用IFOA時,適應度值能夠快速收斂到一個較小值,隨著迭代次數的增加,改進的果蠅算法能夠在一定程度上跳出局部最優,搜尋全局最優。此外,IFOA的最優適應度值(收斂值)明顯優于FOA的最優適應度值(收斂值)。綜上,IFOA較FOA有著更快的收斂速度和更好的全局尋優能力。 在采用IFOA和FOA分別對BP神經網絡的權值和閾值參數優化后,得到了最優的初始權值和閾值,將權值和閾值代入到BP神經網絡中進行模型訓練,并對股票價格進行預測。BP神經網絡、PCA-BP神經網絡、PCA-FOA-BP神經網絡以及PCA-IFOA-BP神經網絡四種算法的訓練曲線和預測結果分別如圖4和圖5所示。 圖4 BP網絡訓練曲線 圖5 預測結果圖 由圖4可以看出,經過IFOA優化后的BP神經網絡的收斂速度最快,且IFOA優化后的BP神經網絡具有更小的訓練誤差。由圖5可以看出,采用PCA-IFOA-BP神經網絡的股票預測結果的總體趨勢與實際股票價格趨勢基本一致,且相較于PCA-FOA-BP神經網絡模型、 PCA-BP神經網絡模型、BP神經網絡模型的預測結果,PCA-IFOA-BP神經網絡模型的預測結果更加接近實際值,具有更小的預測誤差,其更好地實現了股票價格的預測。 本文將采用均方誤差MSE(Mean Square Error)和平均絕對誤差(Mean Absolute Error)作為評價指標來評價模型的有效性。MSE和MAE的定義分別為: (16) (17) 式中:fi表示模型的預測結果,yi表示真實值。各個模型的預測誤差值如表3所示。 表3 均方誤差和平均絕對誤差結果表 由表3可知,從MSE和MAE兩個評價指標來看,BP、PCA-BP、PCA-FOA-BP、PCA-IFOA-BP的預測誤差均逐漸降低。故相比于BP、PCA-BP、PCA-FOA-BP,本文提出的PCA-IFOA-BP具有更高的預測精度。 本文提出了一種基于PCA和IFOA-BP神經網絡的股價預測模型。首先,采用主成分分析法對樣本數據進行降維處理,有效減少BP神經網絡的輸入個數。其次,通過改進的FOA算法優化BP神經網絡的結構參數,相比于FOA,IFOA的收斂速度和求解精度均有明顯的提升。將基于PCA和IFOA-BP神經網絡模型應用于股票價格預測,同時將該模型與BP神經網絡模型、PCA-BP模型、PCA-FOA-BP模型進行了對比。從仿真結果可知,PCA-IFOA-BP神經網絡模型較其他模型具有更快的收斂速度和更高的預測精度,能夠較好地反映股票價格的漲跌情況,為投資者提供合理有效的參考。1.3 基于IFOA的BP神經網絡參數優化

2 股票價格預測步驟

3 實驗仿真
3.1 數據選取

3.2 歸一化處理
3.3 PCA

3.4 改進果蠅算法優化BP神經網絡

3.5 股票價格預測


3.6 模型預測性能對比分析

4 結 語