1. 引言
我国上市公司财务报告造假行为严重扰乱了中国的社会经济秩序,发生的上市公司财务报告造假案件引发了社会各界对财务造假问题的深刻反思 [1] 。上市公司财务报告舞弊问题 [2] 在当今全球市场上非常普遍。
愈演愈烈的上市公司财务报告舞弊的危害性主要表现在:(1) 严重影响了社会市场经济秩序 [3] ,侵害了国家会计法规和会计制度,破坏了我国法制化社会的进程。(2) 使尚在发展中的证券市场饱受虚假财务信息 [4] 的冲击,使投资者蒙受损失,加剧了市场的投机行为,使投资者对市场的规范化运营的信心严重缺失,影响了社会的安定。(3) 政府机构和上市公司的高管因受到虚假财务信息 [5] 的误导而导致无法做出正确的决策,在影响上市公司正常运营的同时也会影响政府机构对社会经济资源的合理配置。(4) 上市公司通过虚减收入和虚增费用等手段偷逃国家税款,使国家税款严重流失。(5) 上市公司股东、债权人和职工的合法权益受到侵犯,对这些群体造成的经济损失不可估量。(6) 滋生了大批的贪污腐败人员,严重影响了社会财富的分配,影响了社会的稳定和谐。
2. 模型原理
2.1. 随机森林(Random Forest Model)
在机器学习中,随机森林 [6] 由许多的决策树组成,因为这些决策树的形成采用了随机的方法,因此也叫做随机决策树。随机森林中的树之间是没有关联的。当测试数据进入随机森林时,其实就是让每一颗决策树进行分类,最后取所有决策树中分类结果最多的那类为最终的结果。因此随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
2.2. 组合决策树(XGBoost)
XGBoost模型是典型boosting算法,是对GBDT模型的算法和工程改进。区别Bagging模型,基学习器可以并行,boosting模型的基学习器间存在先后依赖。GBDT [7] 是一种提升树模型,第m轮用一棵回归树拟合前m-1轮损失的负梯度,降低模型的bias。XGBoost是在GBDT等提升算法基础上进行优化的算法,引入二阶导数信息,并加入正则项控制模型的复杂度;此外,虽然基模型的训练存在先后顺序,但每个基学习器内部的树节点分裂可以并行,XGBoost对此进行了并行优化,实现优化目标函数以达到误差和复杂度综合最优。
2.3. 逻辑回归模型
逻辑回归 [8] 是机器学习中一个应用非常广泛的分类模型,它是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)。对于逻辑回归的损失函数构成的模型可能过拟合的问题,正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。正则项可以取不同的形式,在回归问题中取平方损失,就是参数的L2范数,也可以取L1范数。取平方损失时,模型的损失函数变为
其中λ为正则项系数,正则化后的梯度下降算法的更新变为:
,从而完成对事件发生概率的预测。
2.4. LightGBM模型
Light GBM [9] 相较于XGBoost,提出Histogrm算法,对特征进行分桶,减少查询分裂节点的事件复杂度;此外,提出Goss算法减少小梯度数据;同时,提出EFB算法捆绑互斥特征,降低特征维度,减少模型复杂度。
2.5. 模型评价指标
机器学习算法评价指标有很多种,本文模型优化评价指标设为曲线下面积(AUC)。AUC (Area Under Curve)被定义为ROC曲线下的面积。其中,ROC曲线全称为受试者工作特征曲线(Receiver Operating Characteristic),它是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(敏感性)为纵坐标,假阳性率(1-特异性)为横坐标绘制的曲线。AUC就是衡量学习器优劣的一种性能指标。AUC [10] 可通过对ROC曲线下各部分的面积求和而得。AUC值越大的分类器,正确率越高。
ROC曲线 [11] 能很容易的查出任意阈值对学习器的泛化性能影响。此曲线有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的准确性就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。还可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。
该方法简单、直观、通过图示可观察分析学习器的准确性,并可用肉眼做出判断。ROC曲线将真正例率和假正例率以图示方法结合在一起,可准确反映某种学习器真正例率和假正例率的关系,是检测准确性的综合代表。ROC曲线不固定阈值,允许中间状态的存在,利于使用者结合专业知识,权衡漏诊与误诊的影响,选择一个更加的阈值作为诊断参考值。
3. 模型构建
3.1. 数据处理
对于年数据,读取数据获得了5年的217个特征因子,将特征因子“是否造假”改名为“本年是否造假”,用机器学习算法解决二分类问题。
本文中的数据来自于对上市公司多年的财务数据报告,将部分异常值0更改为缺失值,之后再填充缺失值。如果某个特征因子缺失的样本占总数极大,直接舍弃;如果某个特征因子缺失的样本适中,且为数值型特征属性,用0、平均数或众数进行缺失值填补;如果某个特征因子缺失的样本较少,使用随机森林填补缺失值。
由于选取的数据包含不同类别的因子,并且不同因子之间在取值范围与量化度量单位等方面存在较大差异。因此需要将因子数据进行标准化处理,数据标准化:将特征数据的分布调整成标准正态分布,也叫高斯分布 [12] ,也就是使得数据的均值为0,方差为1,其转换函数为:
其中μ是原始数据的均值,而σ为原始数据的标准差。标准化的过程为两步:去均值的中心化(均值变为0);方差的规模化(方差变为1),注意,标准化去均值,方差规模化是针对一个特征维度来做的,而不是针对样本。标准化的原因在于如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征。本文通过创建一组特征数据,每一行表示一个样本,每一列表示一个特征,来进行标准化。
3.2. 特征因子处理
通过分类方法将所有的行业分为19大类。从所有特征中,选择出有意义、对模型有帮助的特征,以避免必须将所有特征都导入模型去训练的情况。
过滤方法通常用作预处理步骤,特征选择完全独立于任何机器学习算法。是根据各种统计检验中的分数以及相关性的各项指标来选择特征。方差过滤 [13] 通过特征本身的方差来筛选特征的类。本文先消除方差为0的特征,将最初的216个指标降到153个指标,剩下空缺的数据选用0来填充。
互信息法 [14] 是用来捕捉每个特征与标签之间的任意关系(包括线性和非线性关系)的过滤方法。互信息法可以找出任意关系。互信息法不返回p值或F值类似的统计量,它返回“每个特征与目标之间的互信息量的估计”,这个估计量在[0, 1]之间取值,为0则表示两个变量独立,为1则表示两个变量完全相关。经典的互信息也是评价定性自变量对定性因变量的相关性的,为了处理定量数据,最大信息系数法被提出,互信息计算公式如下:
3.3. 参数调优
机器学习模型参数众多,参数选择不恰当,就会出现欠拟合或者过拟合的问题。本文选择不同大小的参数,带入模型中,挑选表现最好的参数。建模时先固定每个参数的初始值,再设定其调参范围,进行网格搜索和交叉验证寻找最优化结果。其中设置的初始值、范围和调参结果见各算法框架参数结果详情表,本文模型优化评价指标设为和曲线下面积(AUC)。
3.3.1. 随机森林调参
随机森林调整的参数有三个,分别为n_estinators:随机森林中树模型的数量、max_depth:树的最大深度、min_samples_split:中间节点要分枝所需要的最小样本数。该模型的AUC结果有84.2%,有显著提升,见表1:
我们做出RFC调参过程的ROC曲线,又称接受者操作特征曲线。AUC指标表示ROC曲线下的面积,见图1:
由RFC调参过程,我们做出对153个指标重要性的柱状图,可以很清晰的看到其中凸显的指标极为对上市公司造假有较大影响的因子。我们导出excel数据得出前10的指标为TEAP_TA、ADMIN_EXP、PAID_IN_CAPITAL、CASH_C_EQUIV、OPA_PROFIT、N_CF_OPA_PROPT、AR、BIZ_TAX_SURCHG、C_PAID_OTH_INVEST_A、RESER_PS,如图2:

Figure 2. RFC indicator importance histogram
图2. RFC指标重要性柱状图
3.3.2. 逻辑回归调参过程
逻辑回归模型需要调整的参数有两个,分别为penalty和C_penalty表示正则化的方式,C表示正则化强度的倒数,其默认值为1,即默认正则项与损失函数的比值是1:1。C越小,损失函数会越小,模型对损失函数的惩罚越重,正则化的效果越强。见表2:

Table 2. Logistic regression of parametric process
表2. 逻辑回归调参过程
从AUC的结果78.6%,我们继续探索其他模型。
3.3.3. XGBoost调参
XGBoost算法模型中几个相对重要参数:参数subsample表示随机抽样的时候抽取的样本比例,范围是(0, 1];参数Learning_rate表示集成中的学习率,又称为步长以控制迭代速率,常用于防止过拟合。默认是0.1,取值范围[0, 1]。如表3:

Table 3. XGBoost invokes the procedure
表3. XGBoost调参过程
做出XGBoost调参过程的ROC曲线,如图3:
XGBoost算法调参后AUC有75%,AUC接近1.0,检测方法真实性高,表明模型有较好的拟合效果。为得出对上市公司造假有较大影响的因子,我们将特征因子作图,对算法的重要性从大到小排列,其特征因子和其重要性数值如图4所示。

