基于孤立点分析的审计线索特征发现方法探讨
王秦辉(审计署京津冀特派办)
【发布时间:2010年10月25日】
字号:【大】 【中】 【小】

[内容摘要] 在被审计单位提供的海量数据中往往蕴涵着极其丰富的信息,其中就有一些能够为揭示审计线索而表现出蛛丝马迹的数据,它们和其他数据相比显得有些“异常”和“特别”,称其为孤立点或异常点。本文探讨基于孤立点分析的审计线索特征发现方法,通过审计案例可以看到检测被审计数据中的孤立点能够及时、准确地发现疑点,从而揭示审计线索,达到审计目的。
[关键词] 孤立点分析  特征发现  计算机审计

1 引言
孤立点检测是数据挖掘中的一个重要方面,用来发现数据源中显著不同于其他数据或行为的异常数据和异常行为。在很多数据挖掘算法中对孤立点的检测分析是为了最小化孤立点的影响或者是剔除它们,因为此时的孤立点被看作是影响挖掘分析效果的噪声数据。然而对审计分析而言,这些孤立点相反成为关注的重点,因为异常的数据和异常的事件以及异常的发生频率等非一般性的情况,有可能隐藏着违法违规的行为,或者反映出相关系统可能存在着某些缺陷和问题。这些异常在数据集中就表现为孤立点,在审计事项中就可能是审计线索的特征。此外,有的孤立点虽然没有反映违规违纪的行为,但它们在数据特征上异于大多数点,也就是说当规则确定后,大部分个体都会在规则下发展,因而表现为具有相同的趋势,孤立点却背离了主导趋势,即使它不是违规的,也有值得特别关注的地方。因此,从这个角度说,数据中的孤立点可以看作审计线索的特征表现。面对海量的审计数据,需要借助于有效的孤立点检测和分析方法来发现这样的异常数据,由此来揭示审计线索,发现一些舞弊、违背规律和规定的行为,为审计延伸创造条件。
本文第二部分介绍审计分析中孤立点的特点;第三部分介绍基于孤立点分析的审计线索特征发现方法;第四部分通过审计案例介绍如何利用孤立点分析来发现审计线索特征;最后是小结。
2 孤立点与审计线索特征
2.1 孤立点的概念
孤立点是数据集中与众不同的数据,使人怀疑这些数据并非随机偏差,而是产生于完全不同的机制[1]。与在数据挖掘中被认为噪声或异常不同,孤立点检测算法认为,孤立点可能是某种潜在的知识,如分类中的反常实例、不满足规则的特例或者是观测结果与模型预测值的偏差等。
数据集中孤立点产生的原因是多方面的,可以分为人为原因和非人为原因。具体可能表现为:由人为执行错误导致的;由人为欺诈行为导致的;由仪器或设备错误导致的;由数据总体中的自然偏差或者固有的数据变异导致的;或由系统的行为改变或故障导致的等等。这些孤立点对挖掘数据集蕴含的一般规律也许发挥不了积极的作用,但是对它们产生的原因进行分析却能获取十分有价值的信息。所以说,孤立点在一些人眼里是噪声,而在另一些人眼中却是有用的信息。作为一名有经验的审计人员,应该正确看待孤立点在数据集中的作用。
2.2 审计分析中的孤立点
审计分析中,数据中的孤立点可以看作审计线索的特征表现。在进行孤立点检测之前,需要定义一些规则来判定孤立点。因为不同行业的业务数据、财务数据、适用的法律法规等具有不同的特点,所以这样的规则必然具有一定的针对性,在进行具体的孤立点分析时就需要审计人员具有一定的行业知识和审计经验。虽然我们不能罗列出所有的规则来判断审计数据中的孤立点,但应该有以下几点基本认识。
首先,数据库中的极端值不一定是孤立点。通常极端值反映的不是普遍情况,并且会对数据统计结果产生一定的影响[2],因此在审计分析中,最容易受到重视,但极端值不一定就是孤立点。如图1所示的是某市国税局批准延期纳税数据的一部分,在“税额”这个字段中既有不足百元的极小值,也有超过亿元的极大值,但这些极值并不是审计疑点,而是不同企业上交税额可能存在的上下限。相反,其中批准延期纳税额为整数值的数据则应该作为疑点重点关注,因为纳税人的应纳税款一般来说只有带有元、角、分的才是符合逻辑的。

 

