王永才, 庞伟林, 范婷
(佛山供电局信息中心, 佛山 528000)
随着大数据时代的到来,大数据服务被广泛运用并对用户生活质量产生革命性的提升[1],越来越多的业务系统被用来处理、加工数据。经常地,这些业务系统中存在大量源自人工录入的数据。业务系统用户界面层的校验往往只能保证数据在人工录入的过程中数据格式的正确性,数据在录入过程中内容的错误往往是不能被自动检查出来的,这些数据录入时的错误严重的影响了数据的质量[2]。在真实的业务系统中,由专人对业务系统的数据质量进行及时的人工监控,找出错误字段并进行修改,是一项费时费力的工作[3-8]。因此,本文研究并提出了一种基于贝叶斯网络的业务系统数据质量优化方法。其主要思想是:让经贝叶斯网络训练好的关联模型库对业务系统中的相关数据进行分析,自动定位错误的数据字段。
基于贝叶斯网络[9、10]优化业务系统数据质量时生成关联模型库的主要过程,如图1所示。
图1 基于贝叶斯网络优化业务系统数据质量时生成关联模型库的主要过程
(1) 对业务数据的内容进行特征提取,其中对于句子与段落使用基于依存句法分析的特征提取算法;(2) 分析业务数据的数据质量分析结果和数据字段,构建业务系统的状态空间;在某些时间窗口下,对人工配置好的业务数据样本的数据质量分析结果和数据字段的数据进行实时提取,并进行统计分析;(3) 对业务数据的状态空间进行复杂度降维,使用第一步得到的数据将其划分成数据字段关联紧密的子空间;(4) 使用第一步得到的数据,利用树扩展朴素贝叶斯结构对划分得到的每个系统子空间建立关联模型并将关联模型保存到关联模型库中;
关联模型库在其建立好后也会发生改变,其改变的方法有两种:(1) 跟踪收集业务系统的历史业务数据,每经过一定的时间依据这些历史数据对关联模型库按图1的流程进行重建;(2) 手动输入业务系统数据样本并按图1的流程重建关联模型库。
基于贝叶斯网络的业务系统数据质量优化的主要流程[11、12],如图2所示。
图2 基于贝叶斯的业务系统数据质量优化的主要流程
(1) 输入一条业务数据;(2) 对业务数据的各个字段进行特征提取;(3) 基于关联模型库对数据质量进行分类;(4) 在数据质量不达标时,触发问题字段定位,并修改问题字段。
业务系统中存在各种类型的数据字段,有数字、日期、词语、短语等结构简单的字段,也有句子、段落等结构复杂的字段。对于大多数的数据内容,我们需要对其进行特征提取后,再对提取后的特征进行后续的计算。
1.2.1 对简单结构数据内容的特征提取
对于名称、时间、状态等简单字段,我们可以直接将数据字段中的原始内容作为其特征,或对原始数据内容进行简单的映射转化后作为其特征。
1.2.2 对短语的特征提取
对于短语,我们提取其中的名词、代词、数词等实体词作为其特征。
1.2.3 对句子与段落的特征提取
对于内容为句子或段落的复杂文字的数据字段,根据词频提取文本特征或者直接将所有词语我们基于依存句法分析对其进行文本特征的提取,依存句法分析能够通过分析语句中不同成分之间的关系来揭示句法结构。
语句是由核心词、依存词以及他们之间的关系组成的,句法关系类型主要有:核心、主谓关系、独立结构、标点、介宾关系、动宾关系、间宾关系、前宾关系、定中关系、并列关系、兼语关系、状中结构、左附加关系、右附加关系、动补结构。
基于依存句法分析的特征提取,在对句子进行依存句法分析的基础上,删除附加关系、标点、状中结构、介宾关系后,根据词汇和句法成分之间的关系进行句型匹配,从而对文本特征进行快速提取。
我们先对业务系统中的业务数据进行分析,以获得业务系统的数据质量分析结果集合和数据字段集合,构建业务数据的状态空间。
同时,在某些时间窗口下,对人工配置好的业务数据样本的数据质量分析结果和数据字段内容的进行实时提取。
我们对上述提取分析作如下的定义[13-15]:
Space={quality, field}表示业务数据的状态空间,该状态空间由业务系统的数据质量分析结果quality和数据字段field构成;
quality={σ1,σ2, …,σn}表示业务数据的数据质量分析结果σ1,σ2, …,σn的集合;
field={θ1,θ2, …,θm}表示业务数据的数据字段θ1,θ2, …,θm的集合;
sample={Space1, Space2, …, Spacep}表示业务数据在p个不同的时间窗口下的状态空间Space1, Space2, …, Spacep的集合;
在对业务数据进行分析与采样后,基于朴素贝叶斯网络的方法,使用人工配置好的业务数据训练样本对分类器进行训练。贝叶斯网络分类器的输入是业务数据各数据字段的特征,输出是这条业务数据的数据质量分析结果。
当接收到业务数据的状态空间Space={quality, field}及相应数据样本后,假设数据质量分析结果集合大小为n,数据字段集合大小为m。
1.5.1 引入状态空间划分的意义
如果直接建立m个数据字段与n个数据质量分析结果之间的关联模型会存在以下的问题:(1) 业务数据中包含许多的数据字段,但不是每一个数据字段对每一个数据质量分析结果都存在直接的影响。因此,在关联模型中,并不是每个数据字段都应该存在;(2) 若一个模型包含所有的数据字段,建模的时间复杂度及后续定位问题字段的时间复杂度都会很大,定位问题字段的准确性也会受其影响;(3) 在数据字段数量m很大的情况下,许多数据字段的特征空间都很大,关联模型的空间会呈指数级增长。
为解决上述三个问题,本文将业务数据状态空间划分成多个状态子空间,使得每个子空间中的数据字段彼此有较强的关联性,而不同子空间中的数据字段之间没有关联性或只有较小的关联性。
1.5.2 状态空间划分算法
如下定义状态子空间:
Sub_Space={η, Sub_field},其中η∈{yes, no},Sub_field⊆field。
由于本文考虑的是数据质量是否达标,因此本算法中状态空间的划分主要考虑对数据字段field进行划分。为了使每个子空间中的数据字段彼此有较强的关联性,而不同子空间中的数据字段之间没有关联性或只有较小的关联性。本文采用互信息熵测量不同数据字段间的依赖程度。
在已知变量Y的前提下,随机变量X与Z之间的条件互信息熵定义,为式(1)。
(1)
X与Z之间的条件互信息越大,说明在给定的观测集Y条件下,X与Z之间的依赖性越大。
对系统状态空间进行子空间划分的过程如下:
1.统计样本数据sample={Space1, Space2, …, Spacep},表示业务数据在p个不同的时间窗口下的状态空间Space1, Space2, …, Spacep的集合,得出P(θi,η),P(θi,η,θj),P(η)
2.由式(1)计算Z[i][j]=I(θi,θj|η)
3.找出Zij的最大值和最小值Zmax和Zmin
4.为了使每个子空间中的数据字段彼此有较强的关联性,而不同子空间中的数据字段之间没有关联性或只有较小的关联性。故对数据字段field={θ1,θ2, …,θm}采用中心聚类算法K-Mediods进行划分,定义两个参数之间的距离为式(2)。
(2)
公式5首先把Zij标准到[0,1]范围内,然后取余值得到距离函数。
5.利用中心聚类算法K-Mediods对数据字段空间中的数据字段进行聚类:初始时随机选择k个数据字段作为中心点,每轮迭代过程中,将空间中其他的点与这k个中心点的距离大小进行比较,将其与距离最小的中心点归为一类。然后更新每个聚类的中心点,使得每类中的平均距离最短。当迭代超过一定的轮数或目标函数J收敛时停止迭代。目标函数J为
其中ej表示第j(1≦j≦k)个分类中重新计算得到的中心点,总共有k个聚类中心,Nj表示第j类中点的个数,J表示所有分类中每个点与中心点距离差的总和。为了控制每个子空间中数据字段的个数,将聚类中心个数设置为k=m/l,其中m为数据字段的总个数,l是指每个子空间中数据字段的个数不能超过l。
6.划分后的子空间为Sub_Spacei={η, Sub_fieldi},其中Sub_fieldi是那些在中心聚类算法K-Mediods中被分到同一个类的数据字段。设其中心点为ei。若ei与η的互信息熵I(ei;η)小于阈值Influence,则将子空间Sub_Spacei丢弃。则最终得到的子空间为Sub_Space1, Sub_Space2, …, Sub_Spacek,其中k为最终子空间的总数。
对划分好的子空间分别建立基于贝叶斯网络的关联模型,从而定位影响业务数据质量的问题字段。
1.6.1 贝叶斯网络的定义及优点
贝叶斯网络是一种基于概率推理的有向无环图,可以将变量之间的依赖关系表示成一个网络结构,适用于不确定知识的表达和推理。令U={x1,x2, …,xn}表示一组变量,贝叶斯网络由两部分组成:(1) 表示条件独立性信息的网络结构,网络结构中每一个节点表示一个变量xi,节点之间的有向弧表示变量之间的依赖或者因果关系,有向边的箭头表示关系影响的方向性;(2) 一组概率分布表Bp={p(u|pa(u)) |u∈U},其中pa(u)表示贝叶斯结构变量u的父节点。每个节点附有与该变量相联系的条件概率分布函数,表示了子节点与其父节点之间的关联强度或者置信度,没有父节点的话则为先验概率。
贝叶斯网络结构具有如下的优点:
1) 随着业务系统的不断运行,收集到的数据样本能用来修正贝叶斯网络的结构及更新其上的概率参数;
2) 专家知识和实践经验能融入到贝叶斯网络的先验知识中,使模型能更加准确的描述问题;
3) 贝叶斯网络能从结果寻求原因,对问题进行诊断;
故本文采用贝叶斯网络建立关联模型。
1.6.2 关联模型建立算法
关联模型建立算法是对Friedman提出的TAN方法的扩展,具体步骤如下:
1) 对2.2节的每一个状态子空间Sub_Spacei={η, Sub_fieldi},用公式4计算Sub_fieldi-{eh}中每对数据字段的条件互信息值Zij=I(θi,θj|η);Zij已在2.2节中被计算出来。
2) 对Sub_fieldi中的变量建立完全无向图,Zij作为节点θi和θj间的边的权值。
3) 对上一步生成的完全无向图求最大权生成树,并根据端点的条件信息熵大小确定无向边的方向,如下面公式所示,其中Ni表示与θi之间存在边的参数个数,若Avgi>Avgj,则θi与θj之间的边从θi指向θj
4) 添加eh到生成树,并添加由eh到每个节点的有向边,然后增加η结点,并添加η到每个节点的有向边。
至此贝叶斯网络结构已初步建立,但概率分布表还没给出。对已输入的业务数据样本sample={Space1, Space2, …, Spacep}进行统计,就可计算出子节点与其父节点之间的关联强度P(θi|pa(θi)),对那些没有父节点的节点,也可通过对已输入的业务系统样本进行统计得出先验概率。
关联模型已建立完成,将这些关联模型放入关联模型库中等待实际使用。
使用贝叶斯网络最大的好处是能够从结果出发,找出原因,从而解决问题。如图2.1.2,在业务系统数据质量不达标时,即η=no,将此时业务系统的数据字段的状态发送给关联模型库,利用关联模型库对业务系统中的参数进行诊断,得到对η=no影响最大的问题字段Θ,并将这些参数发送给管理员,管理员调整这些参数从而使业务系统的数据质量达标。
1.7.1 问题字段定位算法
由贝叶斯网络的概率链公式,对每个子空间Sub_Spacei,均有式(3)。
(3)
当业务系统数据质量不达标时,即式(4)
P(η=no|Sub_parameteri)>P(η=yes|Sub_parameteri)
(4)
由贝叶斯网络推理公式
P(η=no|Sub_pari)P(Sub_pari)>P(η=yes|Sub_pari)P(Sub_pari)P(Sub_pari|η=no)P(η=no)>P(Sub_pari|η=yes)P(η=yes)
代入公式6
对于每个数据字段θj,当P(θj|pa(θj),η=no比P(θj|pa(θj),η=yes越大时,则业务系统数据质量不达标的可能性越大,θj成为问题字段的可能性也越大。
故令Score(θj)=P(θj|pa(θj),η=no)/P(θj|pa(θj),η=yes),计算每个子空间Sub_Spacei中的每个数据字段θj的Score(θj)值,并选取Score(θj)最大的p个变量作为问题字段Θ,输出,修改问题字段使数据质量重新达标。
某电网营销管理系统,如图3所示。
图3 某电力企业实际系统的业务系统实例
指标名称:购电档案=基础信息=规范性=电厂辅助信息=投产时间-合规率
指标要求:投产时间不得大于当前系统时间
路径:市场交易-查询功能-电厂档案查询
在图3的真实业务系统中,经过对业务数据的内容进行特征提取、构建业务系统的状态空间、划分子空间、建立关联模型库后,基于关联模型库对数据质量进行分类,发现数据质量不达标,触发问题字段定位,最终定位至投产时间字段。
如图3真实业务 中,“投产时间”这一指标要求,传统数据质量校验方式,需要业务人员梳理,并且提出指标规则:投产时间不得大于当前系统时间,然后一一设定相应的校验规则进行筛选排查。
采用基于贝叶斯的业务系统数据质量优化方法后,则无需业务人员人工一一梳理诸如这类非业务规则的基本系统性数据的数据质量规则。而是对已有业务数据的内容进行特征提取、构建业务系统的状态空间、划分子空间、建立关联模型库后,基于关联模型库对数据质量进行分类,发现数据质量不达标,触发问题字段定位,最终定位至投产时间字段,进一步地可提示业务人员主动发现该系统性数据质量规则。
本文介绍了一种基于贝叶斯网络,对业务系统的数据字段和数据质量分析结果建立关联模型,并在数据生产过程中通过关联模型自动确定影响数据质量的问题字段的方法。同时,本文将该方法实现成了具体的,可在实际业务系统中使用的模块,通过实验,证明了本文的方法能有效并自动的定位影响数据质量的问题字段,从而优化业务系统的数据质量。
(项目资助:电力数据持续数据质量监视与辅助改善系统研发 GDKJXM20161895(030600KK52160021)
参考文献
[1] 韩京宇,徐立臻,董逸生.数据质量研究综述[J].计算机科学,2008(2):1002-137X.
[2] 宗威,吴锋.大数据时代下数据质量的挑战[J].西安交通大学学报(社会科学版),2013(5):1008-245X.
[3] 王宏志.大数据质量管理:问题与研究进展[J].科技导报,2014(34):1000-7857.
[4] 王永才,宋才华.中间件技术在数据交换中的应用研究[J].自动化与仪器仪表,2015(11):1001-9227.
[5] 刘珊珊.信息时代电力企业统计工作中的问题与对策分析[J].中国高新技术企业,2017(12);1009-2374.
[6] 秦璇.电力统计数据的质量评估及其异常检测方法研究[J].长沙理工大学,2013.
[7] 马亚南.电力系统异常数据的检测辨识与修正探究[J].中国电业(技术版),2014(4):1002-1140.
[8] 常飞.基于实时数据的动态异常检测方法研究[D].天津理工大学,2013.
[9] 李硕豪,张军.贝叶斯网络结构学习综述[J].计算机应用研究,2015(3):1001-3695.
[10] 张剑飞.贝叶斯网络学习方法和算法研究[D].东北师范大学,2005.
[11] 李小琳.面向智能数据处理的贝叶斯网络研究与应用[D].吉林大学,2005.
[12] 白涛,陈卫华,谷鹏飞.基于贝叶斯网的核安全级软件可靠性评估初探[J].微型电脑应用,2017(11):1007-757X.
[13] 王科欣,王胜利.基于贝叶斯网络技术的软件缺陷预测与故障诊断[J].微型电脑应用,2009(11):1007-757X.
[14] 马德仲.基于贝叶斯网络和多源信息构建可靠性分析模型方法研究[D].哈尔滨理工大学,2015.
[15] 韩志朋.基于大规模贝叶斯网络的医疗质量数据挖掘研究[D].天津大学,2012.