为了有效的克服传统财务预测方法的局限性并进一步提高财务状况预测正确率,提出一种Adaboost算法和Elman神经网络的财务组合预测方法。该方法充分利用了Elman网络的动态特性和Adaboost算法能提高弱预测器精度的特性来提升预测的精度。通过对某上市公司财务数据的分析,结果证明,该方法经济有效,较大程度的提升了预测精度,并能够及时、合理地反映财务数据的危机状态。 In order to effectively overcome the limitations of traditional financial forecasting methods and further improve the accuracy of financial situation prediction, a financial combination forecasting method based on Adaboost algorithm and Elman neural network is proposed. This method makes full use of the dynamic characteristics of Elman network and Adaboost algorithm can improve the accuracy of weak predictors to improve the accuracy of prediction. Through the analysis of the financial data of a listed company, the results show that the method proposed in this paper is economical and effective, improves the prediction accuracy to a great extent, and can reflect the crisis state of financial data timely and reasonably.
周玉,牛会宾,邵科嘉
华北水利水电大学电力学院,河南 郑州
收稿日期:2019年11月13日;录用日期:2019年11月25日;发布日期:2019年12月2日
为了有效的克服传统财务预测方法的局限性并进一步提高财务状况预测正确率,提出一种Adaboost算法和Elman神经网络的财务组合预测方法。该方法充分利用了Elman网络的动态特性和Adaboost算法能提高弱预测器精度的特性来提升预测的精度。通过对某上市公司财务数据的分析,结果证明,该方法经济有效,较大程度的提升了预测精度,并能够及时、合理地反映财务数据的危机状态。
关键词 :Elman_Adaboost算法,财务预警系统,Elman网络,Adaboost算法
Copyright © 2019 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
公司财务预警系统作为一种报警系统,是为了预防公司财务系统运行与公司所预期的目标不一样或者偏离,这种报警系统具有很强的预见性和针对性。它通过对公司各项指标的大数据进行综合分析,从而对公司最近的财务状况进行分析从而对公司未来的发展趋势进行有效的预测,以便对公司决策者的一些决定提供强有力的支撑 [
对于公司的财务金融预测,最开始提出了一元判定的方法,该方法简单,使用方便,由于只是重视单一指标的分离能力,所以该方法就能人为地改变那些影响结果的一些数据,另外,采用多个指标进行判断时,各项指标之间的关系也无法直接进行判定,这都会影响最终预测的结果 [
Elman网络是一种动态神经网络,该网络相比较于BP网络是在其结构单元中引入了反馈环节,这样就对数据的处理具有了很强的时变性和实时性能力。也正是由于承接层中反馈通道的存在,使得Elman网络具有了很强的检测识别能力和记忆能力。这些特点都在很大程度上提升了系统的动态变化能力,可以更好预测动态数据,其预测性能要优于BP神经网络 [
图1. Elman网络结构
Elman网络学习过程以图1为例,Elman网络的非线性状态空间表达式为:
y ( k ) = g ( w 3 x ( k ) ) (1)
x ( k ) = f ( w 1 x c ( k ) + w 2 ( u ( k − 1 ) ) ) (2)
x c ( k ) = x ( k − 1 ) (3)
其中y (k)为网络的输出值,g (*)为隐含层到输出层的传递函数,f (*)为输入层到隐含层传递函数。其中u为输入向量,xc为承接层所反馈的状态向量。
Elman神经网络学习指标函数采用误差平方和函数,是通过误差的反向传递来逐步调整权值的。
E ( w ) = ∑ k = 1 n ( y k ( w ) − y ˜ k ( w ) ) 2 (4)
式中, y ˜ k ( w ) 为目标输入向量。
Boost算法主要出自于PAC学习模型,PAC学习模型主要探索的就是到底哪些问题是可以通过学习得到改善的和解决这些问题的具体算法又是什么的问题。
在1995年,Freund和Schapire提出了Adaboost算法,弱预测器正确率的下限和弱预测器的相关先验知识已经不再是寻找弱预测器的限制条件,并且这种算法在很多研究背景下都可以运用,这样就使得弱预测器的选择更加广泛,最重要的是还具有了和Boosting算法同样的效率,所以此算法一经提出就受到了广泛欢迎 [
Adaboost算法思想也就是:多听其他人意见,最后综合所有人意见进行最终决策。训练得到的前一个基本预测器预测错误的样本会得到加强,正确样本会减弱。即如果样本预测错误,就增大预测错误样本权重,而正确样本权重则被减小,之后权值改变过的全体样本,会再次被用来训练下一个基本预测器。每次训练都会得到一个新的弱预测器,最后用这些训练得到的弱预测器合成强预测器,弱预测器的比重是由该弱预测器预测的正确率决定,正确率越高,在最终合成的强预测器所占比重就越大。直到强预测器的误差率满足我们所设定的误差值或者是迭代次数已经达到了事先设定的次数 [
Adaboost算法流程如下:
给定一个训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } 其中 x ∈ χ ,而实例空间 χ ∈ R n ,yi属于标记集合 { − 1 , + 1 } 。
步骤1:首先,初始训练数据的权值分布,若训练样本个数为N,则每一个训练样本的权重都设定为1/N。
D 1 = ( w 11 , w 12 , ⋯ , w 1 i , ⋯ , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , ⋯ , N (5)
步骤2:进行迭代得到M个基本预测器。
使用具有权值分布 D m 的训练数据集学习,得到基本预测器:
G m ( x ) : χ → { − 1 , + 1 } (6)
计算 G m ( x ) 在训练数据集上的预测误差率:
e m = P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) (7)
计算 G m ( x ) 的系数, χ m 表示 G m ( x ) 在最终的强预测器中所占的比例:
χ m = 1 2 ln 1 − e m e m (8)
更新训练数据集的样本权重,用于训练下个预测器:
D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , ⋯ , w m + 1 , i , ⋯ , w m + 1 , N ) (9)
w m + 1 , i = w m i Z m exp ( − ∂ m y i G m ( x i ) ) , i = 1 , 2 , ⋯ , N (10)
其中, Z m 是规范化因子,使得 D m + 1 成为一个概率分布:
Z m = ∑ i = 1 N w m i exp ( − α m y i G m ( x i ) ) (11)
步骤3:组合各个弱预测器。
f ( x ) = ∑ m = 1 M α m G m ( x ) (12)
从而得到最终预测器,如下:
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) (13)
并且Adaboost具有很强的自适应能力,只要弱预测器的正确率都不大于0.5,就不会对最终强预测器的合成有影响。
本文将AdaBoost算法用于预测判断公司的财务运行状况,采用Elman神经网络用来训练弱预测器来集成最后预测精度更高的Elman-AdaBoost [
图2. Elman_Adaboost算法模型
其算法步骤如下:
步骤1:数据的选择以及网络初始化。先从整个样本中选择m组训练数据,初始权值刚开始均分,权值为 D t ( i ) = 1 / m ,再根据样本的特性以及样本的背景意义去选取网络结构,最后再进行初始化Elman网络权值和阈值。
步骤2:弱预测器预测。训练第t个预测器时,用从样本中选取的训练数据去训练Elman神经网络并且预测得到训练数据输出,其训练误差公式可以表达为:
e t = ∑ i D i ( i ) , i = 1 , 2 , ⋯ , m ( g ( t ) ≠ y ) (14)
式中,g (t)为预测结果;y为期望预测结果。
步骤3:计算预测样本权重。根据上式预测的误差来计算样本序列的权重,其权重计算公式为:
a t = 1 2 ln ( 1 − e t e t ) (15)
步骤4:测试样本数据权重调整。根据上式中得到的预测序列权重来调整下个弱预测器训练样本的权重,调整公式为:
D t + 1 ( i ) = D i ( i ) B t ∗ exp [ − a t y i g t ( x i ) ] (16)
式中,Bt是一种归一化因子,其作用是使得权值之和相加为1。
步骤5:强预测器获取。训练T次之后一共得到了T组弱预测函数 f ( g t , a t ) ,再由T组弱预测函数 f ( g t , a t ) 组合得到了最后精度更高的强预测函数h (x):
h ( x ) = s i g n [ ∑ t = 1 T α t ⋅ f ( g t , a t ) ] 。 (17)
本论文所验证数据是来源于上海某公司的1350组财务状况数据,随机选取1000组用来训练,剩余350组进行测试。部分实验数据如表1所示。
序号 | 成本费用利用率 | 资金营运能力(万元) | 公司总资产(万元) | 总资产增长率(%) | 流动比率(%) | 营业现金流量(万元) | 审计意见类型 | 每股收益(元) | 存货周转率(%) | 资产负债率(%) | 财务状况类型 |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | 3000 | 10 | 5 | 2 | 15,910 | 1 | 36 | 3 | 27 | −1 |
2 | 2 | 3000 | 10 | 3 | 2 | 35,000 | 1 | 36 | 3 | 27 | −1 |
3 | 1 | 5700 | 10 | 5 | 2 | 80,000 | 1 | 36 | 3 | 27 | −1 |
4 | 2 | 5000 | 10 | 4 | 2 | 91,000 | 1 | 36 | 3 | 42 | 1 |
5 | 1 | 10,000 | 10 | 5 | 2 | 95,000 | 1 | 36 | 3 | 42 | 1 |
6 | 3 | 10,000 | 3 | 1 | 2 | 102,000 | 36 | 1 | 3 | 39 | 1 |
7 | 1 | 10,000 | 6 | 1 | 2 | 97,000 | 60 | 1 | 3 | 39 | 1 |
8 | 2 | 5000 | 8 | 1 | 2 | 8136 | 36 | 2 | 3 | 39 | 1 |
9 | 2 | 4200 | 2 | 1 | 1 | 63,000 | 36 | 1 | 3 | 39 | −1 |
10 | 3 | 4500 | 1 | 3 | 1 | 100,000 | 36 | 1 | 1 | 59 | −1 |
表1. 部分原始数据
对于公司财务类型是通过这10项指标进行判定的,最后判定的财务类型一共为两种,1代表财务状况良好,−1代表财务状况出现问题。通常为了预防一些非正常数据,比如一些数据太大或者太小都会对实验结果直接造成决定性的影响,就必须先对实验数据进行归一化处理 [
作为弱预测器的Elman网络结构的选择要依据本文所选取样本的维度来确定,每一个维度数据代表一个评定指标,因为财务预测选取了10个指标去预测公司财务状况,输出结果为1或者−1,1代表财务状况良好,−1代表财务状况出现问题,所以输入层为10,输出层为1。隐含层选取范围在5到25之间。从中选择了隐含层H = [5 10 15 20 25]来训练网络,来寻找最优隐含层数目,假设生成了K个弱预测器 [
图3. Elman-Adaboost网络训练曲线图
在不同大小H、K值下仿真预测正确率如图4所示,由此可得,在不同大小H、K值下的预测器正确率如表2所示。
图4. 不同K、H下强预测器正确率
K | H | ||||
---|---|---|---|---|---|
5 | 10 | 15 | 20 | 25 | |
5 | 92.3% | 93.4% | 93.7% | 91.7% | 90.6% |
10 | 94.7% | 96.3% | 95.7% | 94.7% | 93.5% |
15 | 94.1% | 95.4% | 94.7% | 94.2% | 94.0% |
20 | 93.4% | 95.7% | 94.4% | 94.1% | 93.7% |
表2. 预测正确率
由表2可得,当K = 10、H = 10时,正确率达到了96.3%,正确率最高。此时预测错误的样本在预测类别与实际类别比较图的标记如图5所示。
图5. 预测类别与实际类别比较图
通过以上正确率对比分析,最后选择了隐含层个数为10的Elman神经网络作为弱预测器,其中选取的弱预测器的数目为10,最后组成最优的Elman-Adaboost强预测器,其平均预测正确率为96.3%。
BP神经网络在预测识别领域被广泛运用 [
图6. 预测类别与实际类别比较图
算法名称 | 预测正确率 |
---|---|
BP神经网络算法 | 93.5% |
Elman网络算法 | 94.6% |
BP_Adaboost算法 | 96.0% |
Elman_Adaboost算法 | 96.3% |
表3. 各个网络算法的预测正确率
由表3可以看出:由于Elman神经网络的动态性能更好,相比较于BP神经网络能够更好的反映对象的动态特性,所以采用单一Elman神经网络的预测精度比单一BP神经网络精度要高;采用Adaboost算法结合BP、Elman网络组成的强预测器的预测精度要比采用单一BP神经网络和Elman神经网络的预测精度要高,说明Adaboost算法是一种能有效提高预测精度的算法;使用BP神经网络作为弱预测器组合成的BP_Adaboost算法比用Elman神经网络作为弱预测器组合成的Elman_Adaboost算法的精度要低,所以,相比于BP神经网络,选择具有更好动态特性的Elman神经网络作为弱预测器更能有效提高最终的预测精度,而改进的Elman网络作为弱预测器的预测精度应该会更高,将会是未来探究的方向。
本文提出了一种能有效预测某公司财务状况的Elman_Adaboost强预测器方法,该方法选用了具有更好动态特性的Elman神经网络作为弱预测器,通过Adaboost算法融合了多个弱预测器产生强预测器。并通过与单一BP,Elman神经网络以及BP_Adaboost强预测器进行精度比较,从而可以得到本方法具有更高的预测精度,同时也使得过拟合效应不会在训练中出现,为某公司财务状况的预测提供了一种新的途径。使用Adaboost算法结合神经网络是否能最有效的预测某公司财务状况的变化方向,无疑也将是未来发展的一个研究方向。而弱预测器的选取更是Adaboost的核心部分 [
国家自然科学基金资助项目(U1504622,31671580);河南省高等学校青年骨干教师培养计划项目(2018GGJS079)。
周 玉,牛会宾,邵科嘉. 基于Elman_Adaboost算法的财务预警器的设计The Design of the Financial Early Warning System Based on Elman-Adaboost[J]. 计算机科学与应用, 2019, 09(12): 2208-2217. https://doi.org/10.12677/CSA.2019.912246