林天華,祁旭陽,張倩倩,趙 霞
(1河北經貿大學 信息技術學院,石家莊 050061;2河北經貿大學 經管實驗中心,石家莊 050061)
股票是市場經濟的重要體現,在一定程度上反映著我國的經濟發展狀況,在經濟發展走勢分析中發揮著重要作用。滬深300指數是股票市場的重要指數之一,它能夠反映滬深兩市市場整體表現和價格變動。預測滬深300指數在指導滬深兩市個股投資和分析滬深市場變化等方面具有重要意義。預測滬深300指數的研究方法主要分為三種,分別是基本面分析法、技術分析法和量化分析法。其中量化分析法是利用計算機技術進行統計、數值模擬,進而研究證券數據的一種方法[1]。該方法分析的數據量大、形成的模型嚴格,因此能夠取得較好的分析效果。
將機器學習、神經網絡等現代預測方法應用于股指的分析和預測是當前的一個研究熱點。熊濤[2]等提出基于自組織神經網絡(Self Organizing Neural Network,SOM)和支持向量機(Support Vector Machine,SVM)的多步預測方法,即先用SOM對滬深300指數序列進行聚類,隨后基于劃分后的數據集分別構建SVM,得到多步預測模型,結果表明該模型的預測效果要好于單一的SVM。唐艷琴[3]等為解決基于SVM的預測模型復雜、耗時長的問題,提出了一種基于多輸出的學習方法,該模型在預測滬深300指數時比SVM預測的均值方差提高了約10倍,運行時長也減少了近3/4。文獻[4]提出了使用多支持向量機對股指進行混合頻率抽樣預測方法。文獻[5]提出將夏普比率引入到SVM股指預測中,提升投資回報。周榮謙[6]提出的基于Morlet小波核函數SVM的滬深300指數預測方法,得到了較低的RMSE,預測效果較好。文獻[7]結合小波變異的混合函數連接人工神經網絡和粒子群優化算法,對滬深300指數進行了預測。文獻[8]和文獻[9]分別使用ModAugNet框架和多隱層人工神經網絡混合模型對標準普爾500指數進行預測,預測誤差均較低。戴德寶等[10]使用文本挖掘和情感分析方法,生成投資者情緒時間序列,并使用SVM和神經網絡對上證投資者情緒綜合指數進行預測。馮宇旭[11]等提出的基于長短期記憶神經網絡的滬深300指數預測方法,比同一測試集上的Adaboost算法得到的RMSE要低。文獻[12]提出特征值歸一化加權多線性主成分分析對恒生指數進行特征提取,并使用SVM預測。文獻[13]將logistic回歸(LR)模型級聯到梯度增強決策樹(Gradient Boosting Decision Tree,GBDT)模型上,由此構成股指預測模型,并對上證指數、納斯達克指數和標準普爾500指數進行預測,預測準確率較高。
綜上所述,現有文獻中使用機器學習算法對滬深300指數預測較少,且僅有的研究得到的預測效果也欠佳。模型樹是機器學習中的一種算法,從理論上看,相較于其它機器學習算法,它具有葉子節點是分段線性函數的特性,能夠更好得擬合連續型數據,得到較好的預測效果,從而更適用于預測領域。在應用方面,模型樹算法在眾多數值型變量的預測問題中,證實了其有理想的預測性能。張建明[14]等將模型樹算法用于汽輪機汽耗性預測、GOYAL M K[15]等將模型樹算法應用于閘下沖刷預測、李建更[16]提出用模型樹預測PM2.5濃度,均取得了較好的預測效果,證實了它在連續值預測方面的可行性。因此,本文將基于模型樹算法構建預測模型,改進模型樹的分裂算法,使其適用于滬深300指數預測,提高預測的準確度,這在理論分析和實際應用中都具有重要意義。
本文使用目前常見的基于最小損失函數的模型樹算法進行證券數據分裂,并針對證券數據的特征進行改進,提出了基于最大離差分裂算法的模型樹。
基于最小損失函數的模型樹是分類回歸樹(Classification And Regression Trees,CART)的變體,既可以用于分類也可以用于回歸。其對樣本數據集進行二分遞歸分裂,最終形成一棵以葉節點為分段線性函數的二叉樹,并對生成的模型樹進行后剪枝,得到最優模型樹。模型樹作為回歸模型時,給定數據集D={(x1,y1),...,(xi,yi),...,(xn,yn)},則生成初始模型樹M T0的步驟如下:
Step 1求解式(1),得到最優的特征A和特征分裂點s,