图1 某国税局延期纳税部分数据

其次,数据的极端值只是孤立点的一部分,而不是全部。由于人类经济活动遵循一定的规则,因此,业务数据或财务数据在数据值域内并不是均匀分布或随机分布的,而很可能在某些值域数据分布较多,而在其它值域数据分布较少。分布较少的那些极端值有可能是孤立点之外,在分布较多的值域中也有隐藏着孤立点的可能。
再次,从不同的分析角度或者不同的数据属性来判断孤立点可能会有不一样的结果。比如,若从全部数据的均值来看每一数据与均值的方差,且该国税局的延期纳税额平均在500万元左右的话,那么应该是孤立点的600万的数据就接近平均值,反而被认为是较为合理的,而其他较平均值的方差很大的数值却被认为是孤立点,事实上这样的数值却是合理的税额。
最后,对数据进行孤立点判断时通常需要引入一些与分析主题相关的数据属性一起进行分析,这些相关属性可以是数值型的,也可以是非数值型的[3]。例如,在进行分类时,月收入4000元、年龄20至30岁、文化水平为硕士的客户,应该与月收入4000元、年龄40至50岁的客户分为不同的组。虽然两者的月收入水平是一样的,但前者在将来明显具有更好的发展空间和偿债能力。当在分析多维数据时,数据也许从任何特别的一个属性分析都不是孤立点,而在某些属性的组合上则可能是孤立的。例如,月收入1500元,年龄30岁,文化水平为硕士的客户,应该属于该群体的例外情况,属于孤立点。而单从月收入1500元是看不出来它是否属于孤立点的。
所以,利用孤立点来发现审计线索的特征,审计人员需要从多方面进行考虑,运用自己的知识和经验,建立起合适的孤立点识别规则,才能进一步有效地对孤立点进行挖掘和分析。
3 基于孤立点分析的审计线索特征发现
3.1 孤立点检测
在审计分析中,经常会对数据的某些属性进行分组,并对各组进行统计分析。当数据维数较多时,通过数据可视化方法由审计人员来探测分组情况将会变得很复杂。因为在一般的情况下,分组数会随着维度的增加呈指数级增长,分组数将变得很多、很复杂,而人眼比较擅长处理的只是两到三维的数据。若要进一步从大量的分组中来发现孤立点,情况将会更复杂。因此,如何对孤立点进行高效而准确的检测或者挖掘,是数据挖掘中的另一个重要方面,称为孤立点检测,也称为例外挖掘、偏差分析、离群数据挖掘、例外探测、异常检测等[3]。引入数据挖掘等一些计算机技术来检测复杂数据中的孤立点,可以帮助我们提高效率。
孤立点检测的最终目的是为了对其进行分析,从中找出可能隐藏的重要信息。在一般的“孤立点分析”概念中重点讨论的是如何检测出孤立点,并不强调区分孤立点的检测和分析,因为对孤立点的检测可以总结出一般性的方法,而对其进行分析则不仅需要一定的专业知识,也需要专门的方法,这是由于孤立点产生的原因多种多样,而且具有很强的领域相关性。比如对于审计工作而言,对孤立点的分析就需要审计的专业知识和经验。
孤立点分析在许多领域都得到了应用,常见的有:电信或信用卡欺骗监测、贷款审批、气象预报和客户分类等[4]。
3.2 审计分析中常用的孤立点检测方法
一般孤立点检测方法可以分为三类[4]:基于统计学的方法、基于偏离的方法和基于距离的方法。因为孤立点分析又可以看成是一类特殊的聚类分析,所以目前已有的传统的孤立点挖掘算法主要包括四类算法:基于统计的方法、基于距离(密度)的方法、基于偏离的方法和基于聚类的挖掘算法。在审计分析中,常用的方法除了基于统计的方法和基于聚类的挖掘算法外,还有基于时间序列的方法。
基于统计的方法  需要先假设给定的数据集满足某种概率分布,如正态分布,然后根据这种概率分布来拟合数据集,采用合适的不一致检验方法来对数据集中的每个数据对象进行“不一致性测试”,如果与分布不符合,就认为它是一个孤立点。
基于聚类的方法  在数据挖掘中,聚类就是依据数据对象的属性,将数据对象分组成为多个类或簇,使得在同一个聚类中的对象“类似”,而与其它聚类中的对象“不类似”。在聚类分析中,有的数据对象不属于任何的类或簇,这样的数据对象在聚类中称为噪声,而在孤立点分析中,则称为孤立点。直观地看,落在聚类集合之外的值被视为孤立点。
基于时间序列的方法  时间序列是指一组按照时间有序排列的随机数据。时间序列往往是由某个系统产生的数据,体现该系统在某个时间范围内与外界相互作用的过程,或者在某个时间范围内的状态。基于时间序列的方法就是利用时间序列中某一部分数据来预测另一部分数据,将预测得到的数据与实际的数据比较,进行异常分析。
3.3 基于孤立点分析的审计线索特征发现方法
在审计工作中,利用孤立点分析方法来发现审计线索特征主要分为三步:首先根据审计事项定义孤立点规则,然后选择合适的算法进行孤立点检测,最后分析孤立点确定审计线索。
规则的准备 首先对具体的审计事项进行分析,并综合数据词典和数据库说明等技术文档对数据的含义以及对业务、业务流程的理解等方面的认知情况,对数据产生全面、深入的认识。通过分析找到合适的数据属性或属性的组合、选择合适的孤立点检测算法、定义孤立点识别规则来挖掘孤立点。
孤立点检测  用选定的孤立点检测算法,对被审计数据进行挖掘,并根据规则集中预定义的孤立点识别规则,来判定该数据是不是孤立点。这是一个反复的过程,需要根据分析主题和数据情况来考虑用哪一种孤立点检测方法对要解决的问题而言最有效,有时还需要根据实际情况,在已有的检测算法基础上,结合各类算法的优点,形成新的改进算法。而且在某些算法中,输入参数阈值、概念分层等经验值都需要由熟悉业务的专家提供建议;检测结果需要由对被审计单位业务熟悉的审计人员进行评价。随后,应根据评价的结果,对算法模型以及算法的输入参数等进行反复的修正和完善。
孤立点分析  分析孤立点是否为疑点数据。检测出来的孤立点,虽然都符合检测目的,但未必都对审计工作有用。例如,有些孤立点虽然是异常的但却是合理的,有些孤立点虽然是异常的,但影响却很小,达不到重要性水平等。这些需要审计人员根据自己对审计项目的了解情况来分析、解释相应的现象,从而找到真正的疑点数据,并通过一定的方法对疑点数据进行审计专业判断,从而筛选出审计线索的特征,最终发现审计线索。
对这些孤立点进行深入分析,大大缩小了搜寻范围,发现违规违纪线索的可能性更大,提高了审计效率。通过进一步的分析,将那些表现异常但并没有违法违纪的孤立点剔除掉,剩下的就是因违法违纪而表现异常的个体了,这正是审计人员寻求突破的对象。
4 基于孤立点分析的审计实例
在基于孤立点分析的审计线索特征发现中,最重要的是建立孤立点分析模型,选择合适的孤立点分析方法。下面介绍的某省受灾区县的救灾资金审计实例中,是基于聚类的方法来进行孤立点检测的。
4.1 背景说明
在对H省2005年的救灾资金审计中,审计组在短时间内面对的调查对象是七十三个市县。为了按时完成任务,审计组不可能对每个地区都进行审计,只能从这七十三个地区中选出部分作为重点对象来详细调查,而且必须保证从这些地区审计出来的问题能够涵盖所有地区存在的大部分问题,从而降低审计风险。

 
图2 H省2005年救灾情况分析数据(部分)

