面向数据的计算机审计中数据质量问题的探讨,本文主要内容关键词为:数据论文,质量问题论文,计算机论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
随着IT技术的迅猛发展,许多组织都建立了与之相适应的计算机信息系统,用来存储和管理组织中大量的业务数据。面向数据的计算机审计就是对信息系统中输入、处理和输出的电子数据进行审计,也称为计算机数据审计。计算机数据审计是当前计算机审计的一个重要领域,也是信息化环境下审计机关履行审计职责的主要内容。对于审计工作者来说,全面的、高质量的数据可以提高审计工作的准确性和高效性,但由于被审单位信息系统软硬件平台的异构性以及可能的人为故意隐瞒、造假等原因,为了保证计算机数据审计工作的顺利开展和审计结论的正确性,必须对审计数据进行检查、控制和分析,在数据质量上发现审计线索,清洗有质量问题的数据,为后续的审计数据分析服务。
一、计算机数据审计流程
图1描述了利用计算机审计技术对被审单位的电子数据进行审计的主要流程。
附图
图1 计算机数据审计一般
审前调查:通过了解被审单位的组织结构,掌握该单位信息系统的分布和使用的总体情况。根据审计目标确定重点子系统并对其进行进一步的深入调查,提出审计数据需求。
审计数据采集:根据审前调查提出的数据需求,确定数据采集的对象和手段,掌握审计对象的整体信息。
数据清洗、集成和转换:由于被审单位信息系统的复杂性以及可能的蓄意隐瞒和造假等因素,必须对采集到的数据进行清洗、转换,必要时还必须将来自多个数据源的数据进行集成,以保证数据的完整性、一致性,为后面的审计工作奠定必要的基础。
建立数据库:将采集到的数据经过清洗、集成和转换后,就可以利用装载工具将它们组织和存储到审计数据库中。
建模分析:对存储在数据库中的集成、完整、一致的数据,根据审计重点,建立相应的分析模型,从不同层次、不同角度进行数据分析,找出问题或发现审计线索。
从上述流程中可以看出,审计数据的采集和采集后数据的清洗、集成、转换是与审计数据质量息息相关的两个关键环节。它们的执行情况如何将直接影响到审计数据库的建立质量,并进一步对审计分析产生重大影响。
二、数据质量的度量因素
到目前为止,还没有关于数据质量的精确定义。数据质量是一个相对的概念,具有高度的主观性、相对性,适合一种使用环境的数据质量并不一定充分支持其它环境,即对甲应用有用的数据未必对乙应用有效。因此本文认为若数据最适合使用,则其质量就满足要求。影响数据质量的因素很多,既有管理方面的因素,也有技术方面的因素。如何定义数据质量指标,并通过计算以判断该数据质量指标是否处于指定的指标范围内是数据质量检测的本质,也是进一步进行数据清洗,提高数据质量的依据。下面用定量的方法给出全面质量管理(TQM)中衡量数据质量的最重要的几个公共参数(度量指标):
准确性:用来测量给定的数据值集合与相应正确值集合的相符程度,计算正确传输数据的比例。
完整性:缺少数据的情况,如丢失属性的数量、记录间的差距(非法空值记录的条数)等。
一致性:(概念的、逻辑的或物理的)数据结构、要素属性和它们间的相互关系符合逻辑规则的程度。
相关性:满足参照完整性条件的比率。
时间性:在需要时或指定时间内提供的一个或多个数据项,如一个指定阈值时间帧(例如天或小时)内可获取的数据比率。
唯一性:数据值被约束成一组独特的条目,每个值只有唯一的类型(如主键值、索引等),与唯一性冲突的记录的比率(重复的主键值)。
有效性:数据值编辑可接受的相似性,减小错误的概率。数据值落入其相应可允许的域值的比率。
对于面向数据的计算机审计,上述衡量数据质量的公共参数或主要评价指标同样适用。
三、数据质量问题分类
随着各种技术的不断发展,数据采集的技术和渠道日益广泛,审计数据库中的数据质量主要由进入数据库中的原始数据源的数据质量决定的。原始数据源中的数据质量问题有很多种,可以粗略地划分为单个数据源问题和多个数据源问题[1]。
单数据源中的数据质量问题是出现在单个数据集合(如一个文件或一个数据库)中,主要包括:
1.数据缺失:在一些记录的属性上没有值,如客户名称为NULL。这可能是由于输入时值不确定、误操作或采用缺省值等原因而引起的。
2.数据异常:即数据集中存在孤立点,它们不符合数据的一般模型。孤立点可能是度量或执行错误所导致的,也可能是数据输入时产生的错误,或是程序对缺失属性值自动生成的替代值;当然孤立点也可能恰恰是事物现象的某种异常反映,其中蕴涵着审计线索。因此必须予以注意,而不能简单将它删除。
3.数据重复:数据集中有多条记录表示现实世界中的同一个实体。
4.数据关联错误:数据关联包括实体内属性之间关联和实体间属性关联,这两种关联均有可能引起相应属性值之间的不一致[2]。
由于被审单位的数据通常存在于不同的数据源中,所以在进行计算机数据审计时经常需要将多个数据源的数据进行集成。在将多个数据源进行集成时数据质量问题表现得尤为突出。主要包括:
1.数据模式冲突:是与数据模式相关的不一致,主要有命名冲突和结构冲突。
命名冲突表现为同一名称表示不同的实体/属性或不同名称表示同一实体/属性。如一个数据源中用“科目代码”来表示科目表中“科目代码”属性名,而在另一个数据源中用" ID" 来表示。
结构冲突通常表现为同一对象在不同的数据源中用不同的表示形式,如对于借贷方余额的存储,在一个数据源中用“借方余额”和“贷方余额”两个属性来表示,而在另一个数据源中用“借贷方余额”和“借贷方向”来表示。
2.数据语义冲突:是与实例相关的不一致,产生的原因主要是不同的设计者在对客观对象进行阐释时采用了不同的描述方法。如在一个数据源中用“借”或“贷”来表示“借贷方向”,而在另一个数据源中用" Dr" 或" Cr" 来表示同一属性的取值。
3.数据冗余冲突:既有可能是同一数据在不同数据源里的简单重复,也有可能重复的数据之间还存在冲突。
四、提高数据质量的一般处理方法
全面、正确、有效的数据是保证审计结论正确性的关键。出现数据质量问题将直接影响审计分析结果的准确性,降低分析效率,给审计工作带来障碍,因此必须予以高度重视。在面向数据的计算机审计中,首先要对采集来的数据根据数据质量的要求进行检查,对发现的问题进行分析(不能简单地就把有质量问题的数据舍弃掉,因为在这些数据背后可能隐含着一些审计线索),找出原因,然后再对真正有质量问题的数据进行清洗,将其由“脏”变“净”。
广义上讲,凡是有助于提高数据质量的处理过程都可以称为数据清洗。数据清洗的一般定义为:发现和消除数据中的错误和不一致来提高数据的质量。在大多数情况下,数据清洗和数据转换集成共同进行。
数据清洗的基本原理是将有质量问题的数据(脏数据)输入到数据清洗处理器,根据有关业务知识、清洗策略和规则(存储于清洗元数据库中),通过一系列步骤手工或自动地“清洗”数据,然后以期望的格式输出经过清洗的能满足数据质量要求的洁净数据(图2)。
附图
图2 数据清洗原理
数据清洗的一般过程包括[1]:
数据分析:为了检测错误数据和确定数据不一致的类别,要求进行详尽的数据分析。
定义转换流程和映射规则:根据数据源的数目、数据源间的异质情况以及数据“肮脏”的程度,需要执行大量的数据变换和清洗工作。模式变换有时被用来映射源与目标数据模型。前期的数据清洗可以纠正单数据源数据问题并为数据集成做准备,后期的数据清洗能够处理模式/数据集成以及多数据源存在的数据问题。模式相关的数据转换和清洗应尽可能使用映射语言和说明性查询来自动生成转换代码。另外,在数据转换流程中,应该能够调用用户书写的清洗代码和专用工具。
校验:应该对数据转换流程和转换定义的正确性和有效性进行测试和评估。例如,在样本数据或源数据的拷贝上,如果有必要,应该进一步改进相关定义。为了更好地遴选出错误数据,有时可能需要进行反复的迭代分析、设计和校验。否则有些数据经转换后可能只是使得错误变得更明显一些,却不能真正将其筛选出来以便于进行有效清洗。
转换:根据转换和映射规则执行数据转换过程。
清洗过的数据回流:为了有效利用经清洗改善的数据,在错误被清除之后,应该用干净的数据替换原始数据源中的“脏”数据,这样做同时也避免了将来在进行数据采集时重做数据清洗工作。
五、数据清洗的基本技术
在清理数据之前,必须要充分了解数据,知道数据表中每一列数据的格式、含义、分布情况以及列与列之间的关系如何等。在对数据有了充分的了解之后,需要对数据质量进行处理,就是说在建立数据分析模型之前消除数据冲突,进行数据清洗。
1.空值的处理
对于那些包含大量空值的列的数据质量问题,为每一列计算该列中的空值所占的比例,并以此为依据来确定该列是否应该被删除。在数据库中往往存在着包含了大量空值的列,这些列不仅不能给审计数据模型提供足够的信息,反而会影响建模者的视线,降低模型建立的效率和执行的效果[3]。解决这一问题的方法之一就是删除那些包含大量空值的列。该方法的基本原理是:计算出每一列的空值数量,然后除以总行数,从而得到每一列的空值所占的百分比,如果这一百分比比较大,则说明该列的空值比例比较高,就应该从数据表中删除该列。
2.数据缺失处理
(1)使用一个固定的值填充缺失值:所有空缺的值用一个常量代替。这种方法虽然简单,但只适合缺失值不多的情况。
(2)使用属性的平均值填充缺失值:对同一个属性的所有缺失值都用该属性的平均值代替,使替代值更接近缺失值,以降低误差。
(3)使用成数推导值代替缺失值:若某属性的取值只有少量几种,就可以计算这几种属性值在该属性中所占的比例,并对该属性中的缺失值同比例随机赋值。这种方法较适合缺失属性为逻辑型的情况。
(4)使用最可能的值代替缺失值:可以利用回归分析、决策树或贝叶斯形式化推导方法等建立一个预测模型,然后按照这个模型的预测值填充缺失值。这种方法相对比较复杂,但却最大程度地利用了现存数据所包含的信息来预测空缺值,具有很好的效果。
3.数据异常处理
所谓异常数据,就是远离或者超出某列正态分布的数据,主要表现为孤立点的存在,所以数据异常处理的主要任务就是检测出孤立点。由于孤立点可能是数据质量问题导致的,但也可能反映了事物背后某种异常现象的发展变化,即孤立点本身可能是非常重要的,在面向数据的计算机审计中,孤立点可能预示着某种审计线索。所以在检测出孤立点后必须再由人工判断检测出的孤立点是否为事实上的孤立点。若为事实上的孤立点,则可将孤立点视为干扰数据而丢弃,或者运用数据平滑技术按数据分布特征修正源数据。对于孤立点的检测,若数据量较小,可以人工进行检测;但当数据量很大时,人工检测就无能为力,必须进行计算机自动检测。
目前基于计算机自动检测孤立点的方法主要分为三类:统计学方法、基于距离的方法和基于偏离的方法[4]。
(1)基于统计学方法:对给定的源数据假设一个分布或概率模型(例如一个正态分布),然后根据模型采用不一致性检测来确定孤立点。该检测要求知道源数据集参数(例如假设的数据分布)、分布参数(例如平均值和方差)和预期的孤立点数目。但在许多情况下,源数据的分布可能是未知的。另外,绝大多数基于统计的孤立点检测是针对单个属性列的,因而不能确保发现所有的孤立点,所以该方法具有一定的局限性。
(2)基于距离的方法:源数据中数据对象至少有p部分与数据对象o的距离大于d,则数据对象o是一个带参数p和d的基于距离的孤立点,即DB(p,d)。换句话说,将基于距离的孤立点看作是那些没有“足够多”邻居的对象,这里的邻居是基于给定对象的距离来定义的。常用的距离度量方法有欧几里得距离、曼哈坦距离和明考斯基距离。它们的定义可用如下通式来表示:
d(i,j)=(|x[,i1]-x[,j1]|[q]+|x[,i2]-x[,j2]|[q]+…+|x[,in]-x[,jn]|[q])[1/q]
这里的i=(x[,i1],x[,i2],…,x[,in])和j=(x[,j1],x[,j2],…,x[,jn])是两个n维的数据对象。其中q为一正整数。当q=1时,它表示曼哈坦距离,当q=2时,它表示欧几里得距离。目前常用的是基于欧几里得距离的方法。基于距离的孤立点检测要求用户设置参数p和d,而寻找这些参数的合适值可能涉及多次的试探。
(3)基于偏离的方法:通过检查一组数据对象的主要特征来确定孤立点,与给出的描述相“偏离”的数据对象被认为是孤立点。目前基于偏离方法的孤立点检测主要有两种技术:序列异常技术和OLAP数据立方体技术。
4.冗余数据的处理
典型的冗余数据的清除是在其它数据变换和清洗步骤完成之后才进行的。对于表示同一实体的冗余记录的处理,一般要经过以下两个步骤:(1)通过实例匹配找出表示现实世界同一实体的相似记录。(2)将相似的记录合并到包含所有相关属性并没有冗余属性的记录中。如关于“顾客”记录的实例匹配可以通过“姓名”、“地址”等关键词上的相等连接来获得。
对于同一实体中冗余属性的处理,可以通过属性间的相关分析来删除冗余属性。最常用的相关分析方法是计算属性间的相关系数。如果属性A和属性B的相关系数大于设定的阈值,则表明A和B具有较强的相关性,A(或B)可以作为冗余而去掉。同时还可以运用维归约的技术删除冗余属性。如运用判定树归纳方法选择属性子集,由源数据构造判定树,不出现在树中的所有属性被认为是冗余的,出现在树中的所有属性形成归约后的属性子集。
对于多数据源中存在的数据模式冲突、数据语义冲突以及数据冗余冲突等问题,在解决时常常涉及到对各数据源中的原始表及其有关属性进行分解、合并、展开等模式重构工作,通过模式重构获得企业范围内一致的集成模式。
六、小结
本文通过对面向数据的计算机审计流程的分析,指出了审计数据质量问题是计算机审计过程中必须认真对待和处理的一个重要环节。通过对审计数据质量问题比较全面的分类及分析,提出了解决审计数据质量问题的一般处理方法和可实现的技术手段,希望对广大的审计实践工作者起到一定的指导作用。