大数据平台数据采集层采集到的原始数据庞大杂乱,即所谓“脏”数据。“脏”数据存在的主要问题:①不完整,属性值缺失,例如“血压=‘’”;②含噪声,即属性值存在错误或偏离期望的异常值,例如“体重=-20kg”;③不一致,即属性值之间存在矛盾或属性之间存在逻辑错误,例如“年龄=37”而“生日=06/12/2021”。这些“脏”数据如果不进行处理,会严重影响数据分析结果的可用性。例如较大的异常值会使数据整体的平均值出现明显偏差,缺失值过多会导致一些分析算法陷入局部最优化,逻辑错误会导致数据分析结果缺乏可解释性。因此必须通过预处理提高数据质量,保证数据的正确性、完整性、一致性和可靠性。
大数据预处理的主要步骤包括数据清洗、数据集成和数据转换。数据清洗主要消除错误数据和数据的不一致性,数据集成将来自多个数据源的数据根据分析目标集成为数据立方体或文件,数据转换是为满足数据源和数据分析方法对数据格式的不同要求,解决数据的规范化和一致性。
数据清洗的任务包括填充缺失值、识别异常值、平滑噪声数据、纠正数据不一致和清除数据集成过程中造成的重复。
数据缺失的情况很常见,可能来自设备故障,如服务器宕机、网络抖动断线、传感器掉线等;也可能来自数据不一致被删除,如登记身份证号后,系统自动稽核发现年龄填写错误而自动删除;还可能由于数据没有被录入,如纸质材料灭失、人为操作失误等。在数据分析挖掘过程中,缺失值会造成有价值信息的丢失,增加数据分析结果的不确定性,降低数据分析结果的可靠性和可用性,因此有必要对缺失值进行处理。缺失值处理通常有以下几种方法:
数据集中如果某个记录缺失多个属性,或某个属性缺失比例过大,可以直接删除该记录或属性。这是最简单直接的处理方法,但如果缺失值比例很大,并且不是集中在少数记录或属性上,而是呈随机分布,该方法可能会丢失潜在的有用信息,导致数据分析结果出现偏差,因此该方法适用于缺失值比例很小的数据集。
当数据集中的缺失值达到一定比例时,直接删除会大量减少数据集中的记录,造成资源浪费,并且可能丢失潜在的有用信息,因此需要采用一些方法来填补缺失值。
(1)人工填写缺失值:
如果缺失值是人为因素造成的,可以考虑人工填补。因为用户最了解原始数据,使用该方法填充的数据真实可靠,偏离度最小。缺点是当待填充数据规模大、缺失值较多时,该方法耗时较长。另外当事人可能不愿意承认失误并且返工,或者数据不易采集,例如在医疗数据库中患者的临床检验结果并非都能在特定时间内轻易得到,因此该方法实现起来比较困难。
(2)均值填补:
如果缺失值是数值型属性,如血压、体重等,可以用该属性的平均值填补。如果缺失值是非数值型属性,如药物疗效等,则根据统计学中的众数原理,用该属性的众数,即出现频率最高的值填补。
(3)同类均值填补:
如果包含缺失属性的样本属于某一类别,则用该类别所有样本该属性的均值填补。例如一个数据集按性别分为男性和女性两类,某女性样本中的身高属性缺失,则可以用其他女性样本的身高平均值填补缺失值。
(4)多重填补:
多重填补以贝叶斯估计为基础,主要思想是认为待填补值是随机分布的,并且这些信息可以从已观测到的数据得到。为每个缺失值产生一套可能的填补值,分别使用这些值填补缺失值,获得若干填补数据集。然后对每个填补数据集都用针对完整数据集的统计方法进行统计分析,最后综合各填补数据集的分析结果选出最佳填补值。
(5)使用最可能的值填充:
采用回归、贝叶斯、决策树、随机森林等机器学习方法构建模型预测缺失值。通过这类方法得到的估计值往往更加接近真实值,但构造和评估模型的过程比较复杂,需要对模型进行评价。
噪声是被测量数据的随机误差或方差,包括错误的数据或偏离期望的数据,又称异常值、奇异值或孤立点。噪声数据的常用处理方法包括分箱、回归、聚类和业务逻辑检测等。
分箱法的思想是认为有序序列中的每个数据与它的“近邻”数据应该是相似的,因此可以用近邻(“箱”或“桶”)替代表示。箱的深度表示箱子中的数据个数,箱的宽度表示每个箱子的取值区间。该方法可以局部平滑数据,也能在一定程度上保持数据自身特性。
例如要将一组数值{8,4,28,15,21,24,21,25,34}进行分箱平滑。首先将数据按升序排序,然后进行等深分箱,得到三个箱{4,8,15},{21,21,24},{25,28,34}。使用箱均值进行平滑时,用箱均值替代箱中的每一个值。使用箱边界平滑时,则使用箱中的最大值和最小值作为箱边界,箱中的值被最近的边界值替代。使用箱中位数平滑时则用箱中位数替代箱中的每一个值,如图2-8所示。
回归是用一个函数拟合数据分布,如果一组数值经过排序后与某种曲线拟合度很好,那么离该曲线位置较远的点就可以判定为噪声,可以直接删除或修改为与回归曲线更接近的合理值。
聚类是将相似的样本组织成“类”或“簇”,簇内样本很相似而簇间样本差异很大,落在簇外的样本被视为离群点。用该方法检测出噪声点以后,应结合业务场景进行识别,如果确为无意义的异常点,则直接删除。
图2-8 分箱原理
这是一种计算机和人工检查相结合的方法,指利用业务人员的业务知识和实际经验通过人工统计制定筛选规则,再由计算机根据规则自动筛选出不符合规则的噪声数据。
数据集成是将来自多个数据源的数据存放在一个一致的数据存储对象中的过程。数据集成需要解决以下问题:
实体识别是指寻找匹配来自多个数据源的等价实体。例如,“性别”这个属性在一个数据库中用字符“男”和“女”表示,而另一个数据库用数字“0”和“1”表示,这属于异名同义。而不同数据源的相同属性名并不意味着相同的数据结构或含义,即同名异义。例如“苹果”既可以代表手机也可以代表水果。解决实体识别的最佳方法是统一设计元数据。每个属性的元数据包括属性名、现实含义、数据类型、取值范围,以及处理零或空白时的空值规则,不同数据源如果有统一的元数据,不仅可以有效避免模式集成的错误,还能在变换数据时起到一定作用。
同一实体由于表达方式、尺度标准或编码的不同导致元数据的巨大差异。例如,“身高”在一个系统中以“米”作为度量单位,而在另一个系统中以“厘米”作为度量单位。又如大学的课程评分系统中,有的学校采用A~F评分方法,有的学校则采用数值1~10评分方法,因此对两所学校进行数据库合并时需要将两个系统的评分方法做统一处理。
当对多个数据库集成时,常会出现数据冗余现象。例如一个人的年龄可以通过出生年份计算出来,那么“年龄”这个属性就是冗余的。或者对于同一实体,不同数据库有其相对应的属性,则集成时也会造成数据冗余。分析冗余有很多方法,可以对数据进行可视化处理,将数据点绘制成图表后,属性间的关联关系容易直接观察到。还可以通过相关性分析方法进行检测。对于标称属性可以使用卡方检验;对于数值属性,可以使用协方差或相关系数来衡量属性之间的密切程度。通过相关性分析可删除冗余数据,以达到精简数据集、降低计算复杂度的目的。
数据集成方法主要分为以下几种:
模式集成是最早采用的数据集成方法,用户向集成系统提交请求时,能够将请求转换成对各个数据源的请求操作,使得用户可以在集成系统上完成对各数据源的访问。模式集成最常见的两种方法是中间件集成方法和联邦数据库。联邦数据库系统由半自治数据库系统构成,相互之间分享数据,联盟各数据源之间相互提供访问接口,同时联盟数据库系统可以是集中数据库系统或分布式数据库系统或其他联邦式系统。在这种模式下又分为紧耦合和松耦合两种情况,紧耦合提供统一的访问模式,一般是静态的,在增加数据源上比较困难;松耦合则不提供统一的接口,但可以通过统一的语言访问数据源,核心是必须解决所有数据源语义上的问题。中间件模式通过统一的全局数据模型来访问异构的数据库、Web资源等。中间件位于异构数据源系统(数据层)和应用程序(应用层)之间,向下协调各数据源系统,向上为访问集成数据的应用提供统一数据模式和数据访问的通用接口。各数据源的应用仍然完成各自的任务,中间件系统则主要集中为异构数据源提供一个高层次检索服务。联邦数据库系统主要面向多个数据库系统的集成,其中数据源有可能要映射到每一个数据模式,当集成的系统很大时,会给实际开发带来巨大困难。
数据复制方法通过将数据复制到其他相关数据源上,使数据的访问更为便捷、高效。其中最常见的是数据仓库方法。数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的和不可修改的数据集合。其中数据被归类为广义的、功能上独立的、没有重叠的主题。
综合性集成方法是将模式集成方法和数据复制方法结合起来,对于相对简单的请求,通过数据复制方法在单一数据源上完成;对于相对复杂的请求,则通过模式集成的方法完成。这样可以兼顾两者的优点,提高数据访问效率。
数据转换主要对数据进行某种形式的变换,使数据保持一致性或符合处理技术的要求。数据转换方法主要包含数据平滑、数据聚集、数据泛化和数据规范化。其中数据平滑是指消除数据集合中的噪声数据,即数据清洗中的噪声平滑技术。数据聚集是指对数据进行汇总或聚集,即数据集成。本节主要介绍数据泛化和数据规范化。
数据泛化指使用概念分层,即用高层概念(例如青年、中年、老年)替换低层概念(例如年龄的数值范围),主要用于标称数据的转换。通常情况下,分类属性的概念分层往往涉及一组属性。可以通过专家或用户对属性进行偏序或全序设定,从而对属性进行概念分层。使用概念分层变换数据使得较高层的知识模式特点突出,容易被发现。
对属性项的度量单位和取值范围进行规范化处理,通过合适的函数变换将其映射到设定的数值区间。常见的数据规范化方法包括最小-最大规范化、 Z -分数规范化和小数定标规范化。
该方法对数据作线性变换。假设max A 和min A 分别表示属性 A 的最大值和最小值,将属性 A 的值域转换到区间[new_min A ,new_max A ]的最小-最大规范化计算公式如下(式2-1):
(式2-1)
该线性变化可保持数据与原始数据之间的联系。但当输入的值在 A 的原始数据值域之外时,最小-最大规范化处理后的值有“越界”危险。
该方法可以将较大的值转换成较小的值。计算公式如下(式2-2):
(式2-2)
其中 μ A 是属性 A 的均值, σ A 是属性 A 的标准差。
该方法通过移动数值的小数点位置来达到缩放效果的规范化处理,通过小数定标规范化后的值域转变为[-1,1]。计算公式如下(式2-3):
(式2-3)
公式中 j 是使属性 v 的最大绝对值小于1的最小整数。