李思銘,林志杰,陳 文,李宇欣,姜 永
(福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院,福州350002)
近年來,我國證券市場的高速發(fā)展催生了一批題材股,其中的高送轉(zhuǎn)這一題材無疑是中小投資者強(qiáng)烈追捧的對象。因?yàn)閷?shí)施高送轉(zhuǎn)后股價(jià)將做除權(quán)處理,投資者可以通過填權(quán)行情從二級市場的股票增值中獲利。如果我們能準(zhǔn)確預(yù)測下一年可能實(shí)施高送轉(zhuǎn)的上市公司并提前買入,這對我們投資的安全性具有很大的現(xiàn)實(shí)意義。
研究擬通過收集有關(guān)數(shù)據(jù),并采用數(shù)據(jù)挖掘方法篩選出對上市公司實(shí)施高送轉(zhuǎn)方案有較大影響的因子,然后利用這些因子建立模型來預(yù)測實(shí)施高送轉(zhuǎn)的情況。
研究的樣本選自我國上市公司3 466只股票,相關(guān)因子數(shù)據(jù)有營運(yùn)資本、投入資本、基本每股收益等,共360個(gè)因子,反映了上市公司近七年間股票盈余與公司經(jīng)營情況,共約2.4萬條樣本。
1.缺失值處理。可分為缺失值刪除和缺失值填充兩部分,當(dāng)特征屬性列缺失值超過總數(shù)的一半,就會(huì)直接刪除該列。余下的特征屬性列則根據(jù)缺失情況可分為間斷缺失和連續(xù)缺失,分別進(jìn)行均值填充和拉格朗日插值填充。
2.異常值處理。箱線圖結(jié)尾去除異常值,在Python軟件中,使用boxplot()涵數(shù),將數(shù)據(jù)中偏大、偏小的“異常數(shù)據(jù)”過濾掉。
3.數(shù)據(jù)標(biāo)準(zhǔn)化。數(shù)據(jù)的標(biāo)準(zhǔn)化是指在處理數(shù)據(jù)時(shí)統(tǒng)一不同指標(biāo)之間的量綱。常用的數(shù)據(jù)標(biāo)準(zhǔn)化有三種方法:min-max標(biāo)準(zhǔn)化、均值方差標(biāo)準(zhǔn)化、非線性歸一化,分別采用這三種變換方法對原始數(shù)據(jù)進(jìn)行數(shù)據(jù)變換,并畫出對應(yīng)變換后的特征分布圖進(jìn)行對比,發(fā)現(xiàn)經(jīng)過log函數(shù)的歸一化變換后特征分布較為服從標(biāo)準(zhǔn)正態(tài)分布,說明該種歸一化方法有助于使用梯度下降法求解最優(yōu)解的速度,提高算法的精度。
當(dāng)數(shù)據(jù)預(yù)處理完成后,需要選擇有意義的因子輸入機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練。通常來說,根據(jù)不同形式可將因子選擇方法分為三種:Filter(過濾法)、Wrapper(包裝法)、Embedded(嵌入法)。研究采用嵌入法,其基本思路是用機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個(gè)因子的權(quán)值系數(shù),根據(jù)權(quán)值系數(shù)從大到小選擇因子,這些權(quán)值系數(shù)往往代表了因子對于模型的某種貢獻(xiàn)或某種重要性。
在探究對高送轉(zhuǎn)有重要影響的因素的過程中,為了衡量上市公司是否真正具備高送轉(zhuǎn)能力,引入一個(gè)可量化的送轉(zhuǎn)股能力(記為C)因子,其計(jì)算公式為:
C={資本公積+max[0,max(0,盈余公積-0.25×總股本)+未分配利潤]}/總股本
采用嵌入法挑選特征,可通過Python中的SelectFromModel算法來實(shí)現(xiàn),而SelectFromModel算法又包括L1-based feature selection和Tree-based feature selection兩種類型,研究采用第二種,基于LightGBM分類器利用SelectFromModel方法進(jìn)行因子篩選,特征選擇的閾值為“3mean”,效果最好。最終篩選出的重要因子有25個(gè),各個(gè)因子對分類模型預(yù)測結(jié)果的貢獻(xiàn)度,如圖1所示。
按照其對模型重要程度排名前9的重要因子是:每股送轉(zhuǎn)、成交金額_mean、息稅折舊攤銷前利潤、銷售費(fèi)用/營業(yè)總收入(%)、實(shí)收資本(或股本)、基本每股收益同必增長(%)、基本每股收益、成交量_std、總資產(chǎn)相對年初增長(%)。
圖1重要因子的貢獻(xiàn)程度
對預(yù)測模型貢獻(xiàn)度中等的共有14個(gè),分別是投資支出/折舊和攤銷、總資產(chǎn)凈利率(%)、成交金額_std、ebitda/營業(yè)總收入(%)、上市年限、每股未分配利潤(元/股)、最高價(jià)_mean、凈資產(chǎn)相對年初增長(%)、送轉(zhuǎn)股能力、成交量_mean、最低價(jià)_mean、開盤價(jià)_mean、年份(年末)、每股凈資產(chǎn)(元/股)。
為了更直觀了解篩選后因子的含義,以促進(jìn)對上市公司實(shí)施高送轉(zhuǎn)動(dòng)因的認(rèn)識(shí),將影響高送轉(zhuǎn)的因子分為三類:基本因子、成長因子、時(shí)序因子,[1]具體劃分如表1。
表1因子分類
從分類情況來看,對預(yù)測模型貢獻(xiàn)率占比最大的是基本因子,共包含4個(gè)重要因子,其次是成長因子,包含了3個(gè)重要因子,最后才是時(shí)序因子,只含有2個(gè)重要因子。這說明在預(yù)測模型中,這3個(gè)方面因子的重要性排序應(yīng)該是:基本因子>成長因子>時(shí)序因子。
從經(jīng)濟(jì)學(xué)的意義上看,首先影響高送轉(zhuǎn)的基本因子反映了該公司的整體資本、運(yùn)營收入情況,對于是否實(shí)行高送轉(zhuǎn)是具有關(guān)鍵決定因素的因子,而成長因子表現(xiàn)了每股股票的實(shí)時(shí)潛力與本質(zhì)特征,對高送轉(zhuǎn)是具有重大的影響力,最后的時(shí)序因子反映了上市股票的變化趨勢,與當(dāng)前市場的變化情況息息相關(guān),因此,對“高送轉(zhuǎn)”也有不可忽視的作用,特別是當(dāng)數(shù)據(jù)中存在缺失值時(shí),可以通過對時(shí)序因子的預(yù)測來估計(jì)未來的股票走勢。
XGBoost算法是一種大規(guī)模并行提升樹工具,應(yīng)用的算法是GBDT梯度提升決策樹的改進(jìn),可用于分類和回歸問題。該算法主要將多個(gè)分類回歸樹進(jìn)行集成,對損失函數(shù)進(jìn)行優(yōu)化,通過設(shè)置閾值或參數(shù),達(dá)到一定條件時(shí)停止分裂。LightGBM算法是一個(gè)基于樹學(xué)習(xí)的梯度提升框架。其原理是基于直方圖的決策樹算法,基本思想是將連續(xù)的浮點(diǎn)特征值離散成k個(gè)整數(shù),并構(gòu)造一個(gè)寬度為k的直方圖,在遍歷數(shù)據(jù)時(shí)用離散值作為指標(biāo),在直方圖中積累統(tǒng)計(jì)信息,然后根據(jù)直方圖的離散值進(jìn)行遍歷,尋找最優(yōu)分割點(diǎn)。CatBoost算法是一種基于對稱樹的GBDT框架,具有參數(shù)少、支持類別變量、精度高等優(yōu)點(diǎn),其主要目的是合理地處理類別特征的問題。
XGBoost作為一款經(jīng)過優(yōu)化的分布式梯度提升庫,具有高效,靈活和高可移植性的特點(diǎn)。LightGBM是一個(gè)快速高效、低內(nèi)存占用、高準(zhǔn)確度、支持并行和大規(guī)模數(shù)據(jù)處理的數(shù)據(jù)科學(xué)工具。CatBoost性能卓越,具有較強(qiáng)的魯棒性,并降低了過度擬合的機(jī)會(huì),方便處理類別型、數(shù)值型特征。在實(shí)際應(yīng)用中,我們使用這三種算法對進(jìn)行因子篩選后的數(shù)據(jù)進(jìn)行模型預(yù)測,得到的各個(gè)算法的預(yù)測得分,如圖2。
圖2三種算法正確率比較
由此可見,LightGBM得分最好,CatBoost緊隨其后,幾乎與LightGBM不相上下,而XGBoost相較于其他兩個(gè)算法表現(xiàn)力會(huì)差一些。因此,在后續(xù)的模型構(gòu)建與提升中,選擇LightGBM算法進(jìn)行模型的搭建。
模型一:基于LightGBM算法的“高送轉(zhuǎn)”預(yù)測模型一,預(yù)測準(zhǔn)確率約為88.63%。其中,將標(biāo)簽1預(yù)測為0的有361個(gè),可以看出模型對于數(shù)據(jù)的學(xué)習(xí)效果欠佳,模型的復(fù)雜度還不夠,欠擬合。
模型二:融合模型(Stacking),該方法的思想是通過對多個(gè)單模型融合以提升整體性能。在Stacking方法中,把個(gè)體學(xué)習(xí)器稱為初級學(xué)習(xí)器,用于結(jié)合的學(xué)習(xí)器稱為次級學(xué)習(xí)器,次級學(xué)習(xí)器用于訓(xùn)練的數(shù)據(jù)稱為次級訓(xùn)練集,次級訓(xùn)練集在訓(xùn)練集上用初級學(xué)習(xí)器得到。在融合模型中,選擇LightGBM算法、CatBoost算法為初級學(xué)習(xí)器,Logistic回歸為次級學(xué)習(xí)器,由此構(gòu)成基于Stacking方法的“高送轉(zhuǎn)”預(yù)測模型二,其預(yù)測準(zhǔn)確率約為88.69%。
模型三:在模型二的基礎(chǔ)上,考慮到數(shù)據(jù)中樣本不平衡的問題,故采取SMOTE方法對數(shù)據(jù)較少的類別進(jìn)行過采樣,基于LightGBM算法進(jìn)行模型預(yù)測,通過代碼結(jié)果可知該方法對預(yù)測模型有一定的提升。故將過采樣-LightGBM算法與模型二相融合,得到模型三,該模型算法流程為。
1.提取特征和預(yù)處理?;贚ightGBM分類器利用SelectFromModel方法進(jìn)行因子篩選,使用箱線圖截尾去除異常值,對數(shù)據(jù)進(jìn)行歸一化變換,進(jìn)行缺失值填充比較預(yù)測精度。
2.對LightGBM、CatBoost和過采樣-LightGBM算法分別進(jìn)行參數(shù)優(yōu)化工作,用于Stacking模型。
3.模型構(gòu)建。一是使用SMOTE進(jìn)行樣本過采樣,分別輸入LightGBM算法、CatBoost算法中比較,確定最優(yōu)過采樣比例,優(yōu)化LightGBM、CatBoost、過采樣-LightGBM算法的參數(shù),作為初級學(xué)習(xí)器。二是基于三個(gè)初級學(xué)習(xí)器對訓(xùn)練集進(jìn)行訓(xùn)練,然后用于預(yù)測訓(xùn)練集train和測試集test的標(biāo)簽列,將得到預(yù)測結(jié)果進(jìn)行合并可得新的訓(xùn)練集train2和測試集test2。三是用次級學(xué)習(xí)器Logistic回歸訓(xùn)練train2和預(yù)測test2,得到最終的標(biāo)簽列pred。
該模型預(yù)測準(zhǔn)確率約為88.69%,詳見圖3的混淆矩陣。
圖3模型三預(yù)測結(jié)果的混淆矩陣
利用建立的預(yù)測模型三,根據(jù)現(xiàn)有的前七年的數(shù)據(jù)對第八年上市公式實(shí)施“高送轉(zhuǎn)”的情況進(jìn)行預(yù)測,得到第八年實(shí)施“高送轉(zhuǎn)”的股票共有253只,依概率排序列在前30位的股票編號是:1346、1835、749、3295、3076、1754、3243、2881、3217、2703、621、3127、1616、3220、2040、570、3026、2359、3238、1607、1122、1524、2601、874、258、10、2438、1095、1765、191。預(yù)測準(zhǔn)確率為91.06%。
1.五折交叉驗(yàn)證。將全部訓(xùn)練集分成5個(gè)不相交的子集,相應(yīng)的子集稱作;每次從分好的子集中里面,拿出一個(gè)作為測試集,其它4個(gè)作為訓(xùn)練集,根據(jù)訓(xùn)練訓(xùn)練出模型或者假設(shè)函數(shù);把這個(gè)模型放到測試集上,得到分類率,并計(jì)算5次求得的分類率的平均值,作為該模型真實(shí)分類率。這個(gè)方法充分利用了所有樣本,應(yīng)用于預(yù)測模型一,得到預(yù)測準(zhǔn)確率為:[87.43,87.95,88.42,88.00,87.66],平均分:87.89,這說明模型的表現(xiàn)比較穩(wěn)定。
2.時(shí)間序列交叉驗(yàn)證??紤]到模型是以年份為單位進(jìn)行預(yù)測,屬于時(shí)間序列問題,不同年份的樣本可能對模型的影響不同,為檢驗(yàn)算法的泛化能力,因此,對年份為二、三、四、五、六年的“高送轉(zhuǎn)”情況都進(jìn)行預(yù)測。這個(gè)方法要求具有平穩(wěn)時(shí)間序列,即時(shí)間序列應(yīng)滿足:常量的均值、常量的方差、與時(shí)間t無關(guān)的自協(xié)方差。將該方法應(yīng)用于預(yù)測模型,得到預(yù)測準(zhǔn)確率為:[87.43,85.71,86.72,89.35,88.29],平均分:87.50。
1.綜合評價(jià)。利用精確率(precision)、召回率(recall)以及F1分?jǐn)?shù)(F1_Score)對模型三的預(yù)測的結(jié)果進(jìn)行綜合的評價(jià)。
表2綜合評價(jià)指標(biāo)
2.泛化能力評價(jià)。模型預(yù)測不僅希望對是否實(shí)施“高送轉(zhuǎn)”進(jìn)行正確預(yù)測,同時(shí)還希望預(yù)測模型具有穩(wěn)定的表現(xiàn),所以接下來引入ROC曲線對算法模型的泛化能力進(jìn)行評估。
圖4預(yù)測算法的ROC曲線
當(dāng)AUC越趨近于1,即ROC曲線下覆蓋的總面積越大,ROC曲線越接近于y軸,分類器的預(yù)測泛化能力越好。從圖中可以看出預(yù)測模型的泛化能力較好。
研究的預(yù)測模型主要是基于集成的決策樹(CART)算法,該算法應(yīng)用的理論是信息學(xué)理論中熵的概念,通過對預(yù)測結(jié)果的綜合評價(jià),可以看出模型的泛化能力不錯(cuò),但是模型的學(xué)習(xí)的復(fù)雜度還不夠深。改進(jìn)建議:在融合模型中可以通過引入更為復(fù)雜的算法,如神經(jīng)網(wǎng)絡(luò)算法、支持向量機(jī),以提高模型的復(fù)雜度,從而提升模型預(yù)測精度。