其中,c1為數據集D1的均值,c2為數據集D2的均值。
Step 2用選定的(A,s)將當前數據集劃分成D1和D2兩個數據集。
Step 3分別對D1和D2兩個數據集進行線性回歸,得到分段線性函數f1和f2,作為當前父節點的兩個子節點。
Step 4對每個子節點執行上述步驟,直至滿足停止條件。
Step 5輸出生成的模型樹M T0。
直接采用生成的M T0做預測,往往會產生過擬合現象,需要對其進行剪枝操作,但又要防止剪掉一些節點后導致預測的誤差增加。因此,采用代價復雜度剪枝算法進行后剪枝。具體算法如下:
輸入生成的模型樹M T0
輸出最優模型樹M T
Step 1設k=0,M T=M T0,γ=+∞。
Step 2自下而上遍歷每個內部節點t,并計算和整體損失函數的減少程度g(t)。計算公式見式(2)和(3)。

Step 3自上而下訪問內部節點。若g(t)=γ,則剪去該分支,得到樹M Tt。
Step 4設k=k+1,γk=γ,M Tk=M Tt。
Step 5如果M Tt不是由根節點單獨構成的樹,則回到Step 3。
Step 6使用交叉驗證法在子樹序列M T1,M T2,…,M Tn中選取最優子樹M T。
由于基于最小損失函數的模型樹計算得出的分裂點不理想(如圖2),導致預測效果不好,故對其分裂算法進行改進,提出最大離差分裂算法,使得其能夠適用于證券數據的分裂,提高預測的準確度。
基于最大離差分裂算法的模型樹的主要算法流程如下:
輸入滬深300指數數據集Y
Step 1對全體滬深300指數數據Y進行線性回歸,得到初始的線性回歸直線Lparent及對應的線性回歸函數yline。Lparent與實際值的首次和最后一次交點,分別為s t ar t和end。
Step 2搜索分裂屬性。對已構建的線性回歸函數搜索分裂屬性,并將分裂屬性取并集,即回歸屬性集合。
Step 3生成分裂點和線性回歸函數。若第i個交易日在start和end之間,即i∈[st ar t,end],則從滬深300指數數據中選擇與Lparent上的點距離最遠的點,作為分裂點spli tPos,其計算方法如式(4)、(5)。

以此將數據分為左右兩段,并對兩段數據分別進行線性回歸,得到Lleft和Lright。線性回歸函數為yleft和yright,二者分別作為父節點的左右子樹。將得到的Lright作為Lparent,yright作為yline。
Step 4遍歷遞歸,生成模型樹。遞歸執行Step2和Step3,至達到閾值條件,即end-s t ar t<10,R>0.9。其中R為最大相關系數,最后生成的右子樹為Llatest。
Step 5構建好模型樹M T,使用滬深300測試集數據進行預測。以Llatest作線性回歸預測,計算并輸出預測衡量指標,則算法結束。
最大離差分裂算法流程如圖1所示。
圖1中,yline為原始滬深300數據進行線性回歸得到的回歸方程;i表示第i個交易日;yi表示第i個交易日的真實值;ylinei表示第i個交易日的線性回歸值;s pl i t Pos表示分裂點;R為最大相關系數。

圖1 最大離差分裂算法流程圖Fig.1 Maximum deviation splitting algorithm flow chart
本文使用均方誤差MSE,均方根誤差RMSE和平均絕對百分比誤差MAPE作為預測評價指標,用于描述預測值偏離真實值的程度。三者的計算方法如公式(6)~公式(8)。


