基于数据挖掘的上市公司高送转预测
2021-01-06李思铭林志杰李宇欣
李思铭,林志杰,陈 文,李宇欣,姜 永
(福建农林大学计算机与信息学院,福州350002)
近年来,我国证券市场的高速发展催生了一批题材股,其中的高送转这一题材无疑是中小投资者强烈追捧的对象。因为实施高送转后股价将做除权处理,投资者可以通过填权行情从二级市场的股票增值中获利。如果我们能准确预测下一年可能实施高送转的上市公司并提前买入,这对我们投资的安全性具有很大的现实意义。
研究拟通过收集有关数据,并采用数据挖掘方法筛选出对上市公司实施高送转方案有较大影响的因子,然后利用这些因子建立模型来预测实施高送转的情况。
一、数据来源与数据处理
(一)数据来源
研究的样本选自我国上市公司3 466只股票,相关因子数据有营运资本、投入资本、基本每股收益等,共360个因子,反映了上市公司近七年间股票盈余与公司经营情况,共约2.4万条样本。
(二)数据预处理
1.缺失值处理。可分为缺失值删除和缺失值填充两部分,当特征属性列缺失值超过总数的一半,就会直接删除该列。余下的特征属性列则根据缺失情况可分为间断缺失和连续缺失,分别进行均值填充和拉格朗日插值填充。
2.异常值处理。箱线图结尾去除异常值,在Python软件中,使用boxplot()涵数,将数据中偏大、偏小的“异常数据”过滤掉。
3.数据标准化。数据的标准化是指在处理数据时统一不同指标之间的量纲。常用的数据标准化有三种方法:min-max标准化、均值方差标准化、非线性归一化,分别采用这三种变换方法对原始数据进行数据变换,并画出对应变换后的特征分布图进行对比,发现经过log函数的归一化变换后特征分布较为服从标准正态分布,说明该种归一化方法有助于使用梯度下降法求解最优解的速度,提高算法的精度。
二、因子筛选
当数据预处理完成后,需要选择有意义的因子输入机器学习的算法和模型进行训练。通常来说,根据不同形式可将因子选择方法分为三种:Filter(过滤法)、Wrapper(包装法)、Embedded(嵌入法)。研究采用嵌入法,其基本思路是用机器学习的算法和模型进行训练,得到各个因子的权值系数,根据权值系数从大到小选择因子,这些权值系数往往代表了因子对于模型的某种贡献或某种重要性。
(一)送转股能力因子
在探究对高送转有重要影响的因素的过程中,为了衡量上市公司是否真正具备高送转能力,引入一个可量化的送转股能力(记为C)因子,其计算公式为:
C={资本公积+max[0,max(0,盈余公积-0.25×总股本)+未分配利润]}/总股本
(二)因子筛选
采用嵌入法挑选特征,可通过Python中的SelectFromModel算法来实现,而SelectFromModel算法又包括L1-based feature selection和Tree-based feature selection两种类型,研究采用第二种,基于LightGBM分类器利用SelectFromModel方法进行因子筛选,特征选择的阈值为“3mean”,效果最好。最终筛选出的重要因子有25个,各个因子对分类模型预测结果的贡献度,如图1所示。
按照其对模型重要程度排名前9的重要因子是:每股送转、成交金额_mean、息税折旧摊销前利润、销售费用/营业总收入(%)、实收资本(或股本)、基本每股收益同必增长(%)、基本每股收益、成交量_std、总资产相对年初增长(%)。
图1重要因子的贡献程度
对预测模型贡献度中等的共有14个,分别是投资支出/折旧和摊销、总资产净利率(%)、成交金额_std、ebitda/营业总收入(%)、上市年限、每股未分配利润(元/股)、最高价_mean、净资产相对年初增长(%)、送转股能力、成交量_mean、最低价_mean、开盘价_mean、年份(年末)、每股净资产(元/股)。
(三)因子评价
为了更直观了解筛选后因子的含义,以促进对上市公司实施高送转动因的认识,将影响高送转的因子分为三类:基本因子、成长因子、时序因子,[1]具体划分如表1。
表1因子分类
从分类情况来看,对预测模型贡献率占比最大的是基本因子,共包含4个重要因子,其次是成长因子,包含了3个重要因子,最后才是时序因子,只含有2个重要因子。这说明在预测模型中,这3个方面因子的重要性排序应该是:基本因子>成长因子>时序因子。
从经济学的意义上看,首先影响高送转的基本因子反映了该公司的整体资本、运营收入情况,对于是否实行高送转是具有关键决定因素的因子,而成长因子表现了每股股票的实时潜力与本质特征,对高送转是具有重大的影响力,最后的时序因子反映了上市股票的变化趋势,与当前市场的变化情况息息相关,因此,对“高送转”也有不可忽视的作用,特别是当数据中存在缺失值时,可以通过对时序因子的预测来估计未来的股票走势。
三、预测模型建立与应用
(一)算法选择
XGBoost算法是一种大规模并行提升树工具,应用的算法是GBDT梯度提升决策树的改进,可用于分类和回归问题。该算法主要将多个分类回归树进行集成,对损失函数进行优化,通过设置阈值或参数,达到一定条件时停止分裂。LightGBM算法是一个基于树学习的梯度提升框架。其原理是基于直方图的决策树算法,基本思想是将连续的浮点特征值离散成k个整数,并构造一个宽度为k的直方图,在遍历数据时用离散值作为指标,在直方图中积累统计信息,然后根据直方图的离散值进行遍历,寻找最优分割点。CatBoost算法是一种基于对称树的GBDT框架,具有参数少、支持类别变量、精度高等优点,其主要目的是合理地处理类别特征的问题。
XGBoost作为一款经过优化的分布式梯度提升库,具有高效,灵活和高可移植性的特点。LightGBM是一个快速高效、低内存占用、高准确度、支持并行和大规模数据处理的数据科学工具。CatBoost性能卓越,具有较强的鲁棒性,并降低了过度拟合的机会,方便处理类别型、数值型特征。在实际应用中,我们使用这三种算法对进行因子筛选后的数据进行模型预测,得到的各个算法的预测得分,如图2。
图2三种算法正确率比较
由此可见,LightGBM得分最好,CatBoost紧随其后,几乎与LightGBM不相上下,而XGBoost相较于其他两个算法表现力会差一些。因此,在后续的模型构建与提升中,选择LightGBM算法进行模型的搭建。
(二)模型构建
模型一:基于LightGBM算法的“高送转”预测模型一,预测准确率约为88.63%。其中,将标签1预测为0的有361个,可以看出模型对于数据的学习效果欠佳,模型的复杂度还不够,欠拟合。
模型二:融合模型(Stacking),该方法的思想是通过对多个单模型融合以提升整体性能。在Stacking方法中,把个体学习器称为初级学习器,用于结合的学习器称为次级学习器,次级学习器用于训练的数据称为次级训练集,次级训练集在训练集上用初级学习器得到。在融合模型中,选择LightGBM算法、CatBoost算法为初级学习器,Logistic回归为次级学习器,由此构成基于Stacking方法的“高送转”预测模型二,其预测准确率约为88.69%。
模型三:在模型二的基础上,考虑到数据中样本不平衡的问题,故采取SMOTE方法对数据较少的类别进行过采样,基于LightGBM算法进行模型预测,通过代码结果可知该方法对预测模型有一定的提升。故将过采样-LightGBM算法与模型二相融合,得到模型三,该模型算法流程为。
1.提取特征和预处理。基于LightGBM分类器利用SelectFromModel方法进行因子筛选,使用箱线图截尾去除异常值,对数据进行归一化变换,进行缺失值填充比较预测精度。
2.对LightGBM、CatBoost和过采样-LightGBM算法分别进行参数优化工作,用于Stacking模型。
3.模型构建。一是使用SMOTE进行样本过采样,分别输入LightGBM算法、CatBoost算法中比较,确定最优过采样比例,优化LightGBM、CatBoost、过采样-LightGBM算法的参数,作为初级学习器。二是基于三个初级学习器对训练集进行训练,然后用于预测训练集train和测试集test的标签列,将得到预测结果进行合并可得新的训练集train2和测试集test2。三是用次级学习器Logistic回归训练train2和预测test2,得到最终的标签列pred。
该模型预测准确率约为88.69%,详见图3的混淆矩阵。
图3模型三预测结果的混淆矩阵
(三)模型应用
利用建立的预测模型三,根据现有的前七年的数据对第八年上市公式实施“高送转”的情况进行预测,得到第八年实施“高送转”的股票共有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。预测准确率为91.06%。
四、模型检验与评价
(一)模型检验
1.五折交叉验证。将全部训练集分成5个不相交的子集,相应的子集称作;每次从分好的子集中里面,拿出一个作为测试集,其它4个作为训练集,根据训练训练出模型或者假设函数;把这个模型放到测试集上,得到分类率,并计算5次求得的分类率的平均值,作为该模型真实分类率。这个方法充分利用了所有样本,应用于预测模型一,得到预测准确率为:[87.43,87.95,88.42,88.00,87.66],平均分:87.89,这说明模型的表现比较稳定。
2.时间序列交叉验证。考虑到模型是以年份为单位进行预测,属于时间序列问题,不同年份的样本可能对模型的影响不同,为检验算法的泛化能力,因此,对年份为二、三、四、五、六年的“高送转”情况都进行预测。这个方法要求具有平稳时间序列,即时间序列应满足:常量的均值、常量的方差、与时间t无关的自协方差。将该方法应用于预测模型,得到预测准确率为:[87.43,85.71,86.72,89.35,88.29],平均分:87.50。
(二)模型评价
1.综合评价。利用精确率(precision)、召回率(recall)以及F1分数(F1_Score)对模型三的预测的结果进行综合的评价。
表2综合评价指标
2.泛化能力评价。模型预测不仅希望对是否实施“高送转”进行正确预测,同时还希望预测模型具有稳定的表现,所以接下来引入ROC曲线对算法模型的泛化能力进行评估。
图4预测算法的ROC曲线
当AUC越趋近于1,即ROC曲线下覆盖的总面积越大,ROC曲线越接近于y轴,分类器的预测泛化能力越好。从图中可以看出预测模型的泛化能力较好。
(三)不足与建议
研究的预测模型主要是基于集成的决策树(CART)算法,该算法应用的理论是信息学理论中熵的概念,通过对预测结果的综合评价,可以看出模型的泛化能力不错,但是模型的学习的复杂度还不够深。改进建议:在融合模型中可以通过引入更为复杂的算法,如神经网络算法、支持向量机,以提高模型的复杂度,从而提升模型预测精度。