近年来,信息技术迅猛发展,尤其是以互联网、物联网、信息获取、社交网络等为代表的技术日新月异,促使手机、平板电脑、pc 等各式各样的信息传感器随处可见,虚拟网络快速发展,现实世界快速虚拟化,数据的来源及其数量正以前所未有的速度增长。
中国的数据规模将超过美国位居世界第一。中国成为数据大国并不奇怪,因为中国是人口大国、制造业大国、互联网大国、物联网大国,这都是最活跃的数据生产主体,未来几年,中国成为数据大国也是逻辑上的必然结果。
数据预处理主要包括数据清洗(Data Cleaning)、数据集成(Data Integration)、数据转换(Data Transformation)和数据消减(Data Reduction)。
现实世界的数据常常是不完全的、有异常数据的、不一致的。数据清洗过程包括遗漏数据处理,异常数据处理,以及不一致数据处理。
假设在分析一个商场销售数据时,发现有多个记录中的属性值为空,如顾客的收入属性,则对于为空的属性值,可以采用以下方法进行遗漏数据处理。
1)忽略该条记录
若一条记录中有属性值被遗漏了,则将此条记录排除,尤其是没有类别属性值而又要进行分类数据挖掘时。
当然,这种方法并不很有效,尤其是在每个属性的遗漏值的记录比例相差较大时。
2)手工填补遗漏值
一般这种方法比较耗时,而且对于存在许多遗漏情况的大规模数据集而言,显然可行性较差。
3)利用默认值填补遗漏值
对一个属性的所有遗漏的值均利用一个事先确定好的值来填补,如都用“OK”来填补。但当一个属性的遗漏值较多时,若采用这种方法,就可能误导挖掘进程。
因此这种方法虽然简单,但并不推荐使用,或使用时需要仔细分析填补后的情况,以尽量避免对最终挖掘结果产生较大误差。
4)利用均值填补遗漏值
计算一个属性值的平均值,并用此值填补该属性所有遗漏的值。例如,若顾客的平均收入为 10000 元,则用此值填补“顾客收入”属性中所有被遗漏的值。
5)利用同类别均值填补遗漏值
这种方法尤其适合在进行分类挖掘时使用。
例如,若要对商场顾客按信用风险进行分类挖掘时,就可以用在同一信用风险类别(如良好)下的“顾客收入”属性的平均值,来填补所有在同一信用风险类别下“顾客收入”属性的遗漏值。
6)利用最可能的值填补遗漏值
可以利用回归分析、贝叶斯计算公式或决策树推断出该条记录特定属性的最大可能的取值。
例如,利用数据集中其他顾客的属性值,可以构造一个决策树来预测“顾客收入”属性的遗漏值。
最后一种方法是一种较常用的方法,与其他方法相比,它最大程度地利用了当前数据所包含的信息来帮助预测所遗漏的数据。
数据处理常常涉及数据集成操作,即将来自多个数据源的数据,如数据库、数据立方、普通文件等,结合在一起并形成一个统一数据集合,以便为数据处理工作的顺利完成提供完整的数据基础。
在数据集成过程中,需要考虑解决以下几个问题。
模式集成问题就是如何使来自多个数据源的现实世界的实体相互匹配,这其中就涉及实体识别问题。
例如,如何确定一个数据库中的“custom_id”与另一个数据库中的“custome_number”是否表示同一实体。
数据库与数据仓库通常包含元数据,这些元数据可以帮助避免在模式集成时发生错误。
冗余问题是数据集成中经常发生的另一个问题。若一个属性可以从其他属性中推演出来,那这个属性就是冗余属性。
例如,一个顾客数据表中的平均月收入属性就是冗余属性,显然它可以根据月收入属性计算出来,这就是俩个冗余的数据。此外,属性命名的不一致也会导致集成后的数据集出现数据冗余问题。
在现实世界实体中,来自不同数据源的属性值或许不同。产生这种问题的原因可能是表示、比例尺度,或编码的差异等。
例如,重量属性在一个系统中采用公制,而在另一个系统中却采用英制;价格属性在不同地点采用不同的货币单位。这些语义的差异为数据集成带来许多问题。
数据转换就是将数据进行转换或归并,从而构成一个适合数据处理的描述形式。数据转换包含以下处理内容。
1)平滑处理
帮助除去数据中不要的数据,主要技术方法有聚类方法和回归方法。
2)合计处理
对数据进行总结或合计操作。例如,每天的数据经过合计操作可以获得每月或每年的总额。这一操作常用于构造数据立方或对数据进行多粒度的分析。
3)数据泛化处理
用更抽象(更高层次)的概念来取代低层次或数据层的数据对象。
例如,街道属性可以泛化到更高层次的概念,如城市、国家,数值型的属性,如年龄属性,可以映射到更高层次的概念,如年轻、中年和老年。
4)规格化处理
将有关属性数据按比例投射到特定的小范围之中。例如,将工资收入属性值映射到 0 到 1 范围内。
5)属性构造处理
根据已有属性集构造新的属性,以帮助数据处理过程。
例如,根据宽、高属性,可以构造一个新属性(面积)。构造合适的属性能够减少学习构造决策树时出现的碎块情况。此外,属性结合可以帮助发现所遗漏的属性间的相互联系,而这在数据挖掘过程中是十分重要的。
我们都知道对大规模数据进行复杂的数据分析通常需要耗费大量的时间,这时就需要我们的数据消减技术了。
数据消减技术的主要目的就是从原有巨大数据集中获得一个精简的数据集,并使这一精简数据集保持原有数据集的完整性。这样在精简数据集上进行数据挖掘就会提高效率,并且能够保证挖掘出来的结果与使用原有数据集所获得的结果基本相同。
数据消减的主要策略有以下几种。
在 3 个维度上对某公司原始销售数据进行合计所获得的数据立方。它从时间(年代)、公司分支,以及商品类型 3 个角度(维)描述了相应(时空)的销售额(对应一个小立方块)。
每个属性都可对应一个概念层次树,以帮助进行多抽象层次的数据分析。例如,一个分支属性的(概念)层次树,可以提升到更高一层的区域概念,这样就可以将多个同一区域的分支合并到一起。
在最低层次所建立的数据立方称为基立方,而最高抽象层次对应的数据立方称为顶立方。
顶立方代表整个公司三年中,所有分支、所有类型商品的销售总额。显然每一层次的数据立方都是对低一层数据的进一步抽象,因此它也是一种有效的数据消减。
数据集可能包含成百上千的属性,而这些属性中的许多属性是与挖掘任务无关的或冗余的。
例如,挖掘顾客是否会在商场购买电视机的分类规则时,顾客的电话号码很可能与挖掘任务无关。但如果利用人类专家来帮助挑选有用的属性,则困难又费时费力,特别是当数据内涵并不十分清楚的时候。无论是漏掉相关属性,还是选择了无关属性参加数据挖掘工作,都将严重影响数据挖掘最终结果的正确性和有效性。此外,多余或无关的属性也将影响数据挖掘的挖掘效率。
维数消减就是通过消除多余和无关的属性而有效消减数据集的规模的。
一般利用统计重要性的测试来帮助选择“最优”或“最差”属性。这里假设各属性之间都是相互独立的。构造属性子集的基本启发式搜索方法有以下几种。
逐步添加方法
该方法从一个空属性集(作为属性子集初始值)幵始,每次从原有属性集合中选择一个当前最优的属性添加到当前属性子集中。直到无法选择出最优属性或满足一定阈值约束为止。
逐步消减方法
该方法从一个全属性集(作为属性子集初始值)开始,每次从当前属性子集中选择一个当前最差的属性并将其从当前属性子集中消去。直到无法选择出最差属性或满足一定阈值约束为止。
消减与添加结合方法
该方法将逐步添加方法与逐步消减方法结合在一起,每次从当前属性子集中选择一个当前最差的属性并将其从当前属性子集中消去,以及从原有属性集合中选择一个当前最优的属性添加到当前属性子集中。直到无法选择出最优属性且无法选择出最差属性,或满足一定阈值约束为止。
决策树归纳方法
通常用于分类的决策树算法也可以用于构造属性子集。具体方法就是,利用决策树的归纳方法对初始数据进行分类归纳学习,获得一个初始决策树,没有出现在这个决策树上的属性均认为是无关属性,将这些属性从初始属性集合中删除掉,就可以获得一个较优的属性子集。
数据压缩就是利用数据编码或数据转换将原来的数据集合压缩为一个较小规模的数据集合。
利用一个模型来帮助获得代表数据,因此只需要存储代表数据即可(当然异常数据也需要存储)。
例如分层采样方法
该方法首先将大数据集划分为若干不相交的层,然后再分别从这些层中随机抽取数据对象,从而获得具有代表性的采样数据子集。
例如,可以对一个顾客数据集按照年龄进行分层,然后再在每个年龄组中进行随机选择,从而确保最终获得的分层采样数据子集中的年龄分布具有代表性。