数据集成
数据挖掘经常需要数据集成--合并来自多个数据存储的数据。小心仔细的集成有助于减少结果数据集的冗余和不一致。这有助于提高后续挖掘过程的准确性和速度。
数据语义的多样性和结构对数据集成提出了巨大的挑战。
数据集成将多个数据源中的数据合并,存放在一个一致的数据存储中,如存放在数据仓库中。这些数据源可能包括多个数据库、数据立方体或一般文件。
1.实体识别问题
来自多个信息源的等价实体如何才能匹配,这涉及到实体识别问题。例如,如何才能确定一个数据库中的customer_id与另一个数据库中的cust_number指的是相同的属性。
每个属性的元数据包括名字、含义、数据类型和属性的允许取值范围,以及处理空白、零或NULL值的空值规则。这样的元数据可以用来帮助避免模式集成的错误。元数据还可以用来帮助变化数据(例如par_type的数据编码在一个数据库中可以使“H”和“S”,而在另一个库中是1 和2)。
在集成期间,当一个数据库的属性与另一个数据库的属性匹配时,必须特别注意数据的结构。这旨在确保原系统中的函数依赖和参照约束与目标结构系统中的匹配。
2.冗余和相关分析
冗余是数据集成的另一个重要问题。一个属性(例如年收入)如果能由另一个或另一组属性导出,则这个属性可能是冗余的。属性或维命名的不一致也可能导致结果数据集中的冗余。
有些冗余可以被相关分析检测到。
给定两个属性,这种分析可以根据可用的数据,度量一个属性能在多大程度上蕴涵另一个。
对于标称数据(一般在有限的数据中取,而且只存在‘是’和‘否’两种不同的结果(一般用于分类)),我们使用(卡方)检验。
对于数值属性,我们使用相关系数(correlation coefficent)和协方差(covariance),它们都评估一个属性的值如何随另一个变化。
3.元组重复
除了检测属性间的冗余外,还应当在元组级检测重复(例如,对于给定的唯一数据实体,存在两个或多个相同的元组)。去规范化表(denormalized table)的使用(这样做通常是通过避免连接来改善性能-宽表)是数据冗余的另一个来源。不一致通常出现在各种不同的副本之间,由于不正确的输入,或者由于更新了部分相关数据,但是未更新所有的相关数据。
4.数据值冲突的检测与处理
数据集成还涉及数据值冲突的检测与处理。例如:对于同一实体,来自不同数据源的属性值可能不同。属性也可能在不同的抽象层,其中属性在一个系统中记录的抽象层可能比另一个系统中相同的属性低。