【摘 要】 本文针对计算机审计的现状,提出了基于数据挖掘的审计数据分析流程,以及应用DBSCAN聚类算法查找审计证据的方法。
【关键词】 计算机审计;数据挖掘;聚类算法;噪声数据
随着经济和信息技术的不断发展,许多企业开始引入了ERP等系统,这些系统使得企业的众多活动数据可以实时记录,形成了大量有关企业经营管理的数据仓库。从这些海量数据中获取有用的审计数据是目前计算机审计的一个应用。对于审计人员来说,如何从被审计单位的海量数据中找出全面、高质量的审计数据从而找出审计证据是一个难题。本文利用数据挖掘技术对此问题进行了探讨并提出了解决的方法。
数据挖掘(Data Mining)指的是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中提取出隐藏的、不为人知的却潜在有用的信息和知识的过程[1]。事实上,实际应用数据的质量和存储模式对于实施计算机审计并成功获取审计证据非常重要。由于被审单位信息系统软硬件平台的异构性和可能存在的人为故意隐瞒、造假等,为保证计算机审计工作顺利进行和审计结论的正确,对审计数据进行采集时必须对数据进行检查、控制和分析。
1审计数据采集
审计数据采集指在开展计算机审计时从被审计单位的财务及业务信息系统及其他数据源获得审计所需的电子数据并进行适当的格式转换[3]。一般来说,计算机审计中数据采集的方法主要包括以下几种:
(1)利用被审单位信息系统的数据导出功能。大多数的信息管理系统都提供了数据导出的功能,审计人员直接可以利用该功能导出企业财务数据完成数据的采集。
(2)利用通用的数据处理软件完成数据采集。如Access、SQL Server等都具有较强大的数据导入导出功能和数据转换功能。审计人员可以利用这些软件完成数据的采集。如被审企业原始数据为文本格式可以转换为数据库表格格式。
(3)利用审计软件完成数据采集。如国家从2002年开始建设的“金审工程”就以现场审计实施系统(AO)及审计办公系统(OA)作为计算机辅助审计的工具。别外应用国内的企业财务审计软件、审计数据采集分析软件等都可以完成审计数据的采集。
(4)利用专用程序接口完成数据采集。当被审计单位提供的审计数据的数据结构与已有的审计数据处理软件系统的数据结构差异较大时,可以在审计人员的协助下由专门的程序员开发接口程序,完成数据的采集,但成本相对较高。
2 数据清洗
利用数据挖掘对审计数据进行处理分类时,为了提高分类的准确性、高效性和可伸缩性,必须对数据库进行预处理,包括:数据的清洗、相关性分析、数据转换等。
文献[4]中给出数据清洗的定义为:发现和消除数据中的错误和不一致来提高数据的质量。一般而言,审计数据库中数据采集于异质操作数据库,不可避免存在着数据的错误或不一致等问题,如数据造假、数据重复、数据缺失等错误。根据文献[5]提出的审计数据质量特征,必须要对采集的原始数据进行清洗,即由“脏”变“干净”,提高审计数据质量,这是保证审计结论正确的关键。
数据清洗的一般过程如图2所示。
(1)数据分析:为了清洗出干净的数据,必须对数据进行详尽的分析,包括数据的格式类别等。比如采集来的财务数据的字段类型、宽度、含义等。
(2)模式转换:模式转换主要是指将源数据映射成目标数据模型,如属性的转换,字段的约束条件和数据库中各个数据集之间的映射和转换等。有时需要将多个数据表合并成一个二维表格,有时却要将一个数据表拆分成多个二维表格以便于问题的解决。
(3)数据校验:上一步的模式转换可行否,需要进行评估测试,经过反复分析、设计、计算、分析才能更好地清洗数据。否则不经过数据校验可能有些错误数据不是很明显,不能被很好地筛选出来。比如模式转换时将一个数据集分解成多个数据表的时候,造成父表的主关键字的值和子表外部关键字的值不一致,从而形成孤立记录,影响审计人员审计证据的正确性,进而影响审计结论的正确性。
(4)数据回流:用“干净”的数据替代原始数据源中的“脏”数据,避免下次数据采集时重做数据的清洗。
有时候数据的清洗需要反复进行,审计人员需要对采集到的电子数据进行多次清洗,这样才能得到高质量的审计数据。
3 数据挖掘实现
经过数据预处理后的审计数据库包含了多个数据集,每个数据集又包含了若干数据记录或者称为元组,如何从这些二维表格数据中挖掘出有意义的审计数据至关重要。本文介绍一种利用聚类算法进行审计数据挖掘的算法。
3.1 算法概述
3.1.1聚类算法
所谓聚类就是根据相似性对数据对象进行分组,发现数据的分布特征,使得每个聚类中数据有非常高的相似性而不同聚类中的数据尽可能不同[6]。它同分类的主要区别在于,分类事先知道所依据的数据特征,而聚类是要找到这个数据特征。作为数据挖掘的功能,聚类分析可以作为一个获取数据分布情况、观察每个类的特征和对特定类进行进一步独立分析的工具;聚类也能够有效处理噪声数据,比如数据库中普遍包含的孤立点、空缺或错误数据等。
聚类分析算法通常有5类[7]:①基于划分的方法,如CLARANS;②基于层次的方法,如CURE和BIRCH;③基于密度的方法,如DBSCAN、OPTICS、GDBSCAN和DBRS;④基于网格的方法,如STING和WaveCluster;⑤基于模型的方法,如COBWEB。其中DBSCAN算法具有很好的过滤噪声数据的优点。本文探讨利用DBSCAN算法对审计数据进行处理,找出异常数据,查找出审计证据。
3.1.2 DBSCAN算法
DBSCAN算法的基本思想为[8]:对于同一个聚类中的每个对象,在给定的半径d的邻域中包含的对象不能少于某一个给定的最小数目MinPts(也称密度)。
为了生存一个聚类,DBSCAN算法首先从数据集DB中选择任意一个对象p,并查找数据集DB中关于半径d的所有邻域对象,如果这个邻域对象的个数小于最小数目MinPts,则p为噪声数据;否则p的邻域对象形成一个初始聚类N,N中包含对象p及p直接密度可达的所有对象。然后确定该类中的每一个对象q是否为核心对象,若是,就将q的d—邻域内尚未包含到N的所有对象追加到N中,并继续判定新追加的对象是否为核心对象,如果是,重复上述追加过程,直到这个聚类不能再扩大为止。然后DBSCAN算法再在数据集DB中另选一个没有被标识为某个聚类或者噪声的对象,重复上面的操作,一直到数据集DB中的所有对象要么被标识为某个聚类、要么被标识为噪声数据为止。
DBSCAN算法进行聚类的过程就是不断执行数据集查询比较的过程,最后产生的噪声数据就是通常所说的异常数据,对于帮助审计人员进行审计判断非常有效。图3表示了二维平面坐标下的噪声数据和若干聚类。
3.2数据模式定义
3.2.1项间的距离
设Ri和Rj是数据集DB中的任意两条记录即某两个数据项,它们之间的距离定义为:
式中,Ri(Rix,Riy),Rj(Rjx,Rjy)表示数据集中两个项Ri和Rj在二维空间的坐标点,因此dij表示Ri和Rj在二维空间坐标的距离。如果dij大于给定的值d,则表示Ri和Rj不属于同一个聚类分组。
3.2.2审计数据预处理
数据挖掘时数据的选择是在二维平面上进行的,首先选择列(字段或属性),再选择行(记录或元组)。为了能够获得有效的审计证据得出正确的审计结论,有时候必须对源数据集进行数据转换。
因为各个企事业单位的规模不同,财务数据的数量级或者数量单位可能不同,为了得到更加科学可靠的聚类分析结果,需要对财务数据进行预处理,一般进行比例变换。如将x轴定义为某公司某月营业收入与利润总额的比值,将y轴定义为财务费用与净利润的比值,这样处理的数据能更好地反映该企业的实际情况。这里的财务数据预处理都是由用户来定义的,可以根据不同的审计要求和审计目的来定义。
建立一个新的二维表格数据至少包含4个属性项:记录号,x轴数据,y轴数据,标记。其中记录号保持对应源数据集DB中的记录号, x坐标和y坐标即为经过比例变换后的数值,标记字段初始内容为空。
3.3算法描述及流程图
给定一个计算机审计数据集,假设具有N个元组或者记录,利用DBSCAN算法思想构造出L个分组(L<N),每个分组代表一个聚类。且L个分组必须满足如下条件:
(1)每个分组至少包含MinPts个元组。
(2)每个分组中的任意两个元组直接的距离小于等于给定的距离d。
(3)每个元组仅属于一个分组。
图4为实现审计数据挖掘的算法(称为AUDBSCAN)的流程图。
3.4 聚类算法的实现
算法:审计数据挖掘聚类算法(AUDBSCAN)
输入:根据数据集DB产生的二维表格数据
//至少含有4个字段:rec 记录号,rx x坐标数据,ry y坐标数据,rno 标记
半径d //度量密度的距离
密度MinPts //簇中的数目
输出:噪声数据记录
Algorithm AUDBSCAN(data,d,MinPts)
For each record in data do
Ifeach reccord in data is marked
Output noise reccord //输出标识为噪声的数据
Else
For each reccord in data is not marked noise or classer do
P←Rand(a reccord is not marked noise or classer) //随机选取没有被标记的记录p
L←Found(p,d,MinPts) //找到p关于d的MinPts密度可达记录
If s=recount(L)<MinPts
P is marked noise
Else
N←Found(p,d,MinPts)
Each reccord in N is marked classer
For each reccord in N do
q←one reccord
If q is a center record //q为核心记录
N←found(q,d)
Endif
Endfor
Endif
Endfor
Endif
Endfor
在AUDBSCAN算法中,利用Rand()函数产生第一个随机记录p,利用Found()函数产生p关于d的MinPts密度可达记录。该算法最后的结果和随机产生的第一条记录相关,形成的聚类可能有不同,但得到的噪声数据一致,因此对于审计证据的查找是有效的。
4 结论
数据挖掘技术与海量数据下审计业务的有效结合是未来计算机审计的一个发展方向。本文主要介绍了审计数据的采集、数据的处理转换和数据的挖掘3个方面,并且在数据的挖掘方面采用了基于聚类的DBSCAN算法来快速、准确、高效地输出噪声数据。该算法中涉及的二维平面x,y轴坐标可以根据实际审计需要由审计人员加以定义,因此可以应用到各类审计实践中去。另外,可以将DBSCAN算法扩展到三维空间上,只要再加上一个z轴数据,当然z轴数据也应该是和x,y轴数据相关的一个比例数据,此时聚类的结果将会变成一个不规则球体,从而能够更加容易挖掘出未曾发现的知识,也更加容易发现数据间的潜在联系。
【参考文献】
[1][加]Jiawei H,Michelline K.数据挖掘概念与技术[M].范明,译. 北京:机械工业出版社,2004.
[2]陈伟,张金城,Robin Qiu.审计数据处理实验中的模拟数据生成系统[J].计算机工程,2007(19).
[3]王琦峰,胡玲玲. 基于AO的审计数据采集方法 [J].计算机系统应用,2009(3).
[4]米天胜,张金城. 面向数据的计算机审计中数据质量问题的探讨[J].审计与经济研究,2006(1).
[5]王昊,朱文明. 审计数据质量研究:从审计取证的视角 [J].南京大学学报:自然科学版,2007(1).
[6]杨磊,李建军,张志军,孙翠娟.谈数据挖掘中常用的聚类算法[J].中国成人教育,2008(4).
[7]胡彩平,秦小麟.一种改进的空间聚类算法 [J].模式识别与人工智能,2007(3).
[8][美]Margaret H Dunham. 数据挖掘教程 [M].郭崇慧,译.北京:清华大学出版社,2005.
[9]刘蓉,陈晓红. 基于数据挖掘的移动通信客户消费行为分析[J].计算机应用与软件,2006(2).
[10]李明华,刘全,刘忠,郗连霞.数据挖掘中聚类算法的新发展 [J].计算机