CN107656978B - 一种基于函数依赖的多样性数据修复方法 - Google Patents
一种基于函数依赖的多样性数据修复方法 Download PDFInfo
- Publication number
- CN107656978B CN107656978B CN201710795434.9A CN201710795434A CN107656978B CN 107656978 B CN107656978 B CN 107656978B CN 201710795434 A CN201710795434 A CN 201710795434A CN 107656978 B CN107656978 B CN 107656978B
- Authority
- CN
- China
- Prior art keywords
- repair
- value
- repairs
- merging
- judging whether
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
Abstract
本发明涉及一种基于函数依赖的多样性数据修复方法,初始化修复集合;判断修复集合中的修复个数是否小于等于设定修复个数,若是,则初始化输入队列后进行下一步,否则进行最后一步;利用偏好函数w’(c)选择每个修复的修复元素,生成输入队列;利用Genrepair算法进行数据修复;判断修复集合中是否包含与本次相同的修复,若为是,则直接返回第二步,否则将本次修复操作加入修复集合,返回第二步;判断是否满足终止条件,若为是,则修复完成,否则对修复集合进行检查,并进行选取相应修复进行替换。与现有技术相比,本发明同时考虑多样性和代价进行数据修复、提高修复效率以及可以适用于指数级别的修复空间的有效动态采样等优点。
Description
技术领域
本发明涉及电力数据修复领域,尤其是涉及一种基于函数依赖的多样性数据修复方法。
背景技术
随着社会信息化进程的加快,数据的处理量日益增多、数据处理流程变得复杂,难免会出现脏数据和不一致的情况。除了大数据众所周知的3V特性,即多数据类型和多数据源(variety),海量规模(volume)和动态数据特征(velocity),学术界和工业界越来越关注到大数据的质量问题,进一步提出了大数据的如数据价值(value)和数据真实性(veracity)等特征。很显然,如果数据本身存在各种各样的错误,那么不管系统可以多么高速地处理多么大量的数据,都无法为用户提供正确的信息。据高德纳公司(Gartner)统计,在全球财富1000强公司中有超过25%的公司关键数据不正确或不精确。在美国企业中有1%~30%的公司数据存在各类错误和误差,仅就医疗数据而言,有13.6%~81%的关键数据遗缺或陈旧。而数据是企业降低成本、损失和增加收入不可或缺的工具,例如英国BT公司(British Telecom)因使用数据质量工具而创造的企业效益每年高达6亿英镑。
在针对电力大数据的研究中,正如前面提及数据常常是有错误的。此时无论我们的查询语句写得再好,数据库管理系统设计得如何高效,我们都不能保证获得准确、完整、及时甚至是正确的访问结果。保证数据质量的重要性随着科学技术的发展,数据价值的提高而日益重要。能够为企业、政府部门提供有效、准确的高质量数据是保证社会正常运转的基础,是我们的重点研究对象。
在数据库理论中,完整性约束是定义在数据值上的约束类型,它是现实世界中数据间关系的抽象表示,反映了属性或属性组之间的相互依存、相互制约的关系。随着大数据时代的来临,数据录入、整合、提取等环节不断增多,我们常常发现数据存在违反约束的现象。这种不一致的数据不仅严重地影响了数据的质量而且大大降低了数据的利用价值,因此基于完整性约束的数据修复技术相继提出。
早期的方法主要通过引入新的元组或删除冲突元组消除不一致数据。近几年,值修复技术开始被广泛地研究,人们通过修改冲突的属性值生成一个满足约束的新数据库――修复。由于修复空间的大小是指数级的,前面的工作主要集中在寻找一个(近似)最优修复或者从修复空间中随机地产生修复。所谓“最优”一般定义在某种代价度量下,指求得一个代价最小的修复。可能的度量方法包括编辑距离,欧式距离等。单一的修复求解意味着抛弃所有其他可能的修复方式,即使存在其他修复具有相近、甚至是相同的代价度量。另外一方面,随机生成修复的方法完全不考虑修复的代价,也就是完全忽略了不同修复实际发生的可能性差异。考虑到修复空间的指数级大小,随机生成修复的方法通常是低效的。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于函数依赖的多样性修复方法。
本发明的目的可以通过以下技术方案来实现:
一种基于函数依赖的多样性数据修复方法,所述的数据修复方法包括以下步骤:
S1、初始化修复集合;
S2、判断修复集合中的修复个数是否小于等于设定修复个数,若是,则进行步骤S3,若为否,则进行步骤S6;
S3、初始化输入队列后,利用偏好函数选择每个修复的修复元素,并根据选择的修复元素生成输入队列;
S4、根据输入队列利用Genrepair算法进行数据修复;
S5、判断修复集合中是否包含与本次相同的修复,若为是,则直接返回S2,若为否,则将本次修复加入修复集合,返回S2;
S6、判断是否满足终止条件,若为是,则修复完成,若为否,则从修复集合中未被标记的修复中选取对目标函数贡献值最大的一个修复r,重复S3~S4得到一个新修复r’,用新修复r’替换修复r得到新的修复集合,计算新的修复集合是否使目标函数值降低,若为否则恢复原来的修复集合并将r贴上标签,若为是则保留新的修复集合,重复S6。
优选地,步骤S6中所述的终止条件具体为:生成新修复的次数达到设定值或新修复使得目标函数的减少量低于设定值。
优选地,步骤S6中所述的目标函数为:在有k个修复的集合S={r1,...,rk}中,目标函数fd(S)表示为S中修复代价总和与距离总和之间的差值:
其中,λ是用于调节代价和距离比例的参数,ri为k个修复的集合S中第i个修复,rj为k个修复的集合S中第j个修复,S为包含这k个修复的集合,c(ri)为第i个修复的代价,k为修复的个数,d(ri,rj)为第i个修复和第j个修复之间的距离。
优选地,步骤S6中修复对目标函数贡献值的计算方法为:
其中,λ是用于调节代价和距离比例的参数,S为修复的集合,k为修复的个数,r表示一个修复,ri为k个修复的集合S中第i个修复,c(r)为修复r的代价,d(r,ri)为修复r和第i个修复之间的距离。
优选地,所述的偏好函数w’(c)为:
若修复集合Sk大小为1,则w'(c)=w(t,A)/(vio(t[A])+1),否则w'(c)=(w(t,A)·(1-λ)+λ·cnt(Sk,t[A])·w(t,A)/(|Sk|+1))/(vio(t[A])+1),其中,λ是用于调节代价和距离比例的参数,w(t,A)表示元组t上属性值A的权重,cnt(Sk,t[A])表示修复集合Sk中修改过单元t[A]的修复的个数,vio(t[A])表示单元t[A]参与的冲突数,|Sk|为修复集合Sk中修复的个数。
优选地,步骤S3中利用偏好函数w’(c)选择修复元素具体为:
选取满足w’(c)≥minw’(·)+α*(maxw’(·)-minw’(·))条件的修复元素,其中minw’(·)和maxw’(·)分别表示w’(c)的最小值和最大值,α为带参数。
优选地,步骤S4中利用Genrepair算法进行元素修复具体包括以下步骤:
S401、初始化等价类集合;
S402、判断输入队列L中待修复单元个数是否为0,若为是则修复完成,若为否,则将输入队列中待修复单元个数减1后进行下一步;
S403、判断正在处理的单元对应的待加入的等价类是否已有等价类值,若为是,则进行S404,否则进行S405;
S404、判断正在处理的单元值是否等于待加入的等价类值,若为是则维持原单元值并返回S402,否则将当前正在处理的单元值修改为待加入的等价类值;
S405、将当前单元值作为待加入的等价类值,判断是否有与当前单元属性值相同的等价类,若为是则调用合并算法Merge进行合并等价类操作,若为否,则直接返回S402。
优选地,所述的合并算法Merge包括以下步骤:
S4051、初始化合并列表,并将待合并的一对等价类加入合并列表;
S4052、判断合并列表是否为空,若为空则合并完成,若不为空则进行下一步;
S4053、从合并列表中取出一对等价类,判断该对等价类的值是否非空且不同,若为是则为当前单元和该单元对应等价类引入新值,否则进行等价类合并,取非空值;
S4054、进行增量式合并后返回S4052。
优选地,所述的增量式合并具体为:将与正在处理的单元对应的等价类有函数映射关系的等价类进行合并。
优选地,所述的α的取值范围为[0,1]。
与现有技术相比,本发明具有以下优点:
1、保持修复之间的差异性的同时求得代价最小的修复:本发明多样性的修复结果应该同时满足两个因素,主要考虑了多样性修复中“代价(cost)”和“距离(distance)”两个特征,第一,修复集合中的每个修复的代价较小,第二,修复间具有差异性,即表示为修改了不同数据项,一个比较直观的度量方法是修复集合总体代价越小越好而修复间的距离之和越大越好,避免修复之间的冗余;
2、提高修复效率:为了避免搜索整个修复空间,本发明采用交换机制和设置提前终止条件提高算法的效率,算法中引入的增量式等价类维护机制有效地提高了算法的效率和可扩展性;
3、可以适用于指数级别的修复空间的有效动态采样。
附图说明
图1为本发明中合并算法Merge流程图;
图2为本发明中Genrepair流程图;
图3为本发明基于函数依赖的多样性数据修复方法MindiifP流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
实施例:
针对传统方法存在的不足和实际问题的需要,本文提出一种新颖的数据修复问题--多样性修复。该问题的目标是找到k个代价小且具有多样性的修复。这些具有代表性的修复结果不仅可以应用到用户参与的交互式修复方法中为用户提供可靠的参考,还可以有效地概括整个可能的修复空间提高查询一致性结果方法的性能。从该问题的目标出发,本文引入了一种代价和多样性(用距离表示)的二元平衡最优问题,并证明该问题的复杂度为NP-Complete。
尽管多样性修复问题有很高的复杂度,本文提出一种启发式方法。我们将修复计算嵌入到多样性模型中,通过模型引导算法直接生成满足条件的k个修复。为了避免搜索整个修复空间,我们采用交换机制和设置提前终止条件提高算法的效率,算法中引入的增量式等价类维护机制有效地提高了算法的效率和可扩展性。
修复多样性框架
主要考虑了多样性修复中“代价(cost)”和“距离(distance)”两个特征:
代价:我们将代价定义为修改属性值所需要的开销。直观上看来,修复过程中,我们更乐于修改那些权重比较小的属性值,避免选择权重较大的值,从而尽量减少修复产生的开销。我们用cost表示修复产生的代价或者开销。因此,代价较小的修复具有更多的有用信息、更有参考价值。之前的工作从来没有在考虑代价的情况下寻找一个修复集合。
多样化:对于多个小代价修复来说,如果互相类似就会缺乏特殊性,最终造成信息的冗余。因此,在生成修复集时仅仅考虑代价因素是不够的,最好每个修复都含有差异的信息。在此之前的工作都从未考虑过修复多样性的问题,这也是本工作的核心创新点。
多样性的修复结果应该同时满足两个因素:第一,修复集合中的每个修复的代价较小;第二,修复间具有差异性,即表示为修改了不同数据项。一个比较直观的度量方法是修复集合总体代价越小越好而修复间的距离之和越大越好。因此,我们将该问题定义为MindiffP问题,从研究的角度看,MindiffP问题具有一般性,符合我们正常逻辑思维。此外,我们可以看出“代价和”与“距离和”两个因素对我们的目标存在相反的作用,即代价和越小越好而距离和越大越好,因此我们可以假设代价和因子与目标函数成正比,距离和因子和目标函数成正比。因此,MindiffP问题目标函数定义如下:
多样性目标函数fd(S):在有k个修复的集合S={r1,...,rk}中,目标函数fd(S)表示为S中修复代价总和与距离总和之间的差值。
变量说明:其中,λ是用于调节代价和距离比例的参数,表现为距离因素随着λ的增大而增大;ri为k个修复的集合S中第i个修复;rj为k个修复的集合S中第j个修复;S为包含这k个修复的集合;c(ri)为第i个修复的代价;k为修复的个数;d(ri,rj)为第i个修复和第j个修复之间的距离(相似程度);i和j为下标量,即第i个,第j个。
将距离和的比例缩小2/(k-1),是因为距离和存在k·(k-1)/2项,而代价和只有k项。
方法具体步骤:
一种基于函数依赖的多样性数据修复方法,所述的数据修复方法包括以下步骤:
S1、初始化修复集合;
S2、判断修复集合中的修复个数是否小于等于设定修复个数,若是,则进行步骤S3,若为否,则进行步骤S6;
S3、初始化输入队列后,利用偏好函数选择每个修复的修复元素,并根据选择的修复元素生成输入队列;
S4、根据输入队列利用Genrepair算法进行数据修复;
S5、判断修复集合中是否包含与本次相同的修复,若为是,则直接返回S2,若为否,则将本次修复加入修复集合,返回S2;
S6、判断是否满足终止条件,若为是,则修复完成,若为否,则从修复集合中未被标记的修复中选取对目标函数贡献值最大的一个修复r,重复S3~S4得到一个新修复r’,用新修复r’替换修复r得到新的修复集合,计算新的修复集合是否使目标函数值降低,若为否则恢复原来的修复集合并将r贴上标签,若为是则保留新的修复集合,重复S6。
步骤S6中所述的终止条件具体为:生成新修复的次数达到设定值或新修复使得目标函数的减少量低于设定值。
步骤S6中所述的目标函数为:在有k个修复的集合S={r1,...,rk}中,目标函数fd(S)表示为S中修复代价总和与距离总和之间的差值:
其中,λ是用于调节代价和距离比例的参数,ri为k个修复的集合S中第i个修复,rj为k个修复的集合S中第j个修复,S为包含这k个修复的集合,c(ri)为第i个修复的代价,k为修复的个数,d(ri,rj)为第i个修复和第j个修复之间的距离。
步骤S6中修复对目标函数贡献值的计算方法为:
其中,λ是用于调节代价和距离比例的参数,S为修复的集合,k为修复的个数,r表示一个修复,ri为k个修复的集合S中第i个修复,c(r)为修复r的代价,d(r,ri)为修复r和第i个修复之间的距离。
所述的偏好函数w’(c)为:
若修复集合Sk大小为1,则w'(c)=w(t,A)/(vio(t[A])+1),否则w'(c)=(w(t,A)·(1-λ)+λ·cnt(Sk,t[A])·w(t,A)/(|Sk|+1))/(vio(t[A])+1),其中,λ是用于调节代价和距离比例的参数,w(t,A)表示元组t上属性值A的权重,cnt(Sk,t[A])表示修复集合Sk中修改过单元t[A]的修复的个数,vio(t[A])表示单元t[A]参与的冲突数,|Sk|为修复集合Sk中修复的个数。
步骤S3中利用偏好函数w’(c)选择修复元素具体为:
选取满足w’(c)≥minw’(·)+α*(maxw’(·)-minw’(·))条件的修复元素,其中minw’(·)和maxw’(·)分别表示w’(c)的最小值和最大值,α为带参数。
步骤S4中利用Genrepair算法进行元素修复具体包括以下步骤:
S401、初始化等价类集合;
S402、判断输入队列L中待修复单元个数是否为0,若为是则修复完成,若为否,则将输入队列中待修复单元个数减1后进行下一步;
S403、判断正在处理的单元对应的待加入的等价类是否已有等价类值,若为是,则进行S404,否则进行S405;
S404、判断正在处理的单元值是否等于待加入的等价类值,若为是则维持原单元值并返回S402,否则将当前正在处理的单元值修改为待加入的等价类值;
S405、将当前单元值作为待加入的等价类值,判断是否有与当前单元属性值相同的等价类,若为是则调用合并算法Merge进行合并等价类操作,若为否,则直接返回S402。
合并算法Merge包括以下步骤:
S4051、初始化合并列表,并将待合并的一对等价类加入合并列表;
S4052、判断合并列表是否为空,若为空则合并完成,若不为空则进行下一步;
S4053、从合并列表中取出一对等价类,判断该对等价类的值是否非空且不同,若为是则为当前单元和该单元对应等价类引入新值,否则进行等价类合并,取非空值;
S4054、进行增量式合并后返回S4052。
增量式合并具体为:将与正在处理的单元对应的等价类有函数映射关系的等价类进行合并。
α的取值范围为[0,1]。
本方法具体包括一个修复多样性框架和以下三个算法:
(1)Genrepair
如图2所示,用基于等价类的方法,对不一致的数据进行修复。首先初始化等价类集合ξ(第1行)后,Genrepair开始依次处理每个单元。当正在处理的单元ti[B]被加入的EC(等价类)已经包含其他单元,并且该EC的值已经被确定,那么如果ti[B]不等于EC的值,Genrepair将修改ti[B];否则,Genrepair将设定ti[B]所在等价类的值,并继续维护ξ。Genrepair首先将ti[B]的值设成该EC的值,这项操作可能会引起EC合并,即如果属性B上存在拥有相同值的EC,Genrepair调用合并函数Merge。如果合并没有成功,Genrepair为单元ti[B]和它所在的EC引入新值(第10行),否则返回一个修改过后的ECs。
我们使用了基于等价类(Equivalence Class,EC)的方法。定义如下:
等价类EC定义在属性值上,属性A上的一个EC(eA)是一些单元ti[A]的集合,eA表示属性A上的一个等价类;这些单元经过Genrepair处理后具有相同的值。为了便于表示,(1)任何单元c在任何时刻都属于某个确定的EC,表示为ec(c);初始化时,单元c分配给等价类EC{e},该等价类中只有唯一的单元c。(2)在生成的修复中,每个eA都关联一个值val(eA),该值将被分配给eA中的每个单元。初始状态下,val(eA)的值为空(NULL),表明该等价类的值还没有确定。(3)ξ表示包含所有等价类的集合。
(2)Merge
如图1所示,由于等价类的构造和合并是Genrepair算法的核心,并且合并操作是一个比较复杂的过程。因此我们引入合并算法Merge。从理论上讲Merge的难点在于当合并两个ECs可能会递归地引起其他ECs的合并。在Merge函数中我们用列表K保存将要合并的ECs,直到这个队列为空,函数返回。如果待合并的两个ECs的值都不为空(NULL)且不相同,那么合并失败。否则我们将两个ECs合并成一个新的EC。然后Merge将其他需要的合并的ECs加入队列K中。为了提高算法的效率,Genrepair提供了一个增量式求解的方法,即假设属性C上有两个ECs,当t1[C]、t2[C]来自不同的EC,Merge函数只检查元组t1、t2,并且作用于以C为左属性的函数依赖。当所有的合并成功以后,Merge返回一个更新后的等价类集合ξ。
(3)MindiffP
如图3所示,MindiffP算法主要分为两个部分:第一部分主要利用不同的输入序列L,引导Genrepair算法生成包含k个修复的集合Sk。其中,w'(c)函数计算修改某个单元t[A]的偏好。w'(c)具体定义为:若Sk大小为1,则w'(c)=w(t,A)/(vio(t[A])+1);否则w'(c)=(w(t,A)·(1-λ)+λ·cnt(Sk,t[A])·w(t,A)/(|Sk|-1))/(vio(t[A])+1)。在w'(c)中,w(t,A)表示元组t上属性值t(A)的权重,cnt(Sk,t[A])表示集合Sk中修改过单元t[A]的修复的个数,vio(t[A])表示单元t[A]参与的冲突数。从w'(t)的定义可以看出,算法偏向于修改w'(t)值较小的的单元,即代价小、被修改的次数少、参与冲突多的单元,这正好符合多样性修复的目标:寻找代价小并且多样化的修复集。此外,Mindiff引入带参数α∈[0,1]的贪心随机方法进一步调整输入序列L。注意,当有单元从表中所有元素集合P中移除时,minw’(c)和maxw’(c)需要重新计算。此外,当α=0时,输入序列L按照w'()递减排列,w'()表示所有的w'(c)的集合,c表示cell。
当α=1时,L是一个完全随机的序列;否则,每次w'()值在一定范围的一个单元被加入到L中。随机算法、贪心算法有助于得到非常丰富的输入序列。
第二部分,Mindiff算法为了进一步优化目标函数fd(),通过生成新的修复和Sk中的修复相交换。其中,f'd(r)表示修复r对fd(Sk)的贡献值,f'd(r)具体定义为
其中,λ是用于调节代价和距离比例的参数,Sk为修复的集合,k为修复的个数,r表示一个修复,ri为k个修复的集合S中第i个修复,c(r)为修复r的代价,d(ri,rj)为第i个修复和第j个修复之间的距离,i和j为下标量,即第i个,第j个。
与fd(S)类似,各个变量含义也相同。算法会按照f'd(r)由大到小的顺序检查每个修复。当需要替换掉一个修复时,Mindiff通过在集合Sk\{r}上计算出一个新的修复r'构成新的集合Sk比较新旧两个修复集对目标函数的贡献;如果r'的加入优化了目标函数,则将r'保留在Sk中,并且重新计算所有的fd();否则将Sk恢复成原来的集合。对于筛选过程中没有引起Sk变化的修复将会贴上标签以免再次被检查,直到Sk改变;同样交换后换入的新修复也需要贴上标签。第二部分的循环终止条件可以有多种设计,可以设为计算新修复的次数,或者考虑基于交换带来的收益,例如将最后n次交换的平均收益已经低于某个阈值设为终止条件。
本发明主要优点:
提出了一个全新的多样性修复问题,它可以应用于指数级别的修复空间的有效动态采样,以生成一组有较大概率发生并且具有多样性的修复。该修复集中的修复有效地在修复的有效性(代价小)和修复的差异性间取得平衡。可以作为修复空间的一个有效概要,满足用户交互式修复和基于概要的一致查询的应用需求。
提出了一个有效的多样性修复算法。不同于修复空间的随机采样算法,该算法使用多样性优化目标引导修复生成,并通过交换增益等技术进一步针对修复集的多样性目标进行优化。该算法具有良好的多样性优化效果,同时具有良好的运行效率。
利用本发明中的修复方法进行实际修复过程如下:
(1)Genrepair实例1:
如表1所示,当按照元组t1,t2,t3的顺序,元组内部属性以ID,Name,Zip,City的顺序排列输入序列时,Genrepair生成表2中的修复1,修复1的具体步骤如表5、表6、表7和表8所示。在每一步中,我们标明了当前被Genrepair处理过的单元,并且用同一列中边框为虚线的单元格表示出包含两个以上元素的等价类(EC)。具体来看表5中步骤1单元t1[ID],t1[Name],t1[Zip],t1[City],t2[ID],t2[Name]依次处理后,并没引起属性值的变换。一开始,每个单元的值被处理过后等于唯一包含它自身EC的值,比如t2[Zip]被设为“100000”,等于自己所在EC的值,表示为e2Zip。既然这个EC的值等于包含t1[City]的EC(e1City)的值,那么两个EC即e2Zip和e1Zip被合并,并且反过来引起包含t1[City]的等价类e1City和包含t2[City]的等价类e2City合并,由于函数依赖Zip→City的约束。可以看出,这次合并是成功的,因为e2City的值还没有确定。在合并之后t1[City]和t2[City]被放入同一个EC中,并且等于e1City的值“Beijing”。表6步骤2中,轮到处理单元t2[City]时,发现它所在的EC的值不等于自己的属性值,因此单元t2[City]将被修改为EC的值“Beijing”。表7步骤3中处理单元t3[ID]时引起了包含t1[ID]的等价类与包含t3[ID]的等价类合并,同时引起了t1[Name]、t1[Zip]、t1[City]分别与t3[Name]、t3[Zip]、t3[City]的等价类合并。因为所有的合并都是成功的,因此t3[ID]的值保持不变。最后表8步骤4中,单元t3[Name]、t3[City])分别被修改为其所在EC的值,此外t3[Zip]没有被修改是因为它的值等于其所在等价类的值。
(2)Genrepair实例2:
如表3中,当按照属性列ID,Name,City,Zip的顺序,列内以t1,t2,t3顺序排列输入序列时,Genrepair生成修复2。表9修复2步骤1中处理t1[ID],t3[ID]时并不改变单元的值,但是引起包含t1[ID]和t3[ID]的等价类合并,以及t1[Name],t1[Zip],t1[City]分别和t3[Name],t3[Zip],t3[City]的等价类合并。表10修复2步骤2中,t3[Name]的值被修改为“Michael”,等于t1[Name]的值,因为它们处于同一个等价类中,并且该等价类的值在处理t1[Name]已经被确定为“Michael”。表11修复2步骤3中,与步骤2方法类似,我们修改t3[City]。表12修复2步骤4中,当处理t2[Zip]时,它所在的等价类e2Zip的值被设定为与它相同的值“100000”,这将引起t1[Zip]的等价类与e2Zip合并,同时引起t1[City]和t2[City]所在的等价类合并。然而,t1[City],t2[City]分别在的不同等价类且已经值不相同,因此合并失败。这时我们引入新值作为t2[Zip]及其EC的值,并且所有以“100000”作为等价类e2Zip的值的合并被取消。最后在处理t3[Zip]时,由于它等于其所在EC的值,因此保持不变。
(3)MindiffP实例1:
如果调整生成修复1的输入序列,将修复1中被修改过的单元t2[City],t3[Name],t3[City]放到输入序列的前面作为新的输入序列,Genrepair将生成表4中的修复3。在多样性修复算法中,通过调整待修复单元的输入顺序,已得到多样性的修复结果。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种基于函数依赖的多样性数据修复方法,其特征在于,所述的数据修复方法包括以下步骤:
S1、初始化修复集合;
S2、判断修复集合中的修复个数是否小于等于设定修复个数,若是,则进行步骤S3,若为否,则进行步骤S6;
S3、初始化输入队列后,利用偏好函数选择每个修复的修复元素,并根据选择的修复元素生成输入队列;
S4、根据输入队列利用Genrepair算法进行数据修复;
S5、判断修复集合中是否包含与本次相同的修复,若为是,则直接返回S2,若为否,则将本次修复加入修复集合,返回S2;
S6、判断是否满足终止条件,若为是,则修复完成,若为否,则从修复集合中未被标记的修复中选取对目标函数贡献值最大的一个修复r,重复S3~S4得到一个新修复r’,用新修复r’替换修复r得到新的修复集合,计算新的修复集合是否使目标函数值降低,若为否则恢复原来的修复集合并将r贴上标签,若为是则保留新的修复集合,重复S6;
所述的偏好函数w’(c)为:
若修复集合Sk大小为1,则w'(c)=w(t,A)/(vio(t[A])+1),否则w'(c)=(w(t,A)·(1-λ)+λ·cnt(Sk,t[A])·w(t,A)/(|Sk|+1))/(vio(t[A])+1),其中,λ是用于调节代价和距离比例的参数,w(t,A)表示元组t上属性值A的权重,cnt(Sk,t[A])表示修复集合Sk中修改过单元t[A]的修复的个数,vio(t[A])表示单元t[A]参与的冲突数,|Sk|为修复集合Sk中修复的个数;
步骤S3中利用偏好函数w’(c)选择修复元素具体为:
选取满足w’(c)≥minw’(·)+α*(maxw’(·)-minw’(·))条件的修复元素,其中minw’(·)和maxw’(·)分别表示w’(c)的最小值和最大值,α为带参数;
所述的α的取值范围为[0,1]。
2.根据权利要求1所述的一种基于函数依赖的多样性数据修复方法,其特征在于,步骤S6中所述的终止条件具体为:生成新修复的次数达到设定值或新修复使得目标函数的减少量低于设定值。
5.根据权利要求1所述的一种基于函数依赖的多样性数据修复方法,其特征在于,步骤S4中利用Genrepair算法进行元素修复具体包括以下步骤:
S401、初始化等价类集合;
S402、判断输入队列L中待修复单元个数是否为0,若为是则修复完成,若为否,则将输入队列中待修复单元个数减1后进行下一步;
S403、判断正在处理的单元对应的待加入的等价类是否已有等价类值,若为是,则进行S404,否则进行S405;
S404、判断正在处理的单元值是否等于待加入的等价类值,若为是则维持原单元值并返回S402,否则将当前正在处理的单元值修改为待加入的等价类值;
S405、将当前单元值作为待加入的等价类值,判断是否有与当前单元属性值相同的等价类,若为是则调用合并算法Merge进行合并等价类操作,若为否,则直接返回S402。
6.根据权利要求5所述的一种基于函数依赖的多样性数据修复方法,其特征在于,所述的合并算法Merge包括以下步骤:
S4051、初始化合并列表,并将待合并的一对等价类加入合并列表;
S4052、判断合并列表是否为空,若为空则合并完成,若不为空则进行下一步;
S4053、从合并列表中取出一对等价类,判断该对等价类的值是否非空且不同,若为是则为当前单元和该单元对应等价类引入新值,否则进行等价类合并,取非空值;
S4054、进行增量式合并后返回S4052。
7.根据权利要求6所述的一种基于函数依赖的多样性数据修复方法,其特征在于,所述的增量式合并具体为:将与正在处理的单元对应的等价类有函数映射关系的等价类进行合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710795434.9A CN107656978B (zh) | 2017-09-06 | 2017-09-06 | 一种基于函数依赖的多样性数据修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710795434.9A CN107656978B (zh) | 2017-09-06 | 2017-09-06 | 一种基于函数依赖的多样性数据修复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107656978A CN107656978A (zh) | 2018-02-02 |
CN107656978B true CN107656978B (zh) | 2021-02-12 |
Family
ID=61128157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710795434.9A Active CN107656978B (zh) | 2017-09-06 | 2017-09-06 | 一种基于函数依赖的多样性数据修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107656978B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885561A (zh) * | 2019-01-03 | 2019-06-14 | 中国人民解放军国防科技大学 | 一种基于最大依赖集和属性相关性不一致数据清洗方法 |
CN110287176A (zh) * | 2019-05-31 | 2019-09-27 | 国网上海市电力公司 | 一种基于次序依赖的电力数据序列数组优化方法 |
CN113342555B (zh) * | 2020-02-18 | 2024-01-09 | 炬芯科技股份有限公司 | 一种修复rom的方法、装置以及存储介质 |
CN113609928B (zh) * | 2021-07-19 | 2022-12-20 | 广州市雅天网络科技有限公司 | 基于云计算和图像识别的智慧城市管理系统 |
CN116594795B (zh) * | 2023-03-03 | 2024-01-26 | 齐鲁工业大学(山东省科学院) | 面向数据中台的错误检测和修复方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101404613B (zh) * | 2008-11-20 | 2011-04-20 | 华为技术有限公司 | 一种数据保护的方法和设备 |
CN103049354B (zh) * | 2012-12-21 | 2015-08-19 | 华为技术有限公司 | 数据修复方法、数据修复装置以及存储系统 |
CN105242985B (zh) * | 2015-09-09 | 2018-05-25 | 华为技术有限公司 | 数据修复方法及装置 |
-
2017
- 2017-09-06 CN CN201710795434.9A patent/CN107656978B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107656978A (zh) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107656978B (zh) | 一种基于函数依赖的多样性数据修复方法 | |
CN102722531B (zh) | 一种云环境中基于分片位图索引的查询方法 | |
CN112269792B (zh) | 数据查询方法、装置、设备及计算机可读存储介质 | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
JP2014533408A (ja) | データクラスタ化、データセグメント化、及びデータ並列化 | |
CN116955361A (zh) | 存储器内密钥范围搜索方法和系统 | |
CN114420215B (zh) | 基于生成树的大规模生物数据聚类方法及系统 | |
CN105574541A (zh) | 一种基于紧密度排序的网络社区发现方法 | |
CN112241421A (zh) | 一种数据血缘确定方法和装置 | |
US20190050429A1 (en) | Parallel Discretization of Continuous Variables in Supervised or Classified Dataset | |
CN111768096A (zh) | 基于算法模型的评级方法、装置、电子设备及存储介质 | |
CN108509531B (zh) | 一种基于Spark平台的不确定数据集频繁项挖掘方法 | |
US20230126509A1 (en) | Database management system and method for graph view selection for a relational-graph database | |
CN111078896A (zh) | 基于prmatc算法的知识库补全方法 | |
US20210019297A1 (en) | Service data processing | |
US11829379B2 (en) | Methods and systems of a matching platform for entitites | |
RU2755568C1 (ru) | Способ параллельного выполнения операции JOIN при обработке больших структурированных высокоактивных данных | |
Ni et al. | ARTAR: Temporal association rule mining algorithm based on attribute reduction | |
Zheng et al. | User preference-based data partitioning top-k skyline query processing algorithm | |
CN110633285A (zh) | 一种满足差分隐私的不确定数据频繁项集挖掘方法 | |
CN117390064B (zh) | 一种基于可嵌入子图的数据库查询优化方法 | |
US20240045864A1 (en) | Methods and Systems of an Entity Database | |
Choi et al. | Optimization of Dominance Testing in Skyline Queries Using Decision Trees | |
Liu et al. | The optimization of apriori algorithm based on array and its application in the analysis of insurance clients | |
Ju et al. | Data Cleaning Optimization for Grain Big Data Processing using Task Merging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |