1. 引言
1.1. 研究背景
在当今复杂多变的经济环境中,财务舞弊行为已成为一个全球性问题,严重破坏了资本市场的诚信基础,并可能引发系统性金融风险。
传统的财务舞弊识别方法主要依赖于审计师的经验判断和对财务报表的简单分析,该模式在实践的过程中会出现一些矛盾点,如手工审计抽样技术与非结构化数据处理需求间的矛盾日益凸显,可能导致审计周期的延长与边际成本的递增。
财务舞弊的检测数据源聚焦于企业的财务报表,如资产负债表、利润表、现金流量表等。多数研究表明,机器学习在财务舞弊识别中具有较高的准确性和效率,能够从大量的财务数据中快速、准确地发现异常数据,并进行分类、预测和识别。
1.2. 研究目标
目前阶段,财务报表的审核并非完全依靠人工审计,还伴随着技术的深度协同。为了减轻人工审计工作量,提高整体财务数据审核效率,本文致力于建立两个基于机器学习的财务舞弊识别模型,希望模型能够依据所选择的财务特征指标高准确率地识别出财务舞弊的情况,并不断优化模型的区分性能,为审计人员提供初步审计阶段的有力决策支持。
1.3. 研究方法
本文主要采用了模型建立法、文献调查法和比较研究法等。
① 模型建立法。本文基于经典财务舞弊理论框架,采用机器学习方法构建财务舞弊识别模型。在数据预处理阶段,我们利用SPSS、Excel等软件对分析财务报表主表的数据,并根据独立样本T检验的原理,合理利用软件筛选出具有显著判断力的财务特征变量。在模型构建阶段,我们分别运用随机森林模型以及XGBoost模型,构建出较高判别度的财务舞弊识别模型。
② 文献调查法。根据本文主题,结合中国知网等权威知识库,我们对财务舞弊理论、财务特征指标的选取以及模型理论公式等内容进行查阅,为本文的研究做出更加完整的理论支撑。
③ 比较研究法。本文的比较研究法主要体现在不同机器学习模型作为财务舞弊识别模型的性能优劣,本文依据两种模型在财务舞弊领域的性能优劣不同,进行尝试性比较研究。
1.4. 文献综述
我国对财务舞弊识别模型的研究主要从2005年开始。朱敏[1]从实证的角度通过我国上市公司的财务数据分析构建单因素方差分析方法等四种分析模型作为识别模型;刘君[2]采用径向基概率神经网络构建模型,与线性模型相比,提高了精确度;张新民[3]等通过Logistic回归技术得到模型总体识别率为71.3%;贺颖[4]基于偏最小二乘法的有效降维优势以及支持向量机的拟合度高等优势构建模型,使得舞弊公司、非舞弊公司的识别正确率都达到了80%以上;陈彬[5]建立了BP神经网络识别模型等四种模型,并以“期望错误分类成本法”为依据对比四种识别模型,得出Elman神经网络技术在财务舞弊识别模型上识别的准确率最高;成雪娇[6]采用GA-BP神经网络、支持向量机等三种算法对样本数据进行训练建模,并进一步通过模型叠加构建出了一个新的识别模型;王柳匀[7]基于分类算法构建了一些分类型识别模型,其中随机森林模型的准确率最高,达到79%;程新尧[8]基于两组舞弊指标,构建了机器学习模型、信息融合模型对舞弊进行识别;赵豪杰[9]对财务指标数据进行整理,构建了CNN和带注意力机制的BiLSTM融合模型——CNN-BiLSTM,并在纵向的多年度数据对比上,该模型的性能得到了提升;何子英[10]基于集成学习算法与SHAP的可解释机器学习模型,准确地识别出了上市公司的财务舞弊行为。
财务舞弊识别模型的发展经历了几个阶段:
在早期,财务舞弊识别模型主要通过关键指标的异常波动来识别风险,主要用到的模型有Altman Z-Score模型和Beneish M-Score模型,Altman Z-Score使用5个财务比率指标预测企业破产风险,Beneish M-Score通过8个财务特征指标检测盈余的操纵。该阶段的模型缺乏系统化的量化分析框架,并且指标的选择和阈值的设定具有较强的主观性。
中期阶段是统计学习方法盛行的时期,这一阶段发展了监督学习的核心算法如支持向量机(SVM)和EM算法,SVM通过核技巧将线性分类拓展到高维非线性空间,成为处理文本、图像等复杂数据的核心工具。EM算法则通过E步(期望步)和M步(极大步)的交替迭代,解决了含隐变量模型的参数估计问题。然而,该时期的模型高度依赖人工设计的特征,而特征选择的偏差可能遗漏关键舞弊信号,或引入冗余噪声,降低模型准确性和鲁棒性。
当前正处于机器学习与深度学习盛行的时期,财务舞弊识别模型已经进入了一个新的发展阶段,随机森林模型和XGBoost等作为机器学习的分支,在财务舞弊识别方面也展现出了很强的泛化能力。随机森林等集成学习方法,通过构建多棵决策树并综合其结果,具有很强的抗过拟合能力和泛化能力。
1.5. 假设条件
2. 数据预处理
2.1. 数据采集与数据清洗
在本文中,我们建模的目标是实现对不同公司的财务舞弊数据进行较高准确度地识别,因此在建模之前,我们需要收集不同公司的财务报表数据。根据CSMAR数据库提供的财务报表数据,我们选择从该数据库中下载2017~2023年的财务报表主表数据(包含资产负债表、利润表、现金流量表和所有者权益变动表)和舞弊公司的数据(包括证券代码、日期以及是否舞弊信息)作为本文的样本数据集,并把B股、北交所、新三板的股票删除,因为B股和A股是一个公司,而新三板和北交所的股票因挂牌和上市门槛较低、投资者准入门槛较高等因素而不具有代表性。同时,剔除金融业(证监会2012版行业分类)的财务报表数据,因为金融业的商业模式与其他行业有显著不同,这使得财务数据的披露以及生成方式也会有所不同,因此若不剔除金融业,则研究结果可能会收到这些差异的干扰,从而影响结果的准确性。为了简化研究的过程,我们只考虑年度财务报表,对于季度、半年度等会计中期不予考虑。数据采集过后,我们对缺失值和异常值进行处理,删除四个主表中的大量缺失值,并对一些明显下载过后异常的数据进行移除,得到一份清洗过后的数据集,数据采集流程见图1。
Figure 1. Data collection flowchart
图1. 数据采集流程图
2.2. 特征指标的构建与分析
为了确定能明显辨别出财务报表数据是否舞弊的财务指标,我们对所收集到的四个主表中的指标进行分析。为了能够比较容易地确定和分析指标,我们利用Excel的Power query的合并表功能依据两个关键字:证券代码与日期,将四张主表和舞弊公司表合成一张表。最后结合财务理论和会计学等相关知识将资产负债率、流动比率、净资产收益率(ROE)、净利率、经营净现金流/营业总收入、应收账款/销售收入、存货周转率和应收账款周转率作为我们本文研究的八个财务特征指标。
2.3. 特征指标的显著性检验
目前我们选出了八个与财务舞弊相关的指标,但每个指标对财务舞弊影响的显著性程度却未知,而且若财务特征指标过多,可能会造成后续建模的过拟合性。因此,还应对我们挑选的八个指标进行显著性检验,选出对财务舞弊影响最显著的特征指标。
关于财务特征指标的显著性检验的方法,我们选择SPSS的独立样本T检验。独立样本T检验用于比较两组独立样本的均值是否存在显著性差异。原假设为:两组独立样本的均值无显著性差异,而备择假设为:两组独立样本的均值有显著性差异。在T检验的过程中,将显著性水平定为0.05,将公司是否舞弊(即违规标志)作为分类变量,舞弊为1,非舞弊为0,将资产负债率等八个财务特征指标作为检验变量,分析不同指标的显著性差异,得到结果(见图2):
Figure 2. Independent T-test results visualization
图2. 独立样本T检验结果图
根据SPSS分析的结果图(见图2),在这套T检验的体系中,还包含了Levene检验。Levene检验是为了评估不同组之间的方差是否存在显著性差异,用来判断方差是否齐性。在Levene检验中,原假设是方差相等,而备择假设是方差不等。首先看Levene’s Test的Sig.值,若Sig.小于0.05,说明方差不齐,应看Equal variances not assumed行的Sig. (2-tailed)值,若Sig. (2-tailed)值小于0.05,则拒绝T检验的原假设,即财务特征指标在舞弊与非舞弊公司的均值存在显著性差异。若Sig.大于等于0.05,则说明方差齐性,应看Equal variances assumed行的Sig. (2-tailed)值,若Sig. (2-tailed)值小于0.05,则拒绝T检验的原假设,即财务特征指标在舞弊与非舞弊公司的均值存在显著性差异。同理,在T检验中,若Sig. (2-tailed)值大于等于0.05,则不拒绝T检验的原假设,即财务特征指标在舞弊与非舞弊公司的均值无显著性差异。
由独立样本T检验结果可以看出,所有指标都通过了上述Levene检验和T检验的筛选,但并非所有指标都可纳入财务特征指标的体系中。根据存货周转率的Mean Difference,即舞弊公司与非舞弊公司的均值差,舞弊公司异常高于非舞弊公司(约226.8),说明数据的单位可能存在问题,或者有异常值没有及时处理,为了简化问题的分析,我们将此指标删除,不作为本文的财务特征指标。根据应收账款周转率的Mean Difference,舞弊公司比非舞弊公司高约9.54,情况复杂,因为应收账款周转率越高,说明这个公司的应收账款回收速度快,这对企业的财务状况和运营效率有着积极影响,而舞弊公司的应收账款周转率高,只能说明舞弊公司利用该指标当作一个虚假的繁荣信号,希望在审计阶段蒙混过关,因此我们需要将这个与舞弊辨认预期情况不符的指标删除。
最终,留下本文研究的六个财务特征指标:资产负债率、流动比率、净资产收益率(ROE)、净利率、经营净现金流/营业总收入、应收账款/销售收入(见表1)。
Table 1. Final financial feature indicators table
表1. 最终财务特征指标表
最终财务特征指标 |
资产负债率 |
净利率 |
流动比率 |
经营净现金流/营业总收入 |
净资产收益率(ROE) |
应收账款/销售收入 |
2.4. 数据标准化
本文虽选取的财务特征指标都为比率的形式,但不同指标的比率取值差异较大,因此可将指标转换到相同的尺度,避免因量纲和量级差异导致的模型偏差。
标准化后的数据可以使模型更好地适应不同类型和规模的企业数据,提高模型的泛化能力,从而更准确地识别财务舞弊行为。
通过标准化,数据的分布更加均匀,可以减少模型训练过程中的资源消耗。
财务数据中可能存在大量的异常值和噪声,而标准化可以减少数据中的异常值和噪声对模型的影响,从而降低模型的过拟合风险。
基于以上数据标准化的优势,我们决定将包含六个特征值的财务数据进行Z-Score标准化,得到一份均值为0,方差为1的标准正态分布数据,公式如下:
(1)
其中,X表示原始数据点,
表示特征数据的均值,
表示特征数据的标准差,X为原始数据点。
结合SPSS统计软件的使用,我们最终得到一份经过Z-Score标准化后的数据。
3. 模型建立与评估
3.1. 随机森林模型的建立与评估
首先,我们从Python的机器学习库的model_selection模块中导入train_test_split函数,用于将数据集随机分割为训练集和测试集;接着,从该库的ensemble模块中导入RandomForestClassifier类,用于构建和训练随机森林模型;同时,导入accuracy_score、precision_score、confusion_matrix等,提供分类模型性能的评估指标;并导入SMOTE类,调整分类样本不平衡的问题。
导入部分结束后,先让Python读取财务数据集,包含1988条非舞弊数据与1416条舞弊数据。并删除“证券代码”、“证券简称”和“日期”这三个非特征列,将“资产负债率”等六个财务特征指标设置为一个特征矩阵,同时将“违规标志”(包含0和1两类)设置为目标变量。接着,划分训练集和测试集,将数据集的20%划定为测试集,其余80%划定为训练集,令stratify与目标变量相等,确保训练集和测试集中各类别的比例与原始数据集中的比例相同,并将随机种子设为42,保证实验的可重复性。下一步,建立随机森林模型并进行训练,先指定森林中决策树的数量为100棵,树的数量过多虽会提升模型准确率,但会增加计算成本,而“100”能在准确率和效率之间取得平衡;并控制每棵决策树的最大深度为5层,防止模型过拟合;同时固定随机种子,保证结果可复现。最后,运用混淆矩阵评估模型,输出准确率、精确率等组成的模型评估报告。
在随机森林中,每棵决策树通过不纯度下降选择最优分裂点,通常用信息增益作为其核心指标,信息熵公式如下:
(2)
其中,D为当前节点的数据集,
为第t类样本在D中的占比。
信息增益公式如下:
(3)
其中,
代表分裂后子节点的数据集,k表示分裂后生成的子节点的索引。
构建决策树的算法会自动选择信息增益最大的分裂方式,以构建高效且准确的决策树模型。
同时,随机森林通过Bagging抽样生成每棵树的训练子集,某个样本在自助采样过程中被抽中的概率如下:
(4)
其中,原始财务数据集的数据量大小为N。
训练部分结束,最终评估训练好的模型在测试集上的表现,得到模型的预测结果和预测概率,结果如下:
Figure 3. Classification evaluation metrics for the random forest model
图3. 随机森林模型分类评估报告
根据该分类评估报告(见图3),可知模型的整体准确率为0.71,准确性能较好;由非舞弊类样本的精确率为0.73,舞弊类样本的精确率为0.68,可知该模型对舞弊与非舞弊的预测精度较高;同时,非舞弊类样本的召回率为0.81,说明模型对非舞弊企业的识别程度较高,但舞弊类企业的召回率只有0.58,说明模型对舞弊企业的识别度有待提高;根据两类样本的f1分数都高于0.6,可知模型对两类样本的判别能力较可靠,但仍有提升空间(财务舞弊识别混淆矩阵见图4)。
根据当前随机森林模型AUC的值为0.73 (见图5),说明该模型可作为初步判断财务样本为舞弊或非舞弊的工具,应用于审计的初期,一定程度上可达到缓解审计人员工作量的效果。
为了直观看出本文所选六大指标对财务舞弊识别模型的重要性程度,我们基于随机森林模型输出指标的重要性得分,见图6:
Figure 4. Confusion matrix heatmap for random forest model
图4. 随机森林模型混淆矩阵热力图
Figure 5. ROC curve plot for random forest model
图5. 随机森林模型ROC曲线图
由财务特征指标重要性排序图可知(见图7),“净利率”、“净资产收益率”以及“应收账款/销售收入”三大指标对财务舞弊识别模型的影响最大,说明这三者的分类判断能力最强;而后三者的分类判断能力较弱。因此在今后财务舞弊识别模型的发展过程中,可以将前三者视为对该模型重要性最强、判断力最好的三个指标。
Figure 6. Feature importance score
图6. 特征重要性得分
Figure 7. Importance ranking diagram of financial characteristic indicators
图7. 财务特征指标重要性排序图
3.2. XGBoost模型的建立与评估
首先,我们从sklearn.model_selection模块中导入train_test_split,用于将样本数据集划分为训练集和测试集,并从sklearn.metrics模块中导入confusion_matrix、classification_report等多个用于评估的函数和类;接着,从XGBoost库中导入XGBClassifier类,用于创建XGBoost模型。
导入部分结束后,先加载财务数据集,将本文研究的资产负债率等六大财务特征指标设置为一个特征矩阵,同时将违规标志设置为目标变量。接着,对数据进行清洗,将无穷大值转换为缺失值,并过滤部分缺失值,保留80%完整性样本,再用Z-Score异常值过滤的
原则去掉部分异常值,防止极端值的干扰。在模型建立前本文已经结合SPSS软件对数据进行预处理,但二次数据清洗可确保数据质量更加稳定,提升模型的鲁棒性。该阶段结束后,本文使用分层抽样方法确保训练集和测试集中各类别比例与原始数据集保持一致,划分原始数据集的20%为测试集,其余80%为训练集,以应对类别不平衡的问题。随后,创建XGBoost模型,并动态计算类别权重,处理样本中两类别比例不平衡的问题,提升模型对少数类的识别能力;将模型的迭代次数设置为1000,即训练1000棵树,较大的迭代次数可提升模型的拟合能力,同时设置初始的较小深度为3,间接控制叶子节点数,以及更保守的学习率0.5,有助于模型稳定,防止模型过拟合。在该阶段可体现该模型的目标函数,包括损失函数和正则化项两部分,如下:
(5)
该公式中,前一项为损失函数,后一项为正则化项。其中,
表达式如下:
(6)
其中,
为树的总叶子节点数,
表示叶子节点的权重,
为叶子分裂阈值,
为正则化系数。
设置每棵树训练时使用的样本比例为0.7,使用的特征比例同样为0.7,通过随机选择部分样本和部分特征,可增加模型多样性,减少模型方差,防止模型过拟合,提高模型的泛化能力;设置随机种子数,保证模型可复现;使用直方图算法对模型训练过程进行加速,加速树的构建过程。
直方图算法的加速本质上是通过最大化分裂增益来选择最佳分裂点,公式如下:
(7)
其中,
、
分别表示左右子节点的一阶导数和以及二阶导数和,
为正则化系数,防止模型过拟合,
为分裂阈值,当增益大于0且超过
才可分裂,否则停止分裂。增益对模型的目标函数有着直接的影响,增益越大,分裂对模型的优化效果越显著,而通过最大化增益可确定最佳分裂点,但是增益过大可能造成模型过拟合,所以正则化系数等参数会对模型进行约束,防止模型过拟合。最终,通过增益与参数间的相互平衡,模型的性能得到优化。
构建完XGBoost模型后,本文通过带早停的交叉验证训练方法来训练模型,并在训练过程中监控模型在测试集与验证集上的性能表现。“早停”机制指如果测试集在若干轮内没有提升,模型训练将提前停止,可节省计算资源。
模型训练部分结束,最终基于混淆矩阵得到模型评估报告(见图8),结果如下:
Figure 8. Classification evaluation metrics for the XGBoost model
图8. XGBoost模型分类评估报告
根据该分类评估报告,可知模型的整体准确率为0.72,准确性能较强;由非舞弊样本的精确率为0.70,舞弊样本的精确率为0.74,可知该模型对舞弊类样本和非舞弊类样本的预测精度较高;同时,非舞弊类样本的召回率为0.77,说明模型对非舞弊类样本的识别能力较强,舞弊类样本的召回率为0.67,相比于本文研究的前两个模型已有了显著提升,模型对舞弊样本的识别能力增强;由模型对两类样本的f1分数均在0.70及以上,可知模型对两类样本的判断能力较可靠。根据模型的AUC值为0.7906,可知模型对两类样本的分类性能较强(该模型混淆矩阵见图9)。
Figure 9. Confusion matrix heatmap for XGBoost model
图9. XGBoost模型混淆矩阵热力图
模型在不断迭代训练弱学习器时,测试集与训练集的AUC出现了如下变化。
Figure 10. AUC evolution plot during model iteration
图10. 模型迭代中的AUC变化图
模型在训练集上的区分能力随迭代次数的增加逐渐上升(见图10),这是由于模型不断增加决策树以优化损失函数;而模型在测试集上的区分能力则是随着迭代次数的增加先上升,随后进入平台期,这是由于模型不断学习训练集,造成过拟合现象,导致了泛化能力的停滞。
Figure 11. Recall-precision curve for fraud detection using XGBoost
图11. XGBoost舞弊类召回率与精确率关系曲线
在保证舞弊精确率的前提下提升舞弊召回率是本文研究的难点,为了找到该难点的突破口,可从这两种指标的关系入手(见图11)。由该曲线可知,存在舞弊精确率和召回率均在0.7及以上的点,这些点可视为舞弊识别的“平衡点”,能较精确地识别出舞弊企业,并对舞弊企业的识别程度较强。因此,如何优化模型使得模型舞弊识别达到“平衡点”为后续研究的下一步目标,优化后的XGBoost模型可为金融机构提供更好的财务舞弊识别技术。
4. 结论与展望
4.1. 研究结论
本文基于机器学习分别构建随机森林模型和XGBoost模型作为财务舞弊识别模型,打破了传统意义上完全依赖人工经验的财务舞弊识别方式。结合机器学习模型的多方面技术优势,如捕捉非线性关系能力等能力,本研究将其优势与财务舞弊现象相结合,并使用Python建立财务舞弊识别模型,三种机器学习模型的整体准确率均达到70%。该模型可有效应用于财务审计工作的初步筛查阶段,不但能减轻审计人员的工作量,还能为审计智能化转型提供新的思路和方向。
在研究初始阶段,本文从CSMAR数据库收集了七年的财务报表主表数据以及舞弊公司相关数据,同时将数据集合并,结合舞弊相关理论以及SPSS软件的独立样本T检验方法确定了本研究采用的六大财务特征指标。
在随机森林模型的构建阶段,本文运用Python完成了模型的建立,并引入SMOTE采样技术,该技术可解决舞弊样本与非舞弊样本的数据量不平衡问题,打破了传统采样技术如随机过采样等造成的模型过拟合问题,增强了模型的泛化能力。
在XGBoost模型的构建阶段,本文对财务数据集进行了第二次数据预处理,并用Z-Score异常值过滤的
原则去掉部分异常值,防止极端值的干扰。同时设置模型迭代次数等参数,使用带早停的交叉验证方法来训练模型,最后达到提升模型泛化性能与准确性的目的。
在两类模型的评估阶段,我们使用混淆矩阵评估方法对三类模型分别进行评估,可知三类模型的精确率均在0.7附近,说明模型对舞弊与非舞弊企业的预测精度较高;XGBoost模型的舞弊召回率显著高于前两类模型,说明该模型的舞弊识别能力相对更好。
4.2. 研究局限性与未来展望
本研究建立的前两类机器学习模型只适用于财务审计的初期筛选阶段,由于两模型对与舞弊企业样本的召回率均在0.5~0.6区间内,说明模型对舞弊企业的识别度还有待提高,无法完全脱离审计人员而独立识别包含舞弊样本的财务数据集。而XGBoost模型的舞弊召回率虽接近0.7,但还存在提升空间。同时,本研究仅考虑了部分财务指标,并且没有引入其他维度的信息,例如股东信息等,而这些维度的数据也可能对财务舞弊造成影响,缺乏一定的客观性。基于此,应引入多模态数据融合的财务舞弊识别模型,其为未来发展的突破方向,本质在于整合财务数据与其他非结构化的多源信息,如图像、文本等,并用自然语言处理技术等对不同类型的数据进行处理,同时需确定采取何种融合策略,将不同类型的数据结合起来,进一步提升财务舞弊识别模型的客观性。