Figure 4. XGBoost metric importance histogram
图4. XGBoost指标重要性柱状图
我们求出在XGBoost算法中特征重要性为前30的特征因子,其中前10的指标为T_REVENUE、N_WORK_CAPITAL、REVENUE、OTH_COMPRE_INCOME、CAP_FIX_RATIO、OP_PS、T_CL、COGS、ST_BORR、C_PAID_OTH_INVEST_A。
3.3.4. LightGBM调参过程
LightGBM的基本调参过程如下:首先选择较高的学习率,大概0.1附近,这样是为了加快收敛的速度。这对于调参是很有必要的。其次是对决策树基本参数调参,最后是正则化参数调参。因此,第一步先确定学习率和迭代次数,第二步,确定max_depth和num_leaves,这是提高精确度的最重要的参数。第三步,确定min_data_in_leaf和max_bin。第四步,确定feature_fraction、bagging_fraction、bagging_freq。第五步,确定lambda_l1和lambda_l2。第六步,确定min_split_gain。第七步,降低学习率,增加迭代次数,验证模型。LightGBM算法调参后AUC有78.6%,AUC很接近1.0,检测方法真实性高,表明模型有较好的拟合效果。如表4所示:

Table 4. LightGBM invokes the procedure
表4. LightGBM调参过程
做出lightGBM调参过程的ROC曲线,如图5:
LightGBM算法调参后AUC有75%,AUC接近1.0,检测方法真实性高,表明模型有较好的拟合效果。为得出对上市公司造假有较大影响的因子,我们将特征因子作图,对算法的重要性从大到小排列,其特征因子和其重要性数值如下图6所示。

Figure 6. LightGBM indicator importance histogram
图6. LightGBM指标重要性柱状图
我们求出在XGBoost算法中特征重要性为前30的特征因子 [10] 中,其中前10的指标为REVENUE、COGS、PAID_IN_CAPITAL、RETAINED_EARNINGS、T_PROFIT、AR、DEFER_REVENUE、MINORITY_INT、PROC_SELL_INVEST、C_OUTF_OPERATE_A。
3.3.5. CATBoost调参过程
CatBoost算法调整参数Learning_rate、Depth和Bagging_temperature。Learning_rate不再阐述,参数Depth表示树的深度,bagging_temperature表示贝叶斯套袋控制强度,区间[0, 1],默认为1。如表5所示:

Table 5. CATBoost invokes the procedure
表5. CATBoost调参过程
CATBoost算法调参后AUC有79%,AUC接近1.0,检测方法真实性高,表明模型有较好的拟合效果。为得出对上市公司造假有较大影响的因子,我们将特征因子作图,对算法的重要性从大到小排列,其特征因子和其重要性数值如下图7所示:

Figure 7. CATBoost indicator importance histogram
图7. CATBoost指标重要性柱状图
3.4. 确定对决策影响较大的因子
本文在上述4个模型确定最优参数之后,在测试集上进行预测,模型训练结束后,利用四个模型所得特征重要性,由于特征变量较多,我们已经选择了这四个模型排名前25个重要特征。在此基础上,挑选出三个模型共同确定的重要因子,并进行分类,得到结果如下表6:
4. 基于模型融合的预测模型构造
4.1. 融合模型对比
本文用了Stacking模型融合方法,即为使用树行计算方法的集成学习方法。由于人解决问题的思维是树形的,将模型树行化符合问题本身的逻辑,精确率和召回率呈稳态正相关。因此采用树行计算方法的Stacking方法可以整合不同模型的最好表现,使模型融合更加科学化,用以提升模型的预测准确率和泛化能力。Stacking融合模型一般分为2层内容。第1层模型主要用于产生第2层模型的训练集数据(TrainingData)。产生过程如下:首先,训练集数据内容是用一个基础模型进行k折交叉验证的结果。k折交叉验证,就是先拿出k-1折作为训练数据,另外一折作为测试数据(TestingData)。每一个交叉验证产生的预测结果组合起来,作为第2层模型的训练集数据。另外,还要对数据集原来的整个训练数据进行预测,这个过程会生成k个预测数据集,对于这部分数据,本文将数据集各部分相加取平均作为下一层模型的测试集数据。第2层学习模型采用非线性模型,通过将第1层模型输出的结果作为训练数据训练模型,得到新的预测结果。通过将新的预测结果和第2层模型的测试数据集进行对比,观察预测准确度。如图8所示:
Stacking集成学习算法的效果好坏取决于两个方面:一个是基分类器的预测效果,通常基分类器的预测效果越好,集成学习模型的预测效果越好;另一个是基分类器之间需要有一定的差异性,因为每个模型的主要关注点不同,这样集成才能使每个基学习器充分发挥其优点。本文基于经典的Stacking模型融合方法进行改进:1) 将其每一步验证中使用的单个相同模型,改为5个不同的机器学习模型进行预测;2) 使用第1层所有基分类器所产生的类别概率值作为第2层模型的输入。
Stacking相比LinearBlending来说,更加强大,然而也更容易过拟合。本文采用5折交叉验证法求解,用到的层次为两个层次,这个方法叫做stacking堆叠。
第一层用到了XGBoost、Light GBM、随机森林、逻辑回归及CatBoost五种模型,5种算法不仅有充分的理论支撑,而且在科学研究中正扮演着重要的角色。第2层元学习器同样选择学习能力较强的Light GBM算法,用于对第1层基学习器的集成,并且使用7折交叉验证划分数据的方式防止过拟合的发生,综上所述,本文基于Stacking集成学习的分类模型第1层基学习器选择LGBM、RFC、XGBoost、Light GBM、Catboost,第2层元学习器选择light GBM,模型结构如图9所示,通过此方法可以得到第六年的预测结果,整理得到如下饼图:

Figure 9. Pie chart of the total number of manufacturing enterprise whether to fake
图9. 制造企业是否造假企业总数饼图
可以得到,第六年造假公司有396家,未造假公司有1949家,如下表7所示:
Stacking集成学习的分类模型即为:第一阶段,将训练数据均匀地分成5份,使用“留一法”训练5个逻辑回归模型,用这5个模型分别去预测剩下的一份训练数据和测试数据,将5份预测的训练数据合并,可以得到一份新的训练数据NewTrainingData,将5份预测的测试数据采用均值法合并,得到一份新的测试数据NewTestData。用同样的方法再分别训练随机森林、gbdt、XGBoost,light GBM,新的训练和测试数据上,就可以得到5个模型的分数。第二阶段,将上一阶段的NewTraningData作为训练数据,NewTestData作为测试数据,重新训练一个XGBoost模型,得到最终的预测分数。这种方法可以避免过拟合,学习出特征之间组合的信息,提高预测的准确率。
本文第1层基学习器选择XGBoost、Light GBM、随机森林、逻辑回归及CatBoost第2层元学习器。选择了light GBM,从而确定了最终最优的预测模型。Stacking集成模型在测试集上的得分高于所有基础分类器,Stacking集成模型在测试集上的得分高于所有基础分类器,其AUC得分为78.5%,可得出其ROC曲线图如下图10:
4.2. 结果讨论
通过对下一年我们选取出的非制造是否高送转的Stacking集成学习融合模型的建立,使用第5年数据和基础数据数据预处理并特征选择后的合并数据中的特征因子去预测1323家非制造企业第6年是否造假。如图11所示:

Figure 11. Pie chart of the total number of non-manufacturing enterprise whether to fake
图11. 非制造企业是否造假企业总数饼图
得到预测结果:存在18.4%非制造企业会在第六年出现造假现象,即有244个上市企业造假,1079个企业不会造假。为方便观察,绘制第6年企业是否会造假,0表示不会造假,1表示执行高送转,如上图11所示。
利用Stacking集成学习融合模型,我们使用第5年数据和基础数据数据处理特征选择后的合并数据中的特征因子去预测1323家非制造企业可能造假的具体企业,得出以下结果,如表8:

Table 8. Specific counterfeiting enterprises of non-manufacturing enterprises
表8. 非制造企业具体造假企业
由此可以看出:此融合模型不仅预测了上市公司财务造假数量,也预测了具体造假公司,为打击财务造假问题提供了具体可行的参考结果。
基金项目
甘肃省科技计划项目(定西地区农村电子商务营销综合能力提升) (20CX9NA095)。
NOTES
*第一作者。
#通讯作者。