李昊博 西南大學
股票在很大程度上是一種金融活動、國民經濟的一種體現,在文化、經濟生活中有著非常重要的功能,無論是對國家、社會抑或是人民都有著重要影響。如果我們可以通過推理演算的方式預測股票市場發展方向,這會對投資者大有裨益。
股票價格預測需要對股票市場有深刻而全面的認識的證券分析師,根據股票市場的發展,對股票市場未來的發展方向和漲跌幅度作出全面的預測。近年來,隨著大數據分析、人工智能等技術的飛速發展,相關研究人員開始將機器學習理論、數據挖掘等方法應用在股票趨勢預測領域研究中,通過從大量金融統計數據中挖掘重要信息,從而為股民們提供合理化建議。張倩倩(2020)對各種股票預測方法研究進行綜述[1],介紹了基于傳統時間序列和隱馬爾可夫模型的傳統預測模型、基于機器學習與深度學習的決策樹、神經網絡和組合模型等新的創新模型,對比了上述模型的優缺點,總結出一套基于神經網絡模型的股票預測法的關鍵步驟。朱磊(2016)提出假設我國股市不是弱勢有效市場,對可能影響明天開盤價和收盤價的8 個因素進行相關性檢驗,最后通過格蘭杰因果檢驗選出明天收盤價和開盤價的格蘭杰導因,可是單純只是使用了單一的支持向量機算法[2]。羅必輝(2016)引入流形學習中的線性局部切空間排列算法[3]文章本次采用改良的支持向量回歸(svr)算法對股票價格進行預測。Stacking 集成學習模型的出現,通過將不同模型進行集合來進一步提升模型總體性能,為股票趨勢預測方法提供了良好思路。盛杰(2018)等人使用 Stacking 集成學習算法組合 Logistic,SVM,K 近鄰和 CART決策樹多個基本算法進行學習形成分類器,最終結果顯示準確率比單一算法的分類器效果提高了94%[4]。Stacking 在各個行業數據研究中相比較單一模型算法,效果取得了顯著的提升。
為此,本文在對股票趨勢預測研究過程中,首先深刻研究logistic 回歸、隨機森林、GBDT 算法以及SVM 算法在趨勢預測上的應用,并以此為基礎,結合實際股票數據提出了一種基于stacking 模型融合的股票趨勢預測算法。
在常規的回歸模型中,主要是闡明了自變量和因變量期望之間的線性關系。但是在分析和預測股票數據時,我們研究的變量并不是簡單的線性關系,所以我們需要使用Logistic 模型。
Logistic 模型是一種通用的回歸分析模型,常用于信息提取、疾病自主診斷、制定經濟期望以及更多其他領域。例如,尋找疾病的致病因子、計算疾病發生概率等,其中概率值實由 Sigmoid 函數計算得到,將大于指定概率值的部分分為一類,將小于指定概率值的部分分為另一類。
Logistic 回歸模型是從線性回歸算法演變而來,是用來預測有不同解釋變量構成的分類函數的概率[5]。一般情況下,logistic模型是二進制變量,其中0 代表事件不會發生,1 則代表事件將會發生。在這個模型中,一個自變量可能并不是連續變量,不過它也可以是一個類別變量。與線性回歸模型差異在于,該模型不需要自變量和因變量之間的線性關系,即也不需要因變量和誤差變量之間的正態分布。
Logistic 回歸模型方程如下:

公式中:p代表因變量y=1 的概率,為自變量(回歸系數),經由計算樣本數據獲得。
Logistic 回歸在進行股票趨勢預測過程中,構建預測變量和已有自變量的線性模型,預測變量將通過算法函數轉換成概率