图2仅列示了10个地区的救灾资金情况的分析数据,这些分析数据是从大量的原始数据中采集、转换、清理、选择后汇总而成的,但每条数据记录仍然有“受灾人口”、“紧急转移安置人口”、“受灾面积”等等多达13个数据属性需要进一步分析判断。仅仅依靠审计经验是很难从这些数据中快速找出审计重点所在的,只有借助孤立点检测来发现审计线索的特征,找到重点。
4.2 利用聚类分析进行孤立点检测
因为聚类方法非常适用于对记录数多、具有很强的逻辑结构以及许多属性的数据进行分析,所以本实例选择基于聚类的方法来进行孤立点检测,思路如图3所示。

 
图3 本实例进行聚类分析的流程

因子分析 对救灾情况数据进行分析,发现一共有13个数据属性,而且有的属性间存在很强的相关性,比如“直接经济损失”和“其中农业直接经济损失”这两个属性的相关性不言而喻,因而考虑先通过因子分析对这些属性降维。因子分析是从多个变量指标中选择出少数几个综合变量指标,从而达到降维目的的一种多元统计方法。
这次救灾资金审计主要是调查受灾损失程度与救灾资金分配是否相符,有无人为违规操控救灾资金的现象。所以主要看的是“受灾人口、紧急转移安置人口、因灾死亡人口、因灾伤病人口、受灾面积、其中绝收面积、倒塌房屋间数、损坏房屋间数、直接经济损失、其中农业直接经济损失”这10个属性与“救灾资金合计、中央救灾资金、省级救灾资金”之间的关系,又因为后三个属性为同类性质,故选择对前十个属性进行因子分析。选择主成分法,并指定提取的因子的最小特征值为0.4,得到的因子分析结果如表1和表2。分析表1可以看到第一到第五因子所解释的方差占总方差的89.13%,表示可以对大多数数据给出比较充分的概括,因此,确定提取五个因子。根据表2中各因子对哪些属性具有绝对值较大的载荷系数,将这些因子分别命名为受灾损失因子1、受灾损失因子2、受灾人口因子1、受灾人口因子2与受灾人口因子3。
因为数据中属性“救灾资金合计”的值是由“中央救灾资金”与“省级救灾资金”两个属性对应的值求和而成,所以它们之间有很强的相关性,可以通过相同的因子分析过程将这三个属性降为一维,最后得到一个新的因子,命名为“救灾资金因子”。

