CN114281809B - 一种多源异构数据清洗方法及装置 - Google Patents
一种多源异构数据清洗方法及装置 Download PDFInfo
- Publication number
- CN114281809B CN114281809B CN202111577423.6A CN202111577423A CN114281809B CN 114281809 B CN114281809 B CN 114281809B CN 202111577423 A CN202111577423 A CN 202111577423A CN 114281809 B CN114281809 B CN 114281809B
- Authority
- CN
- China
- Prior art keywords
- tuple
- data
- tuples
- missing
- subclass
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种多源异构数据清洗方法及装置,面向于多种数据质量维度下不当的数据清洗顺序导致的无效和低质量数据修复问题。本发明从智慧校园背景下多种数据质量维度出发,通过规范数据的检查与修复顺序,保证了整体数据清洗的有效性。在数据修复过程中,利用当前已知的校园内部知识作为外部约束条件,扩展了修复规则集合,提高了数据清洗的准确性。在智慧校园建设过程中,本发明清洗后的校园数据,可有效应用于高校数据治理、数据开放以及数据挖掘和分析等各个过程。避免了在多种数据质量维度情况下,数据修复所产生的一致性问题,极大提高了数据的可用性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多源异构数据清洗方法及装置,更具体地说,本发明涉及一种面向数据清洗领域,针对存在完整性、一致性和唯一性等数据质量问题的数据的检查与修复方法。
背景技术
随着信息技术的快速发展,大数据时代背景下,数据***式增长。在对多源异构数据集成的过程中,任何不当的操作都有可能造成一系列数据质量问题。在数据挖掘领域,数据质量的高低决定着能否在海量复杂的数据中挖掘出更多有价值的知识,进而为用户提供更加可靠、准确的决策支持。
目前业界对于数据质量的衡量标准,主要分为完整性、一致性、唯一性、准确性、有效性和时效性等六大维度。传统关于数据质量的研究大多只针对单一维度的数据质量,又或是忽略了数据多维度之间存在的关联关系,导致清洗后数据的可用性较低。而现实中的数据往往是多维度的,并且每种数据维度之间又不完全相互独立。因此,传统单一维度和简单的数据清洗方法及装置不再适用于解决当前复杂场景下多维度的数据质量问题。
发明内容
针对上述问题,本发明提出了一种多源异构数据清洗方法及装置,目的在于解决现实生活中操作人员在收集和录入数据时由于遗漏、违反约束条件以及重复操作等导致的多维度数据质量问题。通过该方法及装置能够完成数据在完整性、一致性和唯一性三种质量维度上的数据清洗,提高了数据的可用性。
为实现上述目的,本发明提供了一种多源异构数据清洗方法,具体步骤如下:
步骤1:获取多源异构数据,将相同属性的数据转换为统一的数据格式,得到由若干元组构成的数据集合;其中每条元组由一组所有属性的数据构成;
所述多源是指数据的来源具有多样性,异构是指数据的类型、特征等具有差异性;
步骤2:对步骤1处理后的数据构建不同属性之间存在的条件函数依赖,然后将条件函数依赖Σcfd和外部约束Σfc添加到规则集合Σ,规则集合Σ中每一条规则对应某条件函数依赖或某外部约束;
所述外部约束是指人为设定的关于数据上硬性约束、数量约束和等值约束等各种约束;
步骤3:对步骤1处理后的数据中所有元组进行完整性检查和完整性修复;
3-1完整性检查
依次遍历步骤1处理后的数据中所有元组,判断当前元组是否存在缺失,若是则将当前元组添加到缺失元组集合TL,若否则添加到完整元组集合TC;
3-2完整性修复
依次遍历缺失元组集合TL中的所有缺失元组,检查当前缺失元组的缺失项是否与规则集合Σ中某些规则(即条件函数依赖Σcfd和/或外部约束Σfc)相匹配,若是则利用这些规则对当前缺失元组的缺失数据进行填充,反之则使用基于改进KNN的混合填充算法对当前缺失元组的缺失数据进行填充;
所述基于改进KNN的混合填充算法,具体步骤如下:
1)将当前缺失元组的非缺失数据列划分为数值型(num)、二元型(dual)、序数型(ordi)、分类型(cate)和文本型(text)等5种类型的缺失子类元组;
2)将完整元组集合TC按照当前缺失元组中每种类型子类元组对应的相同数据列也划分为5种类型的完整子类元组集合;
3)分别计算每种类型缺失子类元组和完整子类元组之间的子类距离;
对于数值型子类元组,使用标准化欧式距离公式(1)计算缺失子类元组和完整子类元组之间的子类距离;
其中,n表示子类元组中数值数据的总个数,xLi表示缺失子类元组第i个数据,xCi表示完整子类元组第i个数据,si表示子类元组第i列数据所有取值的标准差;
对于二元型子类元组,使用公式(2)计算缺失子类元组和完整子类元组之间的子类距离;
其中,若将二元数据的两种取值分别视为0和1,则p表示缺失子类元组和完整子类元组中对应数据均为1的个数,q表示缺失子类元组数据为0且完整子类元组对应数据为1的个数,r表示缺失子类元组数据为1且完整子类元组对应数据为0的个数,s表示缺失子类元组和完整子类元组中对应数据均为0的个数;
对于序数型子类元组,首先使用公式(3)将元组中的序数数据转换为数值数据,然后使用数值型元组距离公式(4)计算缺失子类元组和完整子类元组之间的子类距离;
D(L,C)ordi=D(L,C)num 公式(4)
其中,若将序数型子类元组第i列数据的所有取值按顺序视为0到N的序列,Ni表示第i列数据的序号总数N,Mi表示数据的取值在序列中的序号,Xi表示转换后的数值数据;
对于分类型子类元组,使用公式(5)计算缺失子类元组和完整子类元组之间的子类距离;
其中,由于缺失子类元组和完整子类元组内数据个数相同,则T表示缺失子类元组或完整子类元组中数据的总个数,E表示缺失子类元组和完整子类元组中对应数据相同的个数;
对于文本型子类元组,使用编辑距离公式(6)计算字符串数据之间的距离,然后使用公式(7)计算缺失子类元组和完整子类元组之间的子类距离并进行归一化处理;
其中,Di(L,C)text表示缺失子类元组和完整子类元组中第i个字符串数据之间的编辑距离,Lj、Ck分别表示缺失子类元组、完整子类元组中第i个字符串数据的前j、k个字符数据 (0≤j≤Ui,0≤k≤Vi),Min表示最小值函数;由于缺失子类元组和完整子类元组内数据个数相同,则m表示缺失子类元组或完整子类元组中字符串数据的总个数,Ui、Vi分别表示缺失子类元组和完整子类元组中第i个字符串数据的总长度,Max表示最大值函数;
4)计算缺失元组t1与完整元组t2之间的元组距离;
缺失元组t1与完整元组t2之间的元组距离由上述5种类型的子类距离分别乘以其对应的外部权重Wi相加得到,见公式(8)和公式(9);
其中,i表示5种类型的子类元组,Wi表示第i种类型的子类元组在当前元组中的权重系数,Di(t1,t2)表示第i种缺失子类元组和完整子类元组之间的子类距离;Y表示当前元组中数据的总个数,Yi表示当前元组中第i种类型数据的个数;
5)将缺失元组和完整元组之间的元组距离递增排序;
6)选择元组距离最小的前k个完整元组作为目标元组集合;
所述k值是通过训练得到,具体步骤如下:
6-1)将所有完整元组划分为测试元组集合和训练元组集合;
6-2)将训练元组集合划分为n个大小相同的子元组集合;
6-3)依次将每个子元组集合作为完整元组集合TC,分别使用1到100作为训练k值来修复当前缺失元组;
6-4)获取每个子元组集合中修复正确率最高的k值;
6-5)将这n个k值的平均值作为测试元组集合的修复k值;
其中,为保证训练k值取值在1到100之间,在划分训练元组集合时每个子元组集合的大小n应不小于100;
7)选择目标元组集合与缺失元组缺失项对应列中出现频次最多的数据作为缺失元组缺失数据的填充值;
步骤4:对步骤3处理后的数据中所有元组进行一致性检查和一致性修复;
4-1一致性检查
依次遍历所有元组,检查当前元组与步骤2规则集合中的所有规则是否匹配,若是则继续检查下一个元组,若否则将当前元组违反的规则(即条件函数依赖Σcfd和/或外部约束Σfc) 添加到异常规则集合Σ';
4-2一致性修复
一致性修复主要包括确定规则修复顺序、定位异常元组、选择目标元组3个过程;
4-2-1确定规则修复顺序
1)将异常规则集合Σ'中的条件函数依赖作为节点V,节点间的依赖关系作为边E,构建规则序列图G(V,E),其中V=Σ';对于任意两个条件函数依赖如果则/>之间存在一条由/>指向/>的边,即/>存在依赖关系,其中L和R分别表示条件函数依赖的左部和右部;
2)依次选择规则序列图中入度为0的节点(即条件函数依赖)作为优先修复规则,添加到修复规则集合Σrep,然后将该节点和与该节点相连接的边进行删除,直到规则序列图 G(V,E)中没有剩余节点;若规则序列图非空且不存在入度为0的节点,则在规则序列图中的所有条件函数依赖组合中选择一个修复代价总和最小的组合作为修复规则集合Σrep;
所述入度为0是指在规则序列图中没有一条边指向该节点;
所述修复代价是指使用一条元组对违反当前规则的所有异常元组进行一致性修复时产生的元组数据修改总次数;
4-2-2定位异常元组
依次遍历修复规则集合Σrep中的所有规则,将违反当前规则的所有元组添加到异常元组集合Te;
4-2-3选择目标元组
结合规则集合Σ中的外部约束规则Σfc,在异常元组集合Te中选择具有最小修复代价的元组作为目标元组,利用目标元组修复其它异常元组;
步骤5:对步骤4处理后的数据中所有元组进行唯一性检查和修复
对步骤4处理后的数据使用基于混合距离和动态窗口的改进SNM算法,检查滑动窗口内第一条元组与窗口内其他元组之间的元组距离是否小于设定的距离阈值;若是则认为这两条元组数据上相似重复,并删除窗口内重复的元组,若否则认为第一条元组与其他元组满足唯一性条件;将滑动窗口内第一条元组移出以及窗口内最后一条元组的下一条元组移入,如此反复,直至所有元组完成唯一性检查,实现对数据唯一性的检查与修复;
所述基于混合距离和动态窗口的改进SNM算法,具体步骤如下:
5-1)对所有元组选择一个或者多个数据,计算其对应的键值并作为排序关键字;
5-2)根据排序关键字对所有元组进行排序;
5-3)在排序后的元组上设置一个初始大小为N且步长为1的滑动窗口,根据公式(8) 计算滑动窗口内第一条元组与窗口内其它元组之间的元组距离,若存在至少一个元组距离小于距离阈值则删除滑动窗口内重复的元组,反之则将滑动窗口移动一个步长,使得滑动窗口内第一条元组移出,滑动窗口内最后一条元组的下一条元组移入;
5-4)计算滑动窗口内首尾元组之间的元组距离与滑动窗口内元组个数的比值,并将其作为窗口平均密度,若窗口平均密度小于密度阈值则增大滑动窗口的大小,若窗口平均密度等于密度阈值则保持滑动窗口大小不变,若窗口平均密度大于密度阈值则减小滑动窗口的大小,继续滑动直至所有元组检查完成;
步骤6:对步骤5处理后的数据重新检查所有元组与规则集合中的所有规则是否匹配,若是则所有元组满足一致性条件,完成数据集的清洗,若否则返回步骤4-2继续执行。
为实现上述目的,本发明还提供了一种多源异构数据清洗装置,具体模块如下:
数据采集及预处理模块,用于获取多源异构数据并将相同属性的数据转换为统一格式的数据;
规则集合构建模块,用于对来自数据采集及预处理模块的数据构建包含条件函数依赖和外部约束的规则集合;
完整性检查与修复模块,用于检查数据采集及预处理模块获取的数据是否存在缺失,然后将数据划分为缺失元组集合和完整元组集合;依次检查缺失元组集合中所有缺失元组的缺失项是否与规则集合中某些规则相匹配,若是则利用这些规则对当前缺失元组的缺失数据进行填充,反之则使用基于改进KNN的混合填充算法对当前缺失元组的缺失数据进行填充;
一致性检查与修复模块,用于检查完整性检查与修复模块处理后的数据是否违反规则集合中的规则,若是则确定修复规则,将违反修复规则的所有元组作为异常元组;在所有异常元组中选择具有最小修复代价的元组作为目标元组,利用目标元组修复其它异常元组;
唯一性检查与修复模块,用于对一致性检查与修复模块处理后的数据使用基于混合距离和动态窗口的改进SNM算法检查并删除数据上重复的元组;
一致性二次检查模块,用于检查唯一性检查与修复模块处理后的数据是否满足一致性条件,若是则完成数据的清洗,若否则返回一致性检查与修复模块重新执行。
本发明的技术方案具有的优点如下:
1、相较于传统单一维度的数据清洗,本发明从完整性、一致性和唯一性三种数据质量维度出发,针对每种维度的数据分别设计清洗的方法和步骤,提高了多维数据的整体质量。
2、相较于传统仅依靠条件函数依赖的数据清洗,本发明不仅使用了数据之间存在的条件函数依赖,还利用了外部约束条件,扩充了数据清洗的规则集合,提高了数据质量检测与修复的效果。
3、相较于传统单一类型的数据清洗,本发明能够解决数值型、二元型、序数型、分类型和文本型等五种混合类型的数据质量问题,针对每种类型的数据分别选择适合的距离度量公式,提高了数据清洗的准确性。
4、相较于传统的数据清洗装置,本发明通过设计规范化的数据清洗装置,避免了完整性修复对一致性修复和唯一性修复、一致性修复对唯一性修复产生的影响,保证了数据清洗的有效性。
附图说明
图1为本发明实施例中的多源异构数据清洗方法步骤示意图;
图2为本发明实施例中的完整性检查与修复流程图;
图3为本发明实施例中的一致性检查与修复流程图;
图4为本发明实施例中的唯一性检查与修复流程图;
图5为本发明实施例中的动态滑动窗口示意图;
图6为本发明实施例中的多源异构数据清洗装置模块示意图;
具体实施方式
为使本发明实施例的技术方案完整、清晰地传达给本领域的技术人员,下面将结合本发明实施例中的附图,对本发明的具体实施例作进一步详细描述。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。相反,提供这些实施例是为了帮助更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
如图1所示,本发明实施例提供的一种多源异构数据清洗方法,该方法包括以下步骤:
步骤1:获取多源异构数据,将相同属性的数据转换为统一的数据格式,得到由若干元组构成的数据集合,其中一条元组由一组所有属性的数据构成;
该步骤中,数据来源为校园各业务***的数据库,包括学生基本信息数据、成绩数据、图书馆访问数据及校园卡消费数据等多源异构数据。首先使用kettle(ETL工具)创建抽取任务,设置好源数据库和目标数据库的连接配置信息,然后创建转换任务将所有表中相同属性的字段转换成统一的数据格式,最后将抽取任务和转换任务添加到作业并执行,得到初始数据集合。
步骤2:对步骤1获取的初始数据,构建不同属性之间存在的条件函数依赖,然后将条件函数依赖Σcfd和外部约束Σfc添加到规则集合Σ,规则集合Σ中每一条规则对应某条件函数依赖或某外部约束;
该步骤中,首先对所有数据表中存在关联关系的属性字段之间建立相应的条件函数依赖,如个人身份证号码可以决定年龄、出生日期等,然后添加到规则集合。其次,对于业务部门中可以人为确定的某些外部约束条件,如某学院在各省份的招生人数、男女比例等,也添加到规则集合。规则集合具体定义如下:
给定学生基本信息数据实例I:(学号,姓名,年龄,出生日期,身份证号,所在省份,所在城市,邮编),条件函数依赖集合外部约束集合Σfc=∑ψi,则规则集合Σ=Σcfd∪Σfc。对于条件函数依赖/>X、Y为数据表中的不同属性字段,其含义为对任意两个元组(t1,t2),如果t1[X]=t2[X],那么t1[Y]=t2[Y]。反之,如果t1[X]=t2[X],但是t1[Y]≠t2[Y],那么t1和t2元组在规则/>上存在一致性错误。
例如,对于一张学生基本信息表,首先可以建立的条件函数依赖如下:
其次,通过了解学校及计算机学院的招生信息,可以确定的外部约束条件如下:
ψ1:学校在杭州的招生人数不超过100人
ψ2:计算机学院的男女比例不低于3:1
最后,将条件函数依赖和外部约束条件合并得到所需规则集合。应当注意,上述所描述的条件函数依赖和外部约束条件等规则仅仅用于描述规则集合的建立,而不用于限定该规则集合。
步骤3:依次遍历步骤1处理后的数据中所有元组,判断当前元组是否存在缺失,若是则将当前元组添加到缺失元组集合TL,若否则添加到完整元组集合TC。然后使用步骤2的规则集合、完整元组集合TC和基于改进KNN的混合填充算法对缺失元组进行修复,完整性修复流程如图2所示;
该步骤中,具体包括完整性检查和完整性修复两个过程。
完整性检查:依次遍历数据中的所有元组,判断当前元组是否存在缺失,若是则将当前元组添加到缺失元组集合TL,若否则添加到完整元组集合TC,检测出所有包含缺失数据的元组。
完整性修复:待完整性检查之后,依次遍历缺失元组集合TL中的所有缺失元组,检查当前缺失元组的缺失项是否与规则集合Σ中某些规则(即条件函数依赖Σcfd和/或外部约束Σfc) 相匹配,若是则利用这些规则对当前缺失元组的缺失数据进行填充,反之则使用基于改进KNN 的混合填充算法对当前缺失元组的缺失数据进行填充。
步骤4:对步骤3处理后的数据,依次遍历所有元组并检查是否与步骤2规则集合中的所有规则相匹配,对存在一致性错误的元组,记录其违反的条件函数依赖和/或外部约束。然后根据规则修复顺序和目标元组对错误元组的错误数据进行修复,实现对数据一致性的检查与修复,一致性修复流程如图3所示;
该步骤中,具体包括一致性检查和一致性修复两个过程。
一致性检查:依次遍历数据中的所有元组,检查当前元组与步骤2规则集合Σ中的所有规则是否匹配,若是则继续检查下一个元组,若否则将当前元组违反的规则(条件函数依赖Σcfd和/或外部约束Σfc)添加到异常规则集合Σ';
一致性修复:具体包括确定规则修复顺序、定位异常元组、选择目标元组3个过程。
确定规则修复顺序,鉴于异常规则集合中不同条件函数依赖之间可能会包含相同的属性字段,这时就需要确定按照哪些规则顺序进行修复,否则可能会导致错误的修复。在具体的实施中,规则修复顺序的确定是通过构建规则序列图,然后对其进行拓扑排序,依次选择规则序列图中入度为0的节点(条件函数依赖)作为优先修复规则,添加到修复规则顺序集合Σrep,然后将该节点和与该节点相连接的边进行删除,直到图中没有剩余节点。其中,若规则序列图非空且不存在入度为0的节点,则在规则序列图中的所有条件函数依赖组合中选择一个修复代价总和最小的规则顺序作为修复规则集合;
定位异常元组,依次遍历修复规则集合Σrep中的所有规则,将违反当前规则的所有元组添加到异常元组集合Te;
选择目标元组,对于一致性修复而言,异常数据目标值的选取是一个关键问题。给定异常元组集合,选取不同的修复目标值,修复的结果大有不同,对应的修复代价也不相同。在具体的实施中,需要结合规则集合Σ中的外部约束条件Σfc,在异常元组集合Te中选择一个具有最小修复代价的元组作为目标元组来修复其它异常元组。
步骤5:对步骤4处理后的数据使用基于混合距离和动态窗口的改进SNM算法检查滑动窗口内第一条元组与窗口内其他元组之间的元组距离是否小于设定的距离阈值。若是则认为这两条元组数据上重复,并删除窗口内重复的元组;若否则认为第一条元组与其他元组满足唯一性条件,将滑动窗口内第一条元组移出以及窗口内最后一条元组的下一条元组移入。如此反复,直至完成所有元组的唯一性检查,唯一性修复流程如图4所示;
该步骤中,首先,对数据集合中所有元组选择一个或者一组数据,分别计算每一条元组的键值并将其作为元组的排序关键字。
其次,根据排序关键字对所有元组进行排序,将数据相似重复的元组在顺序上邻近。
然后,在排序后的元组上设置一个初始大小为N的滑动窗口(如图5所示),计算窗口内的第一条元组与窗口内其它的N-1条元组之间的元组距离,若存在某条元组与第一条元组之间的元组距离小于设定的距离阈值,则删除这条相似重复元组。
最后,移动一个滑动窗口步长,将滑动窗口内第一条元组移出以及最后一条元组的下一条元组移入,如此循环,直至数据中的所有元组检查完毕。
在滑动窗口的过程中,计算滑动窗口内首尾元组之间的元组距离与窗口内元组个数的比值并作为窗口平均密度,若窗口平均密度较高于设定的密度阈值,则认为滑动窗口内元组间的相似度较低,可适当减小滑动窗口的大小以减少比较次数,提高修复效率。相反,若窗口平均密度较低于设定的密度阈值,则认为滑动窗口内元组间的相似度较高,可适当增大滑动窗口的大小以扩大匹配范围,提高修复精确性。
为进一步减小所有元组之间的匹配误差,还可以重新选择新的排序关键字再次进行排序、检查和修复,通过多重滑动窗口检测机制尽可能删除掉数据上相似重复的元组,提高唯一性检查与修复的精确性。
步骤6:重新检查步骤5处理后数据中的所有元组与规则集合中的所有规则是否匹配,若是则所有元组满足一致性条件,完成数据的清洗,若否则返回步骤4-2继续执行。
如图6所示,在本发明的实施例中,还提供了一种多源异构数据清洗装置,该装置包括:数据采集及预处理模块、规则集合构建模块、完整性检查与修复模块、一致性检查与修复模块、唯一性检查与修复模块和一致性二次检查模块。
数据采集及预处理模块,用于获取多源异构数据并将相同属性的数据转换为统一格式的数据;
规则集合构建模块,用于对来自数据采集及预处理模块的数据构建包含条件函数依赖和外部约束的规则集合;
完整性检查与修复模块,用于检查数据采集及预处理模块获取的数据是否存在缺失,然后将数据划分为缺失元组集合和完整元组集合;依次检查缺失元组集合中所有缺失元组的缺失项是否与规则集合中某些规则相匹配,若是则利用这些规则对当前缺失元组的缺失数据进行填充,反之则使用基于改进KNN的混合填充算法对当前缺失元组的缺失数据进行填充;
一致性检查与修复模块,用于检查完整性检查与修复模块处理后的数据是否违反规则集合中的规则,若是则确定修复规则,将违反修复规则的所有元组作为异常元组;在所有异常元组中选择具有最小修复代价的元组作为目标元组,利用目标元组修复其它异常元组;
唯一性检查与修复模块,用于对一致性检查与修复模块处理后的数据使用基于混合距离和动态窗口的改进SNM算法检查并删除数据上重复的元组;
一致性二次检查模块,用于检查唯一性检查与修复模块处理后的数据是否满足一致性条件,若是则完成数据的清洗,若否则返回一致性检查与修复模块重新执行。
以上仅为本发明的具体实施方式,并不用于限制本申请。对本领域的技术人员来说,本申请可以结合实际的应用场景进行更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (8)
1.一种多源异构数据清洗方法,其特征在于该方法包括以下步骤:
步骤1:获取多源异构数据,将相同属性的数据转换为统一的数据格式,得到由若干元组构成的数据集合;
步骤2:对步骤1处理后的数据构建不同属性之间存在的条件函数依赖,然后将条件函数依赖Σcfd和外部约束Σfc添加到规则集合Σ,规则集合Σ中每一条规则对应某条件函数依赖或某外部约束;
步骤3:对步骤1处理后的数据中所有元组进行完整性检查和完整性修复;
3-1完整性检查
依次遍历步骤1处理后的数据中所有元组,判断当前元组是否存在缺失,若是则将当前元组添加到缺失元组集合TL,若否则添加到完整元组集合TC;
3-2完整性修复
依次遍历缺失元组集合TL中的所有缺失元组,检查当前缺失元组的缺失项是否与规则集合Σ中某些规则相匹配,若是则利用这些规则对当前缺失元组的缺失数据进行填充,反之则使用基于改进KNN的混合填充算法对当前缺失元组的缺失数据进行填充;
所述基于改进KNN的混合填充算法,具体步骤如下:
1)将当前缺失元组的非缺失数据列划分为数值型、二元型、序数型、分类型和文本型5种类型的缺失元组;
2)将完整元组集合TC按照当前缺失元组中每种类型元组对应的相同数据列也划分为5种类型的完整元组集合;
3)分别计算每种类型缺失元组和完整元组之间的子类距离;
4)计算缺失元组t1与完整元组t2之间的元组距离;
5)将缺失元组和完整元组之间的元组距离递增排序;
6)选择元组距离最小的前k个完整元组作为目标元组集合;
7)选择目标元组集合与缺失元组缺失项对应列中出现频次最多的数据作为缺失元组的缺失数据的填充值;
步骤4:对步骤3处理后的数据中所有元组进行一致性检查和一致性修复;
4-1一致性检查:
依次遍历所有元组,检查当前元组与步骤2规则集合中的所有规则是否匹配,若是则继续检查下一个元组,若否则将当前元组违反的规则添加到异常规则集合Σ';
4-2一致性修复;
步骤5:对步骤4处理后的数据中所有元组进行唯一性检查和修复;
步骤6:对步骤5处理后的数据重新检查所有元组与规则集合中的所有规则是否匹配,若是则所有元组满足一致性条件,完成数据的清洗,若否则返回步骤4-2继续执行。
2.如权利要求1所述的一种多源异构数据清洗方法,其特征在于步骤3-2完整性修复中第3)步具体是:
对于数值型子类元组,使用标准化欧式距离公式(1)计算缺失子类元组和完整子类元组之间的子类距离;
其中,n表示子类元组中数值数据的总个数,xLi表示缺失子类元组第i个数据,xCi表示完整子类元组第i个数据,si表示子类元组第i列数据所有取值的标准差;
对于二元型子类元组,使用公式(2)计算缺失子类元组和完整子类元组之间的子类距离;
其中,若将二元数据的两种取值分别视为0和1,则p表示缺失子类元组和完整子类元组中对应数据均为1的个数,q表示缺失子类元组数据为0且完整子类元组对应数据为1的个数,r表示缺失子类元组数据为1且完整子类元组对应数据为0的个数,s表示缺失子类元组和完整子类元组中对应数据均为0的个数;
对于序数型子类元组,首先使用公式(3)将元组中的序数数据转换为数值数据,然后使用数值型元组距离公式(4)计算缺失子类元组和完整子类元组之间的子类距离;
D(L,C)ordi=D(L,C)num 公式(4)
其中,若将子类元组的第i列数据的所有取值按顺序视为0到N的序列,则Ni表示第i列数据的序号总数N,Mi表示数据的取值在序列中的序号,Xi表示转换后的数值数据;
对于分类型子类元组,使用公式(5)计算缺失子类元组和完整子类元组之间的子类距离;
其中,由于缺失子类元组和完整子类元组内数据个数相同,则T表示缺失子类元组或完整子类元组中数据的总个数,E表示缺失子类元组和完整子类元组中对应数据相同的个数;
对于文本型子类元组,使用编辑距离公式(6)计算字符串数据之间的距离,然后使用公式(7)计算缺失子类元组和完整子类元组之间的子类距离并进行归一化处理;
其中,Di(L,C)text表示缺失子类元组和完整子类元组中第i个字符串数据之间的编辑距离,Lj、Ck分别表示缺失子类元组、完整子类元组中第i个字符串数据的前j、k个字符数据,0≤j≤Ui,0≤k≤Vi,Min表示最小值函数;由于缺失子类元组和完整子类元组内数据个数相同,则m表示缺失子类元组或完整子类元组中字符串数据的总个数,Ui、Vi分别表示缺失子类元组和完整子类元组中第i个字符串数据的总长度,Max表示最大值函数。
4.如权利要求3所述的一种多源异构数据清洗方法,其特征在于步骤3-2完整性修复中第6)步中所述k值是通过以下步骤获得:
6-1)将所有完整元组划分为测试元组集合和训练元组集合;
6-2)将训练元组集合划分为n个大小相同的子元组集合;
6-3)依次将每个子元组集合作为完整元组集合TC,分别使用1到100作为训练k值来修复当前缺失元组;
6-4)获取每个子元组集合中修复正确率最高的k值;
6-5)将这n个k值的平均值作为测试元组集合的修复k值。
5.如权利要求1所述的一种多源异构数据清洗方法,其特征在于步骤4中所述一致性修复主要包括确定规则修复顺序、定位异常元组、选择目标元组;具体是:
4-2-1确定规则修复顺序
1)将异常规则集合Σ'中的条件函数依赖作为节点V,节点间的依赖关系作为边E,构建规则序列图G(V,E),其中V=Σ';对于任意两个条件函数依赖如果则/>之间存在一条由/>指向/>的边,即/>存在依赖关系,其中L和R分别表示条件函数依赖的左部和右部;
2)依次选择规则序列图中入度为0的节点作为优先修复规则,添加到修复规则集合Σrep,然后将该节点和与该节点相连接的边进行删除,直到规则序列图G(V,E)中没有剩余节点;若规则序列图非空且不存在入度为0的节点,则在规则序列图中的所有条件函数依赖组合中选择一个修复代价总和最小的组合作为修复规则集合Σrep;
4-2-2定位异常元组
依次遍历修复规则集合Σrep中的所有规则,将违反当前规则的所有元组添加到异常元组集合Te;
4-2-3选择目标元组
结合规则集合Σ中的外部约束规则Σfc,在异常元组集合Te中选择具有最小修复代价的元组作为目标元组,利用目标元组修复其它异常元组。
6.如权利要求1所述的一种多源异构数据清洗方法,其特征在于步骤5具体是对步骤4处理后的数据使用基于混合距离和动态窗口的改进SNM算法,检查滑动窗口内第一条元组与窗口内其他元组之间的元组距离是否小于设定的距离阈值;若是则认为这两条元组数据上相似重复,并删除窗口内重复的元组,若否则认为第一条元组与其他元组满足唯一性条件;将滑动窗口内第一条元组移出以及窗口内最后一条元组的下一条元组移入,如此反复,直至所有元组完成唯一性检查,实现对数据唯一性的检查与修复。
7.如权利要求6所述的一种多源异构数据清洗方法,其特征在于所述基于混合距离和动态窗口的改进SNM算法,具体步骤如下:
5-1)对所有元组选择一个或者多个数据,计算其对应的键值并作为排序关键字;
5-2)根据排序关键字对所有元组进行排序;
5-3)在排序后的元组上设置一个初始大小为N且步长为1的滑动窗口,计算滑动窗口内第一条元组与窗口内其它元组之间的元组距离,若存在至少一个元组距离小于距离阈值则删除滑动窗口内重复的元组,反之则将滑动窗口移动一个步长;
5-4)计算滑动窗口内首尾元组之间的元组距离与滑动窗口内元组个数的比值,并将其作为窗口平均密度,若窗口平均密度小于密度阈值则增大滑动窗口的大小,若窗口平均密度等于密度阈值则保持滑动窗口大小不变,若窗口平均密度大于密度阈值则减小滑动窗口的大小,继续滑动直至所有元组检查完成。
8.一种实现如权利要求1-7任一项所述方法的多源异构数据清洗装置,其特征在于该装置包含以下模块:
数据采集及预处理模块,用于获取多源异构数据并将相同属性的数据转换为统一格式的数据;
规则集合构建模块,用于对来自数据采集及预处理模块的数据构建包含条件函数依赖和外部约束的规则集合;
完整性检查与修复模块,用于检查数据采集及预处理模块获取的数据是否存在缺失,然后将数据划分为缺失元组集合和完整元组集合;依次检查缺失元组集合中所有缺失元组的缺失项是否与规则集合中的某些规则相匹配,若是则利用这些规则对当前缺失元组的缺失数据进行填充,反之则使用基于改进KNN的混合填充算法对当前缺失元组的缺失数据进行填充;
一致性检查与修复模块,用于检查完整性检查与修复模块处理后的数据是否违反规则集合中的规则,若是则确定修复规则,将违反修复规则的所有元组作为异常元组;在所有异常元组中选择具有最小修复代价的元组作为目标元组,利用目标元组修复其它异常元组;
唯一性检查与修复模块,用于对一致性检查与修复模块处理后的数据使用基于混合距离和动态窗口的改进SNM算法检查并删除数据上重复的元组;
一致性二次检查模块,用于检查唯一性检查与修复模块处理后的数据是否满足一致性条件,若是则完成数据的清洗,若否则返回一致性检查与修复模块重新执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111577423.6A CN114281809B (zh) | 2021-12-22 | 2021-12-22 | 一种多源异构数据清洗方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111577423.6A CN114281809B (zh) | 2021-12-22 | 2021-12-22 | 一种多源异构数据清洗方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114281809A CN114281809A (zh) | 2022-04-05 |
CN114281809B true CN114281809B (zh) | 2023-03-28 |
Family
ID=80873920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111577423.6A Active CN114281809B (zh) | 2021-12-22 | 2021-12-22 | 一种多源异构数据清洗方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114281809B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111625525B (zh) * | 2020-05-26 | 2023-05-26 | 哈尔滨工业大学 | 一种环境数据修复/填充方法及*** |
CN115543977B (zh) * | 2022-09-29 | 2024-07-19 | 河北雄安睿天科技有限公司 | 一种供水行业数据清洗方法 |
CN115713270B (zh) * | 2022-11-28 | 2023-07-21 | 之江实验室 | 一种同行互评异常评分检测及修正方法和装置 |
CN116578557B (zh) * | 2023-03-03 | 2024-04-02 | 齐鲁工业大学(山东省科学院) | 面向数据中台的缺失数据填充方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7519952B2 (en) * | 2003-07-28 | 2009-04-14 | International Business Machines Corporation | Detecting an integrity constraint violation in a database by analyzing database schema, application and mapping and inserting a check into the database and application |
US8041668B2 (en) * | 2007-06-29 | 2011-10-18 | Alcatel Lucent | Methods and apparatus for capturing and detecting inconsistencies in relational data using conditional functional dependencies |
CN108446294A (zh) * | 2018-01-22 | 2018-08-24 | 东华大学 | 一种面向脏数据的清洗规则挖掘*** |
CN109885561A (zh) * | 2019-01-03 | 2019-06-14 | 中国人民解放军国防科技大学 | 一种基于最大依赖集和属性相关性不一致数据清洗方法 |
-
2021
- 2021-12-22 CN CN202111577423.6A patent/CN114281809B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114281809A (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114281809B (zh) | 一种多源异构数据清洗方法及装置 | |
Zhang et al. | Community detection in networks with node features | |
CN107292330B (zh) | 一种基于监督学习和半监督学习双重信息的迭代式标签噪声识别算法 | |
US7814111B2 (en) | Detection of patterns in data records | |
US7711736B2 (en) | Detection of attributes in unstructured data | |
US11055307B2 (en) | Automatic modeling method and classifier for OLAP data model | |
CN106294762B (zh) | 一种基于学习的实体识别方法 | |
WO2021051864A1 (zh) | 词典扩充方法及装置、电子设备、存储介质 | |
CN111338950A (zh) | 一种基于谱聚类的软件缺陷特征选择方法 | |
CN111309777A (zh) | 一种基于互斥表达的改进关联规则报表数据挖掘方法 | |
CN110633371A (zh) | 一种日志分类方法及*** | |
CN112364352A (zh) | 可解释性的软件漏洞检测与推荐方法及*** | |
WO2021114483A1 (zh) | 一种建筑信息模型中设计变更自动识别方法 | |
CN113434418A (zh) | 知识驱动的软件缺陷检测与分析方法及*** | |
Uludağ et al. | On the financial situation analysis with KNN and naive Bayes classification algorithms | |
CN111753067A (zh) | 一种技术交底文本创新性评估方法、装置和设备 | |
Wang et al. | Approximate truth discovery via problem scale reduction | |
Wang et al. | Sound and complete causal identification with latent variables given local background knowledge | |
Revindasari et al. | Traceability between business process and software component using Probabilistic Latent Semantic Analysis | |
CN110502669A (zh) | 基于n边dfs子图的轻量级无监督图表示学习方法及装置 | |
Hadžić et al. | Different similarity measures to identify duplicate records in relational databases | |
Ali et al. | Duplicates detection within incomplete data sets using blocking and dynamic sorting key methods | |
CN109977269B (zh) | 一种针对xml文件的数据自适应融合方法 | |
Kokhov | Two approaches to determining similarity of two digraphs | |
CN110704522B (zh) | 一种基于语义分析的概念数据模型自动转换方法 |
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 |