1. 引言
公司财务预警系统作为一种报警系统,是为了预防公司财务系统运行与公司所预期的目标不一样或者偏离,这种报警系统具有很强的预见性和针对性。它通过对公司各项指标的大数据进行综合分析,从而对公司最近的财务状况进行分析从而对公司未来的发展趋势进行有效的预测,以便对公司决策者的一些决定提供强有力的支撑 [1]。
对于公司的财务金融预测,最开始提出了一元判定的方法,该方法简单,使用方便,由于只是重视单一指标的分离能力,所以该方法就能人为地改变那些影响结果的一些数据,另外,采用多个指标进行判断时,各项指标之间的关系也无法直接进行判定,这都会影响最终预测的结果 [2]。为了弥补一元判定模型的缺陷,1968年Altman将多元线性判别的方法引入到财务危机预警研究领域,通过多次测试选用误判率最小的5个指标作为最终的5个判定变量,这样判定结果相比较于一元判定好,但是这些改造只不过是选取的变量指标或者指标系数不同而已 [3],最终也是治标不治本,并不能达到所预期的效果。再之后研究学者又采用多元逻辑 [4] 和多元概率 [5] 的方法,虽然都对财务金融预测精度有了一定的提升,但是它们的系数对样本和模型设置都非常的敏感,鲁棒性差。由于传统方法存在诸多问题,研究者将AI技术引入到财务预警的研究中,尤其是基于人工神经网络的预测方法得到了大量应用,且取得了较好的性能 [6]。但是目前神经网络方法大都是基于BP网络的,BP网络本身存在的缺陷,如收敛速度慢、局部极小化、过拟合等问题,且网络结构选择也没有理论依据,真正推广还存在诸多问题 [7]。再之后的遗传算法虽然相比于多元判别受主观影响比较小,但是准确率却低于多元判别方法,运算也较为复杂 [8]。在之后采用支持向量机预测的方法虽然对小规模样本训练结果还算满意,但是对于大规模训练样本却存在耗费大量机器内存和运算时间等问题,所以也不利于现在公司大数据的预测。基于此,本文提出一种基于Elman_Adaboost算法的财务预警方法。Elman网络具有着良好的动态性能和逼近任意非线性能力的优点,而Adaboost算法的利用可以对多个Elman网络的输出结果进行有效融合,进一步提升Elman网络的预测性能。将某公司的财务数据结合本文提出的方法进行仿真实验,并与多个方法进行对比分析,结果表明基于Elman_Adaboost算法的财务预警方法预测精度最高、性能最好,符合财务预测的应用。
2. Elman网络模型
Elman网络是一种动态神经网络,该网络相比较于BP网络是在其结构单元中引入了反馈环节,这样就对数据的处理具有了很强的时变性和实时性能力。也正是由于承接层中反馈通道的存在,使得Elman网络具有了很强的检测识别能力和记忆能力。这些特点都在很大程度上提升了系统的动态变化能力,可以更好预测动态数据,其预测性能要优于BP神经网络 [9]。Elman神经网络的结构一共有4层,分别包括输入层、隐含层、承接层和输出层。信号从输入层传入,隐含层使用的传递函数具有线性和非线性特点,除了传递数之外,隐含层的层数也能改变训练模型的精度,一般隐含层数量越多,精度也会相应提高,但是训练时间会变长。承接层主要就是起承接的作用,能将隐含层的输出再反馈给隐含层,能用来记忆上一时刻的数值,这样就使得Elman具有动态记忆特性。输出层线性函数可以起到线性加权的作用。其网络结构如图1所示。
Elman网络学习过程以图1为例,Elman网络的非线性状态空间表达式为:
(1)
(2)
(3)
其中y (k)为网络的输出值,g (*)为隐含层到输出层的传递函数,f (*)为输入层到隐含层传递函数。其中u为输入向量,xc为承接层所反馈的状态向量。
Elman神经网络学习指标函数采用误差平方和函数,是通过误差的反向传递来逐步调整权值的。
(4)
式中,
为目标输入向量。
3. Adaboost算法模型
Boost算法主要出自于PAC学习模型,PAC学习模型主要探索的就是到底哪些问题是可以通过学习得到改善的和解决这些问题的具体算法又是什么的问题。
在1995年,Freund和Schapire提出了Adaboost算法,弱预测器正确率的下限和弱预测器的相关先验知识已经不再是寻找弱预测器的限制条件,并且这种算法在很多研究背景下都可以运用,这样就使得弱预测器的选择更加广泛,最重要的是还具有了和Boosting算法同样的效率,所以此算法一经提出就受到了广泛欢迎 [10]。
Adaboost算法思想也就是:多听其他人意见,最后综合所有人意见进行最终决策。训练得到的前一个基本预测器预测错误的样本会得到加强,正确样本会减弱。即如果样本预测错误,就增大预测错误样本权重,而正确样本权重则被减小,之后权值改变过的全体样本,会再次被用来训练下一个基本预测器。每次训练都会得到一个新的弱预测器,最后用这些训练得到的弱预测器合成强预测器,弱预测器的比重是由该弱预测器预测的正确率决定,正确率越高,在最终合成的强预测器所占比重就越大。直到强预测器的误差率满足我们所设定的误差值或者是迭代次数已经达到了事先设定的次数 [11]。
Adaboost算法流程如下:
给定一个训练数据集
其中
,而实例空间
,yi属于标记集合
。
步骤1:首先,初始训练数据的权值分布,若训练样本个数为N,则每一个训练样本的权重都设定为1/N。
(5)
步骤2:进行迭代得到M个基本预测器。
使用具有权值分布
的训练数据集学习,得到基本预测器:
(6)
计算
在训练数据集上的预测误差率:
(7)
计算
的系数,
表示
在最终的强预测器中所占的比例:
(8)
更新训练数据集的样本权重,用于训练下个预测器:
(9)
(10)
其中,
是规范化因子,使得
成为一个概率分布:
(11)
步骤3:组合各个弱预测器。
(12)
从而得到最终预测器,如下:
(13)
并且Adaboost具有很强的自适应能力,只要弱预测器的正确率都不大于0.5,就不会对最终强预测器的合成有影响。
4. Elman_Adaboost算法组合模型
本文将AdaBoost算法用于预测判断公司的财务运行状况,采用Elman神经网络用来训练弱预测器来集成最后预测精度更高的Elman-AdaBoost [12] 强预测器,用于解决某公司财务预警问题。基于Elman_Adaboost模型的公司财务预警算法模型如图2所示。