因子序号

相关矩阵或协方差矩阵的特征值

特征值

贡献率

%

累计贡献率

%

1

4.145

41.447

41.447

2

1.810

18.104

59.550

3

1.576

15.761

75.311

4

.885

8.849

84.160

5

.497

4.973

89.133

6

.389

3.892

93.025

7

.336

3.357

96.382

8

.195

1.951

98.333

9

.167

1.666

99.999

10

9.546E-5

.001

100.000

1 各因子方差解释表

因子

1

2

3

4

5

其中绝收面积

.895

.039

.027

-.053

.017

受灾面积

.806

-.035

-.022

.391

.017

直接经济损失

.725

.581

.033

.091

.246

其中农业

直接经济损失

.725

.581

.038

.090

.245

损坏房屋间数

-.019

.903

.033

.096

.088

倒塌房屋间数

.231

.824

.056

-.046

.320

因灾伤病人口

-.028

-.064

.946

.134

-.037

紧急转移

安置人口

.060

.160

.914

-.014

.207

受灾人口

.160

.079

.111

.955

-.008

因灾死亡人口

.129

.360

.153

-.009

.899

2 旋转后的因子载荷矩阵



表1 各因子方差解释表
表2 旋转后的因子载荷矩阵

聚类分析 因子分析后,数据属性由13个减为6个,为进一步的聚类分析降低了复杂度,提高了准确性。本实例进行聚类分析的目的很明确,就是要找出和大部分地区的综合情况相比差异较大的地区,选择的聚类算法是K-Means算法。
在不知道类别数的情况下,聚类的数目需要经过多次试验、反复比较才能确定,为了得到比较好的聚类效果,可以先分别取较小的类别数和较大的类别数进行聚类,根据比较的结果逐步修正聚类数目。取较小的类别数是考虑到孤立点较少,其余数据间的相似性高度统一的情况;而取较大的类别数则是考虑有可能孤立点较多,其余数据间的相似性也比较多样。对于本实例,通过试验发现:聚类数过多的情况下,数据有平均分布的倾向,这对发现孤立点不利;而取较小的类别数时,得到的结果相对较好,此处我们选择类别数为4。
通过聚类分析得到的主要结果如表3所示:73条数据记录被分为了4类,其中类1中有1条记录,类2中有2条记录,类3中有40条记录,类4中有30条记录。这个结果表明大部分数据记录间都有比较强的相似性,它们集中分布在类3和类4中,只有类1和类2中的3条数据记录游离在大部分数据之外。
这里用简单的规则来判定孤立点:选择那些包含观测量最少的类,并保证这些类中的观测量的总和不超过5,那么这些类中的观测量就是孤立点。
这条规则基于的事实就是大部分观测量的聚集会使小部分的“异常”观测量显现出来。根据这条规则,从表3中可以认定类1和类2中的三个观测量为孤立点,相应的这三个观测量的地区编号分别是10(类1),36(类2)和52(类2)。

