1. 引言
公司财务困境是一个被广泛持续研究的课题,因为建立一套有效的财务困境预警系统对于企业以及其他企业利益相关者来说具有重要的现实意义。根据财务困境预警系统预测得到的财务状态评估结果,可以监控企业经营状况同时防范财务困境的出现或者财务恶化。具体来讲,企业经营者、投资者、银行等金融机构、审计人员和法律工作者等可以通过预警系统的提示,提前防范潜在的财务危机,从而调整战略降低或避免损失。
机器学习算法中逻辑回归应用最广泛、最经典。Martin [1] 首次运用逻辑回归,对银行进行破产预测分析,发现多元逻辑回归模型的预测性能较好。紧随其后的Ohlson [2] 运用多元逻辑回归方法将财务危机的预测问题转化为了根据公司的部分财务特征来估计公司在一段时间内陷入财务危机的概率问题,但高度相关的财务指标可能存在严重的多重共线性问题,这是多元逻辑回归方法要解决的一个难点。邓晓岚等 [3] 都构建了纯财务指标逻辑回归模型和综合逻辑回归模型,结果发现后者判别效果更好。随着统计学、计算机技术及信息技术的快速发展,财务预警模型的构建在不断创新。刘可歆 [4] 通过因子分析计算财务指标综合因子得分,利用随机森林构造互联网上市公司财务预警模型并对模型进行优化,解决不平衡分类问题,通过多种机器学习模型比对得到最优模型,进行财务指标重要性评价。苏玉敏 [5] 运用XGBoost原理构建财务预警模型,并将预测效果与经典财务预测模型效果进行对比,得到结果为XGBoost模型预测准确率达89.17%,比逻辑回归模型的预警效果要优秀很多,从而能够较好地预警公司是否将陷入危机,满足企业进行财务预警的需求。
随着机器学习的发展,2017年俄罗斯搜索巨头Yandex提出了CatBoost这一算法,它训练速度快、泛化能力强、准确率高,因此在众多应用领域中有很优异的表现,如苗丰顺 [6] 在医疗数据方面使用CatBoost算法,该算法预测效果都优于XGBoost和随机森林模型,取得了显著的预测效果。Wang [7] 将CatBoost算法应用于构建P2P违约预测模型,得到CatBoost算法的预测准确率达96%,对实际结果的拟合效果较好。
在财务危机预测领域中,学者们对于哪个机器学习算法的性能最好还没有统一的看法。本文新构建出一个影响公司财务困境的非财务指标,即人员年变化率,其中人员年变化率 = (t − 2年在职员工数量 − t − 3年在职员工数量)/t − 3年在职员工数量,这有利于拓展非财务指标的研究;另外由于CatBoost这种新算法特别适合样本量小、数据不平衡的情况,并且该算法目前在公司财务困境预测方面还没有应用,因此用来研究公司困境的预测问题。
2. 模型相关理论
2.1. 随机森林
随机森林(Random Forest)是一种利用bootstrap自助抽样方法的集成算法,它采用决策树和bagging的结合模式,即在以多棵决策树并行的基础上结合成为一个强学习器。名字中的“随机”是指随机抽取样本和随机选择特征,“森林”则是指多棵不同类型的决策树像是森林一样。在构建决策树过程中需要对变量重要性进行排序,由于随机森林拥有大量决策树,将每棵决策树得到的变量重要性进行综合,可以得到最终的变量重要性排序结果,且结果比单棵决策树更加稳定、可信,因此随机森林方法可以用来进行特征选择,筛选出重要变量。
在分类问题研究中,随机森林的多棵树分类器投票机制决定最终分类结果,另外还可以给出各个变量的进行重要性评分,评估各个变量在分类中所起的作用。
2.2. CatBoost模型
CatBoost算法(Categorical Boosting)是在梯度提升决策树(GBDT)的框架上进行改进的算法,它能够处理好各种分类型数据,并且易于调参,是一种比XGBoost算法计算结果更准确更优秀的机器学习算法。
CatBoost的初始目的是改进GBDT的分类特征,因为之前的处理方法是标签均值来代替对应的分类特征,计算公式为:
这种计算方式的缺点强行用标签均值来代替相应特征值从而忽略了更多信息,可能会造成条件偏移问题。而CatBoost对统计量进行了改进,在原有基础上引入了先验分布项及其对应的权重,新的计算公式为:
其中
是先验分布项的权重(
),P是先验项,这样做一是能够减少分类型变量中类别少的变量对数据的影响;二是能够有效的减少噪声。
CatBoost的另一改进是对将传统梯度估计方法改进为排序提升方法(Ordered boosting),这会得到无偏的梯度估计,降低了梯度估计误差,从而降低过拟合问题,最终达到提高模型泛化能力的目的。
2.3. XGBoost模型
XGBoost全称极端梯度上升(eXtreme Gradient Boosting),也是一种对梯度提升算法的改进算法。它对损失函数做了改进,一方面是将原来的损失函数从一阶泰勒展开替换为二阶泰勒展开,将损失函数泰勒展开到二阶,另一方面是损失函数中引入了正则化项,损失函数表达式为:
这个算法的思想是增加树,之后进行特征分裂来生长这棵树,每增加一棵树,就是学习一个新函数,进而去拟合上次预测的残差。最后根据树的结构就可以得到这个结构下的最优分数,可以通过每棵树的叶子节点去计算总分数。
2.4. 逻辑回归
逻辑回归模型(Logistic regression model)是一种广义线性模型,适用于处理结果变量为二值型变量或分类变量的问题,即结果变量Y可以取0或1 (其中Y = 1表示事件发生,Y = 0表示事件不发生)。因此当处理实际问题时结果变量为分类变量,这时线性回归模型已经不再适用,而逻辑回归就可以很好的处理这类问题,它的定义如下:
具有p个独立变量的向量
,条件概率
为在x观测值的条件下某事件发生的概率。逻辑回归模型可表示为
其中
。事件不发生的条件概率为
那么事件发生与事件不发生的概率比定义为机会比(odds),则有
由于
,可以对odds取对数,得到一个下面的线性函数
逻辑回归模型的参数可以通过极大似然估计得到,之后将测试集数据带入机会比(odds)式子中就可以得到预测结果,通常人为的以0.5为界限,即
判定为事件发生(Y = 1),odds < 0.5判定为事件不发生(Y = 0)。
3. 实证分析
3.1. 数据来源
本文所研究的数据和变量均来自CSMAR数据库(China Stock Market & Accounting Research Database)。在选取财务状况异常的公司样本时,先从CSMAR数据库中选取2019~2020年间被ST (特殊处理)的不含金融类等特殊行业的所需指标完整的上市公司,并且这些公司此前从未出现过被ST的情况,符合条件的财务困境公司共有63家(2019年10家,2020年53家)。在确定财务困境公司与财务正常公司的配比数量时,目前并没有统一的方式,有的学者直接按照1:1的原则进行配比,如Altman [8]、王克敏 [9] 等;有的学者按照财务困境公司占所有公司的比重进行配比的研究表明,如Platt [10];另外还有学者按照1:2的比例来确定财务困境公司和正常公司,如马铭阳 [11]。为保证样本具有可比性以及研究样本能够提供充足的信息,本文在选取财务状况正常的公司样本时,按照财务异常与财务正常的公司数量为1:2的比例选取正常公司,并且选取的正常公司样本应与被ST的公司具有相近上市年限、公司规模和同一行业,选取126家符合条件的正常公司(2019年20家,2020年106家)。
以被判定为财务困境的当年为第t年,财务因素变量的全部数据和非财务因素变量中的国家持股比例、前十位股东持股和审计意见可直接从CSMAR数据库中获取,均为发生财务困境的前两年,即t − 2年。而非财务因素变量中的人员年变化率为自己构建的变量,需要t − 3和t − 2年的在职员工数量数据,变化率 = (t − 2年在职员工数量 − t − 3年在职员工数量)/t − 3年在职员工数量。
3.2. 指标选择
财务困境预测模型的准确性和普适性依赖于构建完整的指标体系,不能遗漏掉重要的指标。另外,近些年众多学者的深入研究表明,能衡量公司发展状况的变量不只是财务因素,非财务因素也能很大程度的反映一部分信息。因此,综合近年来国内众多外学者对财务困境的研究成果 [12] - [17],本文从偿债能力、发展能力、经营能力、每股指标、现金流能力、盈利能力、股本结构、股权集中度、审计意见和人员变动这十个方面筛选出了51个指标,见表1。
![](Images/Table_Tmp.jpg)
Table 1. Financial and non-financial index system
表1. 财务与非财务指标体系
3.3. 变量筛选
为了不遗漏重要变量,所以在上面指标选择时初步选入的51个变量,但变量太多不加以筛选,会使得对公司财务状况影响不大的变量进入预测模型,这将会对预测形成干扰且效率低下。因此必须筛选出有差异的重要变量。
3.3.1. 统计方法筛选
首先对个变量进行正态性检验,单样本的K-S检验(Kolmogorov-Smirnov检验)可以比较频率分布与理论分布(正态分布)相符合。当p值 ≤ 0.05为拒绝原假设,即不服从正态分布,这是可以利用Mann-Whitney U这种非参数检验方法进行变量显著性检验;当p值 > 0.05时则表示变量服从正态分布,此时可以继续利用t检验来对变量进行显著性检验。
利用R软件进行检验得到结果为:51个变量在K-S检验中全部为p值小于0.05,即这些变量不服从正态分布。接着对这些变量进行Mann-Whitney U检验,结果显示长期债务与营运资金比率(X7)、每股负债(X29)、营业收入现金含量(X35)、前十位股东持股(X49)这4个变量未通过Mann-Whitney U检验,而剩余47个变量则通过该检验。
3.3.2. 随机森林方法筛选
随机森林方法不仅可以进行回归预测和分类预测,而且还可以计算变量重要性进行变量选择。衡量变量重要性的方法有两种,一种用置换精度降低衡量,原理为随机撤换某一个变量,如果预测精度降低就说明该变量重要;另一种用平均Gini指数降低衡量,即某个变量在拆分节点不纯度的总降低所体现出的重要性 [18]。
上面小节的统计方法组合筛选只筛掉了4个变量,而剩余的47个变量仍旧包含许多冗余信息。因此本小节利用随机森林这种方法进行降维。最后用于模型预测的变量取两种方法的交集。利用随机森林计算指标体系中的51个变量的变量重要性。图1显示的时前30个重要变量。
综合统计方法和随机森林两种方法的筛选,最终筛选出17个重要指标:净资产收益率增长率(X9)、净利润增长率(X10)、可持续增长率(X12)、所有者权益增长率(X13)、流动资产与收入比(X19)、流动资产周转率(X20)、每股收益(X25)、每股营业利润(X27)、每股股东自由现金流量(X33)、现金再投资比率(X39)、资产报酬率(X41)、总资产净利润率(X42)、净资产收益率(X43)、投入资本回报率(X44)、营业净利率(X46)、国有股占比(X48)、变化率(X51)。
3.4. 预测模型结果对比
3.4.1. 模型建立
在完成变量筛选后,本文根据上面的筛选结果从51个变量中选出17个重要变量,其中包含2个非财务因素(国有股占比(X48)和变化率(X51))和15个财务因素。将189个样本按照7:3的比例划分成训练集和测试集,其中训练集用于寻找规律构建模型,测试集用于做出预测,评价模型效果。实验目的是探究基于CatBoost这种新算法建立公司财务困境预测的优越性,并将其结果与之前学者经常使用的XGBoost、随机森林和逻辑回归这三种建模方法的结果进行对比。
在CatBoost建模时,将筛选的17个变量作为自变量,以公司状态作为因变量,将189个样本以7:3的比例划分得到X_train和X_test,相对应得到y_train和y_test。由于CatBoost提供了一种pool数据结构,这样可以优化速度和内存占用。因此可以用X_train和y_train构建成train_pool,X_test和y_test构建成test_pool。之后利用CatBoostClassifier函数进行分类问题的训练,使得Logloss达到最小得到最优参数的模型,最终使用最优模型对测试集结果进行评估。
在逻辑回归建模时,需要考虑变量间的多重相关性,因此不能直接用这些变量进行建模,本文利用逐步回归的方法进行计算,删去模型中不显著的变量,进行逻辑回归的优化,得到最终逻辑回归结果。
本文CatBoost算法是通过Python软件实现的,XGBoost、随机森林和逻辑回归这三种算法则是基于R软件进行分析和计算。
3.4.2. 模型评价指标
模型评价是建模完成后重要一环,用于综合评价模型的效果优劣。对于二分类问题,可基于混淆矩阵和ROC曲线评价。
混淆矩阵是是以矩阵形式来表现实际和预测分类效果,在此基础上定义了特异性、灵敏性、准确性,具体如表2所示。
特异性 =
,又叫做真负类率;
灵敏性 =
,又叫做真正类率;
准确性 =
。
ROC曲线全称叫做接收者操作特征曲线,适用于分类模型中作为衡量指标,在做决策的时候能够给出客观中立的建议。ROC曲线越靠左上角表明分类效果越理想,而如果是对角线状态则表明该模型没有分类效果,因此叫做无识别曲线。AUC值表示的是ROC曲线下面的面积,取值范围为[0, 1]。当
时表明该模型是有预测效果的,优于随机猜想。
3.4.3. 实验结果
经过对数据进行数据处理和变量筛选,选出重要变量后进行模型预测,得到CatBoost模型的预测结果,同时也使用了之前学者经常使用的XGBoost、随机森林和逻辑回归这三种建模方法,通过测试集预测结果得到混淆矩阵和ROC曲线图,进而分别得到这四种模型的预测结果,如表3和图2所示。
![](Images/Table_Tmp.jpg)
Table 3. Analysis of prediction results of four models
表3. 四种模型的预测结果分析
![](//html.hanspub.org/file/2-2621778x29_hanspub.png?20210903084122919)
![](//html.hanspub.org/file/2-2621778x30_hanspub.png?20210903084122919)
Figure 2. Comparison of ROC curves of four models
图2. 四种模型ROC曲线对比图
模型预测结果可以通过特异性、灵敏性、准确性和AUC值度量,从图2和表3可以看出:(1) 特异性表示的是在测试集中实际为财务正常的公司里被正确的判定为财务正常的比率。在特异性方面,CatBoost模型为1,效果最好没有误判,XGBoost和随机森林模型效果次之,逻辑回归效果最差,为0.861。(2) 灵敏性表示的是在测试集中实际为财务困难的公司里被正确的判定为财务困难的比率。在灵敏性方面,XGBoost结果略优于CatBoost模型,但效果也已经很好,而逻辑回归效果最差。(3) 准确性表示的是在测试集中的所有公司里被正确的判定为财务困难和财务正常的比率,是一个总体准确率,从结果中可以看出CatBoost模型准确率最高,达到了98.2%,XGBoost和随机森林模型效果稍弱。(4) AUC值反映的是模型的分类性能的好坏,客观反映了分类的精度。从上面结果中可以看出CatBoost模型优于其他三种模型,AUC值最大,从ROC曲线对比图中可以看出四种模型的AUC都大于0.5,都具有预测价值,尤其是CatBoost模型,预测效果最好。
综合来讲,CatBoost模型在特异性、准确率和AUC值方面都要优于其他三种模型,虽然在灵敏性方面略低于XGBoost模型,但灵敏度依旧很高。综合来讲,CatBoost模型表现最好,都要优于几年来学者经常运用的XGBoost模型和经典的逻辑回归模型,在准确性方面要比近年广泛运用且预测效果较好的XGBoost模型高3.5%。
4. 结论
本文以上市公司为研究对象,之前学者的研究证实影响公司财务状况的因素很多,不仅是财务因素,同时还有非财务因素。一般的非财务因素是从数据库中给出的几个方面进行研究,而员工离职情况也在另一方面反映着公司的运行情况,但这些数据不会对外公布,因此本文新构建出人员年变化率这一变量反映公司人员的变动情况,计算方式为人员年变化率 = (t − 2年在职员工数量 − t − 3年在职员工数量)/t − 3年在职员工数量。为避免遗漏重要变量,本文先从发展能力、经营能力、盈利能力、股本结构、人员变动等十个方面的选中51个变量作为初始指标体系,再利用统计方法和随机森林方法去除冗余变量,最终从中筛选出17个重要变量。由于CatBoost这种新算法特别适合样本量小、数据不平衡的情况,具有训练速度快、泛化能力强、准确率高的优点,并且该算法目前在公司财务困境预测方面还没有应用,因此运用CatBoost模型进行公司财务困境建模和预测,并与之前学者经常使用的XGBoost、随机森林和逻辑回归这三种建模方法进行对比。
实验结果显示CatBoost模型在特异性、准确率和AUC值方面都要优于其他三种模型,虽然在灵敏性方面略低于XGBoost模型,但灵敏度依旧很高,达到了0.933。综合来讲,CatBoost模型表现最好,都要优于几年来学者经常运用的XGBoost模型和经典的逻辑回归模型,在准确性方面要比近年广泛运用且预测效果较好的XGBoost模型高3.5%,因此CatBoost模型在研究公司困境问题中具有很优异的表现,能够提供有效的参考性。