Figure 2. Elman_Adaboost algorithm model
图2. Elman_Adaboost算法模型
其算法步骤如下:
步骤1:数据的选择以及网络初始化。先从整个样本中选择m组训练数据,初始权值刚开始均分,权值为
,再根据样本的特性以及样本的背景意义去选取网络结构,最后再进行初始化Elman网络权值和阈值。
步骤2:弱预测器预测。训练第t个预测器时,用从样本中选取的训练数据去训练Elman神经网络并且预测得到训练数据输出,其训练误差公式可以表达为:
(14)
式中,g (t)为预测结果;y为期望预测结果。
步骤3:计算预测样本权重。根据上式预测的误差来计算样本序列的权重,其权重计算公式为:
(15)
步骤4:测试样本数据权重调整。根据上式中得到的预测序列权重来调整下个弱预测器训练样本的权重,调整公式为:
(16)
式中,Bt是一种归一化因子,其作用是使得权值之和相加为1。
步骤5:强预测器获取。训练T次之后一共得到了T组弱预测函数
,再由T组弱预测函数
组合得到了最后精度更高的强预测函数h (x):
。 (17)
5. 案例分析
5.1. 数据来源
本论文所验证数据是来源于上海某公司的1350组财务状况数据,随机选取1000组用来训练,剩余350组进行测试。部分实验数据如表1所示。
对于公司财务类型是通过这10项指标进行判定的,最后判定的财务类型一共为两种,1代表财务状况良好,−1代表财务状况出现问题。通常为了预防一些非正常数据,比如一些数据太大或者太小都会对实验结果直接造成决定性的影响,就必须先对实验数据进行归一化处理 [13]。
5.2. 网络结构的选择
作为弱预测器的Elman网络结构的选择要依据本文所选取样本的维度来确定,每一个维度数据代表一个评定指标,因为财务预测选取了10个指标去预测公司财务状况,输出结果为1或者−1,1代表财务状况良好,−1代表财务状况出现问题,所以输入层为10,输出层为1。隐含层选取范围在5到25之间。从中选择了隐含层H = [5 10 15 20 25]来训练网络,来寻找最优隐含层数目,假设生成了K个弱预测器 [14],为了选择最合适的弱预测器个数,可以取K = [5 10 15 20]进行试验。所以运行程序一共产生了20个仿真结果,再对20个仿真结果的精度进行比较,最后从中选择精度最高的组合作为最优的Elman-Adaboost强预测器。为了更准确的去评估20个Elman-Adaboost强预测器的预测精度,分别对本程序的每个模型都进行10次仿真,然后再取10次仿真的平均值。其中某一次仿真训练图如图3所示。

