读书笔记:大数据清洗技术
作者:哈尔滨工业大学博导王宏志
第六章 不一致数据检测与修复
数据一致性指的是在数据中不包含语义错误或相互矛盾的数据,通常数据一致性通过规则检验和基于规则的修复方法来保障。大数据上不一致数据的修复主要挑战在于可扩展性和修复知识匮乏。针对前者,本章提出了基于MapReduce编程模型的数据不一致修复算法和扫描数据一次的不一致数据检测算法;针对后者本章提出了基于众包的不一致数据修复算法。同时本章通过实验验证了本章提出算法的效率和有效性。
数据的一致性显然是信息系统对数据的基本要求。本章以数据依赖理论中的条件函数依赖(CFDs)为基础,通过定义规则来修复不一致的数据。数据依赖定义了关系数据库中不同实体间的内在联系,当数据所表达的语义不符合现实世界所提炼的数据依赖时,数据不一致问题便会发生。下图展示了一个顾客信息表关系模式的示例:
其中:CC:国家代码 AC:区域代码 phn:电话号码 zip:邮编
函数依赖关系(FDs)有:
F1:[CC,AC,phn]→[street,city,zip]
F2:[CC,AC]→[city]
一个顾客的电话号码由他的地址唯一决定(F1),国家代码和区域代码决定着城市(F2)。
我们在这里的修复算法依旧是基于Hadoop平台和条件依赖函数来展开。主要流程如下图:
通过输入一组不一致数据,一组跟该组数据有关的条件依赖函数及每个属性的权重(属性权重是关于每个属性的确定性度量)来进行多重运算,输出的则是原数据的修复集和其修复成功的概率。
几个关键步骤包括预处理,一致性检测和不一致数据检测和修复。预处理很简单,主要是分析我们对每个权重的确定性度量以此来将属性权重与每条对应属性相匹配,同时要将我们输入的条件依赖函数对每个元组进行一个一一对应。预处理也包括对正常数据的预处理过程例如如果每条描述没有被编号则要添加唯一标识来指代。条件依赖函数的一致性检测就是检测对于一组给定的依赖函数在原数据上来说是否存在一个非空集使其满足该依赖函数。进行修复时又分为针对单条元组违反和多条元组共同违反两种不同的修复算法。该章算法及符号复杂,笔者自身能力有限,暂时不能全部梳理完毕,如有读者感兴趣可自行查阅该书p213-222。
第七章 多数据质量问题综合清洗与优化
考虑到大数据的复杂性,在其中经常多种错误共存,因而需要对多种数据质量问题进行综合清洗,本章从三个方面对此进行了研究。首先,本章证明了多种数据质量问题之间的关联关系,为多种数据质量问题综合清洗奠定了理论基础。其次,本章提出了多种数据质量问题并行清洗的优化技术,通过合并MapReduce的轮数来提升数据清洗的效率。最后本章介绍了综合数据清洗系统Cleanix,从系统层面实现多种数据质量问题的综合清洗。
目前对于多数据质量问题国内外研究都还处于初步发展阶段,原因是大数据质量维度的交叉影响带来了以下几点技术挑战:
(1)问题的研究范围广,研究边界难以确定。对于数据质量管理展开研究以来,研究人员从用户需求、业务流程等方面对数据质量的性质进行了多角度的划分。数据的多样性和复杂性也间接导致了数据质量性质问题的多样性和该问题研究的复杂性。
(2)数据质量性质的指标计算、获取难度大。对于数据质量在不同性质上的满足程度以及违反情况和修复处理的理论方法的研究程度不尽相同。例如,在数据一致性、准确性、完整性等方面已经存在许多有效的判断和修复方法,但目前难以对广泛的数据质量性质得到有效、合理的计算方法。
(3)多种数据质量性质量化统一的难度较大。不同数据质量性质的属性不同,所反映和评判数据质量的特点也不同,这对数据质量性质的统一量化提出难题。
(4)数据质量性质关联关系的可靠性和有效性分析难度大。数据集合在各数据质量性质上存在的很多问题,用不同理论和技术展开的数据修复工作的准确性分析问题比较复杂。此外,目前对于数据质量性质间关联关系仍然缺乏理论认识,进而导致对该问题的可靠性和有效性分析难度增大。
本章形式化定义了四种重要质量性质,精确性,完整性,一致性和时效性,提出了基于性质的数据质量综合评估框架,理论上证明了上述四种性质在提高数据质量过程中的具体相关关系,同时又针对交叉维度的问题提出了高效,合理的数据清洗和修复策略。下图即为有关数据质量性质的综合评估框架。之后一一分析了这几大板块之间的关联度,找出关系即可减少MapReduce的轮数,提高实用性。
讲到这里对于这本书的简要介绍就到此结束了,本书更多的是在讲解具体方法模型,更适合有一定建模基础和深厚数学功底的人来进行阅读和研究。我在这讲的每章都是基于Hadoop平台和MapReduce来讲的,但是书上也推荐了更多的新颖实用算法,有一大部分也是基于众包技术来讲解,欢迎感兴趣的读者来阅读《大数据清洗技术》此书!