Logistic 模型算法作為一種成熟穩定的預測算法,通常具有較高的預測精度。主要有以下幾個優勢。首先,Logistic 回歸計算效率高,可通過較少的數據來得到整體趨勢;其次,Logistic 回歸在數據處理過程中不易受到小噪聲的影響,魯棒性強。
隨機森林(Random Forest,RF)是一種經典的集成學習,它屬于Bagging(Bootstrap aggregating)類型,它將原始數據和決策樹劃分特征做隨機處理,并將隨機訓練數據和特征引入到決策樹的訓練過程中。這種集成算法的優點是多個弱分類器以特征方式集成在一起,比單一分類器具備更好的性能。Bagging 算法處理流程主要分為以下幾步,首先,用Bootstrap 方法進行采樣,得到多個新訓練集,再依據每個訓練集獲得一個新的弱分類器。在對新得到的樣本數據進行分類計算時,將所有由弱分類器產生的投票結果集合在一起,最終的投票分類器是得到終極分類結果。
隨機森林算法最初由美國加州大學的統計學教授Leo Breiman 在2001 年提出,它是在Bagging 的基礎上對樣本特征進行了隨機抽樣,在構造弱分類器的過程中,每個訓練集都只包含樣本部分屬性,且每個訓練集用到的屬性都不完全相同,在每個具備原樣本基本特征的新樣本上分別建立決策樹,最終通過投票形成最終分類結果。這樣可以減少決策樹和模型泛化誤差之間的相似度。采用多個弱分類器的并行投票結果以得到均值,從而保證較高的分類精度。大量的研究表明,隨機森林算法對高維數據和噪聲具備較好的處理能力。模型中每個決策樹都會產生一個獨立的結果,可以通過多棵決策樹的多個結果組合的方式生成最終預測結果[6]。
隨機森林有許多優點:該算法具有很強的適用性,可以對各種類型的數據生成高精度的分類算法。對源數據的分布要求較低,不對缺失值敏感,及時發現數據有遺失,依然可以維持準確度,因此在前期不做預處理也不會對結果造成很大影響;該算法模型訓練速度快,而且還可以并行處理,大大提高了運算速度。
GBDT 算法由 Jerome Friedman 提出并改進,采用了Boosting 的思想,也被稱為MART(Multiple Addictive Regression Tree),是經典集成學習算法的一種,其原理是通過構建多個弱學習器,通過多次迭代最終組合形成一個強學習器,并且強學習器的性能均優于其中任何一個多學習器。
該算法的基本原理是每次迭代都要減少原模型的殘差,并在殘差約簡的梯度方向上訓練新模型。因此GBDT 的每個預測函數必須采用一個序列,以串行的方式順序產生,后一個模型參數需要上一輪模型的結果。見圖1。

圖1 GDBT原理圖
假定指定訓練集的D={(x1,y1),(x2,y2)…,(xm,ym),},最大迭代次數為k,損失函數L(y,f(x))=log(1+exp(-yf(x))),其中y ∈{-1,+1},輸出時為f(x),步驟如下:
首先,初始化弱學習器:

其次,對迭代次數k=1,2,…,T,有如下操作:
(1)分別計算樣本i=1,2,…,m的負梯度誤差:

(2)通過(xi,ri)(r=1,2,…,m)等數據,擬合得到新的回歸樹,最后得到第k回歸樹,相應的葉子結點區域為Rtj(j=1,2,…,J),其中J代表回歸樹k 的葉子結點個數;
(3)對葉子區域j=1,2,…,J,計算最佳負梯度擬合值:

(4)更新強化學習器:

最后,得到強化學習器f(x)的表達式:

支持向量機算法(svm)是一種性能較好的、在小樣本和高維數據模式中具有獨特的優勢的算法。它的提出,是以支持向量機理論和結構風險最小化理論為核心,是一種新機器學習方法。支持向量機的主要策略就是為了使得結構風險最小化,數據會依據核函數被映射到一個高維或無窮維度的特征空間,而后在得到的特征空間方便對數據采用線性學習機的方法處理,最終能夠解決樣本數據在低緯空間中線性不可分的問題[7]。相較于神經網絡,SVM 算法出現過度擬合的現象的可能性更低,尤其是對于數據量小的分類問題,具有出眾的性能,解決方案更加優化。所以近些年,它在指定股票價格期望中普遍的運用。
SVM 引入特征變換的方法來將原空間中的非線性問題轉換成新空間中的線性問題。首先,要把特征向量從低維空間映射至高維空間中:

可將線性支持向量機的決策函數進行替換,得到非線性條件下的支持向量機,其分類函數為:

近年來,機器學習算法不斷發展進步,同時集成學習模型接踵而來。Stacking(堆疊)模型是由多個模型集合而成的復合機器學習模型。20 世紀90 年代以來提出的Stacking 就是一種由多種子模型復合組成的機器學習模型,通過將不同模型按一定規則進行“堆疊”來進一步提升預測性能。
Stacking 模型是由兩層模型(簡單模型組合與上層模型)組成的。第一級包括多個ml 模型,稱為主要學習者,第二級包括一個 ml 模型,稱為第二學習者。其工作方式首先由原始數據選用不同算法進行建模,各個子模型分別用建立好的參數算法對數據進行預測,輸出各自的預測結果。然后第二個學習者檢索第一個預測。通過這樣處理,次級學習器可以吸取初級學習器的優點,使得預測結果比單一模型更加精準,同時,Stacking 在搭建過程中也可避免單一模型出現的數據過擬合問題。
首先,需要對數據集進行劃分(測試集和訓練集),并添加其他學習模型進行訓練和預測。在此過程中,采用隨機抽樣的方法將訓練數據分成5 組,在利用不同模型進行預測時分別用不同的樣本組進行預測,然后在相互之間對結果進行驗證。其次,將不同模型產生的預測結果作為新的5 個特征,對次學習器再次進行學習訓練,集中前期基礎模型特點,提高預測準確性。在本文中為預測股票趨勢,分別用隨機森林、邏輯回歸、GBDT、SVM 模型進行5 折交叉驗證。每一個折疊作為一個測試集,并通過訓練其他4個折疊模型得到預測值。在五輪訓練結束后,計算五個預測值的算術平均值,并將每個預測值加入訓練集,得到最終的預測模型。
(1)選取樣本數據集,采納在較低波動環境下的股票,即快速增長和快速下跌等不穩定現象稀有的樣本數據,數據來源于平安銀行2016 年1 月1 日至2021 年2 月4 日相關技術指標的樣本數據1342 行,其中,訓練集1095 行,測試集247 行。
(2)數據特征的選擇,當前預測股票價格已有常規分析流程,同時也取得一定的成果。在特征選擇過程中,并不是所有的數據標簽對于整個模型的預測具有積極意義,不恰當的選取反而會降低模型預測的準確度,同時,選取的指標稀少,信息不足,又難以表股票市場的復雜性。因此,選取合適的技術指標對于預測市場行為具有關鍵的意義。本文選用了開盤價、最高價、最低價、收盤價、漲跌、成交量(手)作為關鍵技術指標進行分析。
在數據采樣環節后,對樣本數據進行標準化處理,并獲得時間序列中較晚的數據作為測試數據,早期的數據作為模型生成和評價的訓練數據檢查數據(特征值)是否有缺失值,刪除缺失值;檢查數據中(特征值)是否存在無限數據,若有則進行刪除;對標簽值進行檢查;重命名檢索到的標簽。將‘t’改為‘股票代碼’,‘trade’改為‘trading date’,‘open’改為‘opening price’,‘high’改為‘highest price’,‘low’改為‘closet price’,‘pre’改為‘close price’,‘change’改為‘price up or down’,‘pct’改為‘price up or down’,‘volume’改為‘volume’改為‘volume’(hand),‘amount’改為‘tover’。最后,將平安銀行每一天的漲跌情況進行特征構建,以MFI指標(MFI=100-[100/(1+PMF/NMF)])構造出一類特征:
1.典型價格(TP)=當日最高價、最低價與收盤價的算術平均值;
2.貨幣流量(MF)=典型價格(TP)×十四日內成交量;
3.如果本日貨幣流量>前一交易日的貨幣流量,則將本日貨幣流量視為正貨幣流量;
4.如果本日貨幣流量<前一交易日的貨幣流量,則將當日的貨幣流量視為負貨幣流量;
5.當MFI>80 時為超買,在其回頭向下跌破80 時,為短線賣出時機,標記為1;
6.當MFI<20 時為超賣,當其回頭向上突破20 時,為短線買進時機,標記為0。
對股票數據進行粗預測。同時,在我們粗預測中,兩種趨勢的數據并不是完全相等的,還需要進行一定的重采樣來保證樣本的平衡性,以此來保證實驗結果的準確性。
在用Stacking 方法進行數據建模過程中,把數據集1342 行劃分成訓練集和測試集,分別為1095 行和247 行。利用訓練集數據對隨機森林模型、logistic 模型、gbdt模型和 svm 模型進行了5 次交叉驗證。將訓練集中1095 行數據平均分成5 折,分別為train1,train2,train3,train4,train5,每折219 行,經過以下步驟的計算即可得到Stacking 融合后的結果。
對于隨機森林模型,保留第二、第三、第四、第五次折疊,使用第一次折疊作為驗證集得到交叉驗證結果,使用測試集得到測試結果。分別得到一維219 行的數據A1 和一維247 行的B1;
保留1、3、4、5 折訓練集,并以2 倍訓練集作為驗證集和預測測試集。一維的219 行數據 a2 和一維的247 行數據 b2;
保持第1,2,4,5 倍訓練,并使用3倍作為預測驗證集和測試集。分別得到一維219 行的數據A3 和一維247 行的B3;
保持第1,2,3,5 折的訓練集,用第4 折的訓練作為驗證集,用第4 倍的訓練作為測試集來預測。分別得到一維219 行的數據A4 和一維247 行的B4;
保持第1,2,3,4 折的訓練,用5 倍的訓練作為驗證集,用5 倍的訓練作為預測測試集。分別得到一維219 行的數據A5 和一維247 行的B5;
經過前5 輪訓練之后,將A1,A2,A3,A4,A5 這5 個對于驗證集的預測值進行縱向拼接,形成1095 行1 列的數據,記為Z1。對于測試集的 b1,b2,b3,b4,b5,求平均值,得到247 行1 列的矩陣,表示為y1。
使用同樣的方法來并行訓練SVM、GBDT、Logistic Regression 這三個模型,最終可得到Z1,Z2,Z3,Z4,Y1,Y2,Y3,Y4 的矩陣,最終把Z1,Z2,Z3,Z4 并列合并得到一個1095 行4 列的矩陣作為下一步的訓練集,Y1,Y2,Y3,Y4 并列合并得到一個247 行4 列的矩陣作為測試集;
將上一步的訓練集和測試集帶入Stacking 算法并使用Logistic Regression 作為Meta Classifier 進行最后的訓練和預測,得到最終的預測結果。
同時增添了混淆矩陣,提高了模型的真實性。這是描述分類模型在一組具有已知真值的測試數據上的性能的常用方法。混淆矩陣示意圖如圖2 所示,我們將使用混淆矩陣進行模型的評估,準確率通過(TP+TN)/(TP+TN+FP+FN)計算得到,作為評判模型好壞的指標。

圖2 混淆矩陣示意圖
我們對處理完成的數據分別使用隨機森林、邏輯回歸、GBDT 以及SVM 模型進行滾動預測,通過混淆矩陣評估方法分別計算各模型的準確率。然后采用疊加法對上述方法進行擬合,得到了較好的擬合實驗結果。
通過對比發現,Stacking 融合模型的準確率為79%要高于其他算法,不同算法準確率如表1 所示。

表1 實驗結果
本文在研究過程中,采用了基于stacking 模型將機器學習算法融合后對股票趨勢進行預測的方法。通過實驗得出本方法準確率能夠達到79%,預測股票價格的能力明顯相較于四種傳統的機器學習算法更加優秀。結果表明,基于疊加模型融合的股票趨勢預測方法對股票市場價格指數的變化趨勢進行預測是可行的。同時也有不足之處,在設計算法的過程中沒有加入風險因素,考慮其對所帶來的對股票價格的波動影響,在今后的深入研究中,會使用一些神經網絡、深度學習等模型增加對風險因素等多場景評估,進一步改進模型的適應能力。