Figure 3. Elman Adaboost network training curve
图3. Elman-Adaboost网络训练曲线图
在不同大小H、K值下仿真预测正确率如图4所示,由此可得,在不同大小H、K值下的预测器正确率如表2所示。

Figure 4. Accuracy of strong predictor under different K and H
图4. 不同K、H下强预测器正确率
由表2可得,当K = 10、H = 10时,正确率达到了96.3%,正确率最高。此时预测错误的样本在预测类别与实际类别比较图的标记如图5所示。

Figure 5. Comparison between forecast category and actual category
图5. 预测类别与实际类别比较图
通过以上正确率对比分析,最后选择了隐含层个数为10的Elman神经网络作为弱预测器,其中选取的弱预测器的数目为10,最后组成最优的Elman-Adaboost强预测器,其平均预测正确率为96.3%。
5.3. 与其它方法对比
BP神经网络在预测识别领域被广泛运用 [15],也可以用来解决该公司财务预测问题,故同样可采用该方法在数据处理之后进行预测,最后得到最好的预测正确率为93.5%。Elman神经网络具有比BP神经网络更好的动态性能,所以用Elman神经网络对公司财务状况进行预测,最后得到最好的预测正确率为94.6%。同样的,也可以选取BP神经网络作为弱预测器,组合成BP_Adaboost算法的强预测器对该公司财务状况进行预测,根据上章节的选取方式,从中选择了隐含层H = [5 7 10 12 14]来训练网络,来寻找最优隐含层数目。为了选择最合适的弱预测器的个数,假设生成K个弱预测器,可以取K = [5 10 15 20]进行实验。最后经过实验可得:当H = 10,K = 10时,预测的平均最大预测率为96.0%。此方法预测错误的样本在预测类别与实际类别比较图的标记如图6所示。各种方法的预测平均正确率如表3所示。

Figure 6. Comparison between forecast category and actual category
图6. 预测类别与实际类别比较图

Table 3. Prediction accuracy of each network algorithm
表3. 各个网络算法的预测正确率
由表3可以看出:由于Elman神经网络的动态性能更好,相比较于BP神经网络能够更好的反映对象的动态特性,所以采用单一Elman神经网络的预测精度比单一BP神经网络精度要高;采用Adaboost算法结合BP、Elman网络组成的强预测器的预测精度要比采用单一BP神经网络和Elman神经网络的预测精度要高,说明Adaboost算法是一种能有效提高预测精度的算法;使用BP神经网络作为弱预测器组合成的BP_Adaboost算法比用Elman神经网络作为弱预测器组合成的Elman_Adaboost算法的精度要低,所以,相比于BP神经网络,选择具有更好动态特性的Elman神经网络作为弱预测器更能有效提高最终的预测精度,而改进的Elman网络作为弱预测器的预测精度应该会更高,将会是未来探究的方向。
6. 结论
本文提出了一种能有效预测某公司财务状况的Elman_Adaboost强预测器方法,该方法选用了具有更好动态特性的Elman神经网络作为弱预测器,通过Adaboost算法融合了多个弱预测器产生强预测器。并通过与单一BP,Elman神经网络以及BP_Adaboost强预测器进行精度比较,从而可以得到本方法具有更高的预测精度,同时也使得过拟合效应不会在训练中出现,为某公司财务状况的预测提供了一种新的途径。使用Adaboost算法结合神经网络是否能最有效的预测某公司财务状况的变化方向,无疑也将是未来发展的一个研究方向。而弱预测器的选取更是Adaboost的核心部分 [16],只有选取更优质的弱预测器才是提高强预测器的关键,因此选取更好的网络算法作为弱预测器将会是以后研究的重点。
基金项目
国家自然科学基金资助项目(U1504622,31671580);河南省高等学校青年骨干教师培养计划项目(2018GGJS079)。