其中,y(i)為第i個交易日滬深300指數收盤價的真實值;y^(i)為第i個交易日滬深300指數收盤價的預測值;n為樣本總數。
由上述公式可知,三者的值越小則說明模型預測的結果誤差越小,即與真實值越接近,預測效果也越好。
2.2.1 MTDM算法分組對比樣本數據的選取
本文選取兩組時間段的滬深300指數日收盤價,作為訓練樣本數據和測試樣本數據。2007年8月15日至2008年11月6日的300個交易日的收盤價作為第一組的訓練樣本數據,2008年11月7日至2014年7月16日的1 381個交易日的收盤價作為第一組的測試樣本數據。2013年4月20日至2014年7月16日的300個交易日的收盤價作為第二組的訓練樣本數據,2014年7月17日至2019年1月4日的1 092個交易日的收盤價作為第二組的測試樣本數據。
在兩組數據的測試樣本數據中,均包含了完整的上漲牛市數據、下跌的熊市數據以及震蕩數據,使得實驗能充分包含前述幾種情況,更好地驗證模型預測的有效性。
2.2.2 MTDM算法與其他算法對比樣本數據的選取
在與其他預測算法進行對比時,保持與原實驗一致的時間段數據作為數據樣本,即將文獻[11]提出的LSTM/Adaboost、SVR/LSTM/Adaboost回歸集成算法應用于2012年5月3日~2017年9月4日的滬深300指數的預測;文獻[6]提出的PSO算法優化,應用于2015年12月11日~2016年11月12日的滬深300指數的預測。將基于最大離差分裂算法的模型樹的滬深300指數模型分別用于上述兩個時間段,其中訓練樣本數據在此基礎上分別增加300個交易日收盤價數據,即2011年2月1日~2012年5月2日、2014年9月17日~2016年11月11日分別作為二者的訓練樣本數據,從而保持對比實驗的一致性。
2.2.3 數據預處理
在預測時,由于原始數據差距較大,直接輸入模型樹預測模型,預測誤差較大。為保證模型測預效果,采用歸一化方法處理這些數據,經過線性變換,可以映射到[0,1]范圍內,歸一化表達式如公式(9):

其中,x'為歸一化后的數據,xmin、xmax分別為樣本數據的最小值和最大值。
為保證展示效果,在此與LSTM算法預測方法對比的數據,以2011年2月1日至2017年9月4日,共1603個交易日的滬深300收盤價數據為例,說明分裂過程;以該對比實驗第一年的測試數據,即2012年5月3日至2013年11月5日共365個樣本數據說明預測效果。
(1)基于最小損失函數的模型樹分裂效果
基于最小損失函數的模型樹分裂效果如圖2所示。

圖2 基于MTLLF算法的分裂效果圖Fig.2 Splitting effect based on MTLLF algorithm
其中,折線表示真實值;圓點表示回歸分裂點;虛線表示相鄰分裂點的連接線。由圖2可見,分裂點連接線的走勢沒有反映滬深300指數的走勢特征,導致分裂效果不好,不能夠很好地應用于證券數據分析當中。
(2)基于最大離差分裂算法的模型樹分裂效果
基于最大離差分裂算法的模型樹分裂效果如圖3所示。

圖3 基于MTDM算法的分裂效果圖Fig.3 Split effect diagram based on MTDM algorithm
由圖3可以看出,每個圓點都落在代表真實值折線的拐點處,分裂點連接線的走勢與滬深300指數的走勢基本契合,分裂效果理想,適應證券數據的特征,為后續的預測奠定了基礎。
(3)基于最大離差分裂算法模型樹的預測效果
使用基于最大離差分裂算法的模型樹,對滬深300數據進行預測,得到的預測結果如圖4所示。

圖4 基于MTDM算法的預測效果圖Fig.4 Forecast effect diagram based on MTDM algorithm
由圖4可見,基于MTDM算法的預測結果接近真實值,與真實值的擬合程度較高,預測效果較好。
(1)MTDM算法分組實驗預測性能對比
使用MTDM算法模型對前述兩組實驗數據進行預測,得到的MSE、RMSE和MAPE見表1。

表1 分組實驗性能對比表Tab.1 Performance comparison table of grouping experiment
由表1可知,MTDM預測方法在不同長度的時間段內的預測誤差變化較小。對于牛市、熊市以及震蕩市場數據的預測均具有較好的適用性,預測穩定性和預測精度都有較好的表現。
(2)MTDM與其他算法預測性能對比
MTDM算法與基于LSTM的預測方法以及PSO優化預測方法進行對比,得到的MSE、RMSE和MAPE分別見表2、表3。由表2、3可知,MTDM預測方法的預測誤差顯著低于其他算法,具有更好的預測效果。

表2 與基于LSTM預測方法的性能對比表Tab.2 Performance comparison table with the prediction method based on LSTM

表3 與PSO算法優化預測方法的性能對比表Tab.3 Performance comparison table with PSO algorithm optimization prediction method
本文使用最大離差分裂算法改進了模型樹,使得模型能夠適應證券數據的特征,經不同時間段的滬深300指數預測實驗驗證,以及與其他預測方法的對比,表明本模型具有良好的預測準確度和穩定性。
基于最大離差分裂算法的模型樹預測模型在找到分裂點并分裂數據后,僅用模型樹的最右子樹進行預測,丟失了兄弟節點、父節點之間的關系。下一步擬使用多叉模型樹,利用節點間的關系、最右子樹等所有分裂信息構建預測模型,進一步減小預測誤差,提高預測準確率。