企业关联交易图的离群点挖掘研究
2019-05-16赵晓永赵熙岑
赵晓永,赵熙岑
(北京信息科技大学 信息管理学院,北京 100192)
0 引言
企业关联交易是企业经营中经常发生但又容易发生不公平与舞弊行为,从而造成企业损失的交易,是审计工作重点审核的内容之一[1]。企业关联交易的数据相互之间构成了复杂的图结构形式,每个节点之间有相互依赖关系,依赖关系也有强有弱,传统审计方法在如此繁杂的数据中发现异常的难度越来越大[2-3]。
离群点[4](outlier)是指与数据集中的其它数据有明显偏离,使人怀疑这些数据点是由不同机制产生的。离群点检测(outlier detection),也称为离群点挖掘(outlier mining),着力于从数据集中发现显著不同于主要部分的数据点,其目的是消除噪声或者是发现潜在的有用的信息,因其广阔的应用前景,受到了广泛的关注和研究。
目前针对关系型数据的离群点挖掘方法研究较多,其研究方法有基于统计的方法[5-6]、基于密度[7-8]的方法、基于距离的方法[9]、基于信息论的方法[10-11]以及基于子空间划分的方法[12]等。由于图结构数据更为复杂,对于图类数据的离群点挖掘研究尚处于初期阶段[13-14]。文献[15]提出了一种使用最小描述长度(MDL)原理来寻找边和子图离群值的方法;文献[16]使用节点及其邻居特征之间的相似性来确定边异常值;文献[17]使用异构马尔可夫随机场(HMRF)方法与底层社区同时确定离群边;文献[18]中提出了使用特征向量分析来比较子图与完整图的背景行为并相应地将它们声明为异常。图结构固有的复杂性,使得用户监督在图离群挖掘中尤为重要。文献[19]提出一种FocusCO算法,在用户监督的帮助下,在归因图中同时发现聚类和异常值;文献[20-21]则使用查询模板方法,由用户确定具有特定属性的异常子图。
本文对企业关联交易图的离群点挖掘问题进行了研究,总结分析了关联交易图数据的特点,根据这些特点对rPCA、CMGOS和One-class SVM三种图离群点挖掘算法进行了对比分析,并提出了采用密度峰值聚类来改进的CMGOS算法。实验表明,One-class SVM算法因其本质是一种数据新颖性检测的方法,不适于异常企业关联交易挖掘场景;而由于企业关联交易数据的节点属性对依赖性的影响,rPCA算法与CMGOS算法较适合于企业关联交易图离群挖掘;改进后的CMGOS算法检测离群点的效果得到了较好地提升。
1 整体框架
本研究的整体流程如图1所示。
2 算法分析
2.1 rPCA算法
rPCA(robust principal component analysis)是在PCA算法的基础上发展起来的,本质与PCA算法相同,是研究数据如何降维到低维空间的最佳投影问题,核心是通过矩阵分解将原始数据矩阵分解成2个矩阵相加。其中一个是特征间线性相关的低秩矩阵,包含了结构信息;另一个是包含噪声的稀疏矩阵。rPCA算法通常先基于马氏距离(Mahalanobis distance)对原始数据进行修剪处理,再利用PCA算法计算相应的离群分数。
2.2 One-class SVM算法
One-class SVM(support vector machine)算法是传统支持向量机的半监督形式,用最优的超平面将数据集从原点分离出来。目标决策函数输出代表数据被分在了超平面的某一边,并使用目标决策函数的最大值按照一定比例缩放分数,输出连续的离群分数。离群分数大于1.0的数据点即为离群点。
2.3 CMGOS算法
CMGOS(clustering-based multivariate gaussian outlier score)[22]算法通过估计多变量高斯模型来执行局部密度估计,从而对数据集进行聚类分析。离群分数通过聚类的结果与聚类中心之间的距离大小计算。其聚类算法选择了k-Medoids算法以减小k-Means算法划分结果的误差,对噪声鲁棒性比较好。但是k-Medoids算法需要手工设置类别数量,而且运行速度较慢,计算质心的步骤时间复杂度是O(n^2),不适于大规模数据的分析。
2.4 改进的CMGOS算法
2014年Rodriguez和Laio在《Science》上提出了DPC(density peaks clustering)密度峰值聚类[23-24]方法,为聚类算法的设计提供了新的思路。文中提出聚类中心同时具有2个特点:1) 自身密度大, 即被比它密度小的邻居点包围; 2) 与比它密度大的数据点的距离相对较远。基于这2个假设的DPC算法思想简洁新颖,所需参数少,无需事先设定类别数量,也不需要迭代求解,能够快速有效地发现任意形状的簇,可以很好地描述数据分布。同时DPC算法只考虑点与点之间的距离,不需要将点映射到一个向量空间中,算法复杂度也较低,一经提出就引起学术界广泛关注。本文使用DPC代替CMGOS算法中的k-Medoids来完成聚类,对原CMGOS算法进行改进。
3 实验
3.1 数据集
数据集来源于国泰安数据中心与各上市公司公开的财务年报、中报、季报等,经整理后作为本文实验用数据集合。数据集包含证券代码、公告日期、公告类型、交易性质、交易事项、交易涉及金额、关联关系等多个属性,如图2所示。
数据集字典是对数据集进行说明的文本文件,包括各项属性的中文说明以及每个属性中经过整理变换的数据信息的说明,如图3所示。
图3 数据字典部分展示截图
3.2 数据可视化
经过分层抽样以及过滤缺失值后数据集中总共有1000条数据,其中有24个离群数据,离群数据占比为2.4%。将数据预处理之后,得到相应的数据可视化结果如图4所示,可以看出该数据呈现典型的图状结构。
图4 部分交易数据
公司关联交易数据集中关联交易事项分类主要集中于商品交易类、提供或接受劳务类、资金交易类、担保与抵押类、租赁类、股权交易类,如图5所示。
图5 关联交易事项分类数据分布
图6中可看出关联交易事项涉及的金额分布较集中,但个别值偏高。
图6 关联交易涉及金额分布
3.3 模型参数
根据3.2所述,将rPCA算法的正常数据占比参数设置成0.976;One-class SVM算法的核函数参数设置为rbf,以处理线性不可分数据;CMGOS算法中的k-Mediods聚类个数设置为2,正常数据占比设置为0.976,其他参数使用默认值;改进的CMGOS算法中的DPC聚类算法参数均使用默认值。
3.4 实验结果对比
利用改进的CMGOS算法进行离群点检测,使用精确率、召回率和AUC值来评价模型效果,分别与rPCA、OneClassSVM和CMGOS模型进行对比,结果如表1所示。
表1 算法对比结果
4种算法的离群点检测结果如图7所示。
图7 离群点检测结果
从实验结果可以看出,上述4种算法在进行离群点挖掘时,精确率普遍较高,原因在于数据集中离群点是极少数的异常数据,大部分数据都是符合正常的事实背景的,算法对正常数据的判断大部分都是正确的,所以精确率较高,但精确率指标并不能直接反应离群检测效果。AUC值是离群挖掘算法评价指标的金标准[4],本文提出的改进的CMGOS模型AUC值有了明显提升,离群检测效果更好。
4 结束语
本文对企业关联交易图的离群点挖掘问题进行了研究,在总结分析关联交易图数据特点基础上,对rPCA、CMGOS和One-class SVM三种离群点挖掘算法进行了对比分析,并提出了采用密度峰值聚类来改进的CMGOS算法。实验表明,rPCA算法与CMGOS算法较适合于企业关联交易图离群挖掘,改进后的CMGOS算法检测离群点的效果得到了较好提升。公司关联交易方面只是审计工作的一部分内容,如何更深入地将离群点挖掘算法应用到审计工作的其他场景,是需要进一步研究的问题。