类别

观测量

1

1.000

2

2.000

3

40.000

4

30.000

有效

73.000

缺失

.000

3 第一次聚类后的结果表

类别

观测量

1

4.000

2

5.000

3

1.000

4

19.000

5

8.000

6

3.000

有效

40.000

缺失

.000

4 第二次聚类后的结果表

类别

观测量

1

10.000

2

4.000

3

16.000

有效

30.000

缺失

.000

5 第三次聚类后的结果表


至此,通过聚类分析已经找到了3个孤立点,但是仅以此作为审计范围显然是不够的,而且在类3和类4中仍然有孤立点存在的可能,需要继续对类3中的40个观测量和类4中的30个观测量分别进行第二次和第三次聚类分析。得到的结果如表4和表5所示,这两组观测量分别被聚为了6类和3类,通过孤立点判定规则,第二次聚类得到的类3和类6中的4个观测量以及第三次聚类后得到的类2中的4个观测量均被判断为孤立点。三次聚类的结果汇总如表6所示。

聚类分析

观测量

类别数

孤立点数目

孤立点对应的地区编号

第一次

73

4

3

(类110,(类236,(类252

第二次

40

6

4

(类339,(类6354253

第三次

30

3

4

(类28376171

合计

11


6 孤立点结果汇总

4.3 孤立点分析
对孤立点进一步分析来判断这11个孤立点是否都是真正存在问题的疑点数据,利用因子散点图可以直观地做出初步判断。根据三次聚类分析的结果,利用各因子的得分变量,绘制的因子散点图如图4、图5和图6所示。
图5是以“救灾资金因子”、“受灾损失因子1”和“受灾人口因子1” 这三个因子得分变量作为坐标轴,以聚类变量作为分类变量,以类别作为标签变量作图而得的三维因子散点图,从图中可以很明显地看出类1和类2中的三个点是孤立点。将因子的得分变量分为高、低、一般三个等级来描述,根据孤立点在图中的分布,得到综合分析结果见表7。用现实意义进行解释:地区10的受灾损失虽然一般,但是受灾人口多,救灾资金相比却较少,一般来说,受灾损失越大,得到的救灾资金就越多,受灾人口越多,得到的救灾资金却不一定越多,因此地区10的情况不好判断合理与否;地区36与地区52都有受灾人口少,救灾资金多的特点,但是地区36的受灾损失大,地区52的受灾损失则一般,所以地区36的情况看似比较合理,而地区52的情况则有违常理,这些地区都成为疑点需要进行延伸审计。
  第一次聚类 孤立点

第一次聚类

孤立点

(类110

(类236

(类252

受灾损失

因子1

一般

一般

受灾人口

因子1

救灾资金

因子


图4 第一次聚类分析散点图 表7 孤立点综合分析1
第一次聚类时,受灾人口因子的影响比较大,类3和类4的点都具有比较相似的受灾人口因子水平,因此第二次和第三次的聚类就会在其他的因子水平上寻找它们的差异。与图4不同,图5和图6中影响最大的坐标是“救灾资金因子”、“受灾损失因子1”和“受灾损失因子2”,对图4和图5做同样的综合分析,结果见表8和表9。
  第二次聚类 孤立点

第二次聚类

孤立点

(类339

(类6

35

(类6

42

(类6

53

受灾损失因子1

一般

一般

一般

受灾损失因子2

一般

救灾资金因子

一般

一般

一般


图5 第二次聚类分析散点图 表8 孤立点综合分析2
分析表8可以发现,地区39在受灾损失都一般的情况下,得到了较多的救灾资金,比较可疑;而地区42却在受灾损失大的情况下,救灾资金处于一般的水平,不相匹配,应作为疑点进一步审计调查。
从表9中可以看出这4个同属于一类的孤立点的共同特点是,受灾损失因子1水平低,也就是直接经济损失小,但是其中地区71的受灾损失因子2和救灾资金因子的水平不相匹配,与高受灾损失相比,救灾资金相对过少,是疑点所在。
  第三次聚类 孤立点

第三次聚类

孤立点

(类28

(类2

37

(类2

61

(类2

71

受灾损失因子1

受灾损失因子2

一般

救灾资金因子

一般


图6 第三次聚类分析散点图 表9 孤立点综合分析3
以上分析出来的疑点构成了审计的线索,审计人员对这些疑点地区做了重点调查,结果发现,地区10、35、36、71等超范围使用自然灾害救济补助费和救灾捐赠款398.07万元;地区35、36、52等擅自调剂使用救灾资金334.51万元;地区10、42等的民政部门挪用自然灾害救济补助费167.65万元,用于行政经费等支出。通过这些疑点地区的审计,揭露出了H省救灾资金拨付、使用、发放等环节还存在挤占挪用、超范围使用、拨付不及时、违规发放等问题,审计取得了很好的效果。
5 结语
通过本文的方法介绍和案例分析可以看到,与其他数据挖掘方法不同,基于孤立点分析的方法不是发现集体的异常,而是发现异常的个体。对审计工作而言,就是帮助审计人员一针见血地发现问题,提高审计效率。此外,该方法对行业知识的依赖较少,在审计人员缺乏行业知识不能利用审计分析模型分析数据时,可以采用合适的孤立点检测算法仅从“数量”的角度去发现被审计数据之间的异常。因为不同的孤立点检测算法适用于不同领域的数据,结合合理的孤立点识别规则,就可以在不同的审计业务中对这种方法进行实践。(王秦辉)

参考文献
[1] Hawkins D.Identification of outliers[M].London:Chapman and Hall,1980.
[2] 刘汝焯等. 计算机审计数据的存储与处理技术研究报告. 2004.
[3] 黄永平. 孤立点分析方法在计算机审计中的应用.审计研究,2006,S1,p86-89.
[4] Jiawei Han,Micheeline Kamber著,范明,孟小峰等译. 数据挖掘概念与技术. 机械工业出版社,2001.

【关闭】    【打印】