大数据的题对数据缺失现象需要预处理
处理数据缺失的机制
==================================================
在对缺失数据进行处理前,了解数据缺失的机制和形式是十分必要的。将数据集中不含缺失值的变量(属性)称为【完全变量】,数据集中含有缺失值的变量称为【不完全变量】,Little 和 Rubin定义了以下三种不同的数据缺失机制:
1)完全随机缺失(Missing Completely at Random,MCAR)。数据的缺失与不完全变量以及完全变量都是无关的。
2)随机缺失(Missing at Random,MAR)。数据的缺失仅仅依赖于完全变量。
3)非随机、不可忽略缺失(Not Missing at Random,NMAR,or nonignorable)。不完全变量中数据的缺失依赖于不完全变量本身,这种缺失是不可忽略的。
空值处理方法的分析比较
=========================================
处理不完备数据集的方法主要有以下三大类:
(一)删除元组
也就是将存在遗漏信息属性值的对象(元组,记录)删除,从而得到一个完备的信息表。这种方法简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与信息表中的数据量相比非常小的情况下是非常有效的,类标号(假设是分类任务)缺少时通常使用。然而,这种方法却有很大的局限性。它是以减少历史数据来换取信息的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些对象中的信息。在信息表中本来包含的对象很少的情况下,删除少量对象就足以严重影响到信息表信息的客观性和结果的正确性;当每个属性空值的百分比变化很大时,它的性能非常差。因此,当遗漏数据所占比例较大,特别当遗漏数据非随机分布时,这种方法可能导致数据发生偏离,从而引出错误的结论。
(二)数据补齐
这类方法是用一定的值去填充空值,从而使信息表完备化。通常基于【统计学原理】,根据决策表中其余对象取值的分布情况来对一个空值进行填充,譬如用其余属性的平均值来进行补充等。【数据挖掘】中常用的有以下几种补齐方法:
(1)人工填写(filling manually)
由于最了解数据的还是用户自己,因此这个方法产生数据偏离最小,可能是填充效果最好的一种。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。
(2)特殊值填充(Treating Missing Attribute values as Special values)
将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个有趣的概念,可能导致严重的数据偏离,一般不推荐使用。
(3)平均值填充(Mean/Mode Completer)
将信息表中的属性分为数值属性和非数值属性来分别进行处理。如果空值是数值型的,就根据该属性在其他所有对象的取值的【平均值】来填充该缺失的属性值;如果空值是非数值型的,就根据统计学中的【众数原理】,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。另外有一种与其相似的方法叫【条件平均值填充法】(Conditional Mean Completer)。在该方法中,缺失属性值的补齐同样是靠该属性在其他对象中的取值求平均得到,但【不同的是】用于求平均的值并不是从信息表所有对象中取,而是从【与该对象具有相同决策属性值的对象】中取得。这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推
测缺失值。
(4)热卡填充(Hot deck imputation,或就近补齐)
对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。
(5)K最近距离邻法(K-means clustering)
先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。
(6)使用所有可能的值填充(Assigning All Possible values of the Attribute)
这种方法是用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。另有一种方法,填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试,这样能够在一定程度上减小原方法的代价。
(7)组合完整化方法(Combinatorial Completer)
这种方法是用空缺属性值的所有可能的属性取值来试,并从最终属性的约简结果中选择最好的一个作为填补的属性值。这是以约简为目的的数据补齐方法,能够得到好的约简结果;但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。另一种称为条件组合完整化方法(Conditional Combinatorial Complete),填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试。条件组合完整化方法能够在一定程度上减小组合完整化方法的代价。在信息表包含不完整数据较多的情况下,可能的测试方案将巨增。
(8)回归(Regression)
基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关或预测变量高度相关时会导致有偏差的估计。
(9)期望值最大化方法(Expectation maximization,EM)
EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法[43]。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。
(10)多重填补(Multiple Imputation,MI)
多重填补方法分为三个步骤:①为每个空值产生一套可能的填补值,这些值反映了无响应模型的不确定性;每个值都被用来填补数据集中的缺失值,产生若干个完整数据**。②每个填补数据**都用针对完整数据集的统计方法进行统计分析。③对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。该方法的计算也很复杂。
(11)C4.5方法
通过寻找属性间的关系来对遗失值填充。它寻找之间具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。
===================================================================
就几种基于统计的方法而言,删除元组法和平均值法差于hot deck、EM和MI;回归是比较好的一种方法,但仍比不上hot deck和EM;EM缺少MI包含的不确定成分。值得注意的是,这些方法直接处理的是模型参数的估计而不是空缺值预测本身。它们合适于处理无监督学习的问题,而对有监督学习来说,情况就不尽相同了。譬如,你可以删除包含空值的对象用完整的数据集来进行训练,但预测时你却不能忽略包含空值的对象。另外,C4.5和使用所有可能的值填充方法也有较好的补齐效果,人工填写和特殊值填充则是一般不推荐使用的。
补齐处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实,在对不完备信息进行补齐处理的同时,我们或多或少地改变了原始的信息系统。而且,对空值不正确的填充往往将新的噪声引入数据中,使挖掘任务产生错误的结果。因此,在许多情况下,我们还是希望在保持原始信息不发生变化的前提下对信息系统进行处理。这就是第三种方法:
(三)不处理
直接在包含空值的数据上进行数据挖掘。这类方法包括贝叶斯网络和人工神经网络等。
贝叶斯网络是用来表示变量间连接概率的图形模式,它提供了一种自然的表示因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。当在任何一个对象中的缺失值数量很大时,存在指数爆炸的危险。
人工神经网络可以有效的对付空值,但人工神经网络在这方面的研究还有待进一步深入展开。人工神经网络方法在数据挖掘应用中的局限性,本文在2.1.5节中已经进行了阐述,这里就不再介绍了。
=============================================================
总结:
大多数数据挖掘系统都是在数据挖掘之前的数据预处理阶段采用第一、第二类方法来对空缺数据进行处理。并不存在一种处理空值的方法可以适合于任何问题。无论哪种方式填充,都无法避免主观因素对原系统的影响,并且在空值过多的情形下将系统完备化是不可行的。从理论上来说,贝叶斯考虑了一切,但是只有当数据集较小或满足某些条件(如多元正态分布)时完全贝叶斯分析才是可行的。而现阶段人工神经网络方法在数据挖掘中的应用仍很有限。值得一提的是,采用不精确信息处理数据的不完备性已得到了广泛的研究。不完备数据的表达方法所依据的理论主要有可信度理论、概率论、模糊**论、可能性理论,D-S的证据理论等。
什么预处理数据?
� 数据清理
� 数据集成
� 数据归约
� 离散化和概念分层产生
实世界中的数据是脏的
� 不完全:缺少属性值,缺少某些有趣的属性,或仅包含聚集数据
� 例, occupation=“”
� 噪音:包含错误或孤立点
� 例, Salary=“-10”
� 不一致:编码或名字存在差异
� 例, Age=“42” Birthday=“03/07/2010”
� 例,以前的等级 “1,2,3”,现在的等级 “A, B, C”
� 例,重复记录间的差异
�
不完全数据源于
�
数据收集时未包含
�
数据收集和数据分析时的不同考虑
.
�
人
/
硬件
/
软件问题
�
噪音数据源于
�
收集
�
录入
�
变换
�
不一致数据源于
�
不同的数据源
�
违反函数依赖
什么数据预处理是重要的?
� 没有高质量的数据,就没有高质量的数据挖掘结果!
� 高质量的决策必然依赖高质量的数据
�例如,重复或遗漏的数据可能导致不正确或误
导的统计.
� 数据仓库需要高质量数据的一致集成
� 数据提取,清理,和变换是建立数据仓库的最主要的
工作—Bill Inmon
�
数据清理
�
填充缺失值
,
识别
/
去除离群点
,
光滑噪音
,
并纠正数据中的不
一致
�
数据集成
�
多个数据库
,
数据立方体
,
或文件的集成
�
数据变换
�
规范化和聚集
�
数据归约
�
得到数据的归约表示
,
它小得多
,
但产生相同或类似的分析结
果:维度规约、数值规约、数据压缩
�
数据离散化和概念分层
�
忽略元组
:
缺少类别标签时常用
(
假定涉及分类
—
不是很有
效,当每个属性的缺失百分比变化大时
�
手工填写缺失数据
:
乏味
+
费时
+
不可行
?
�
自动填充
�
一个全局常量
: e.g., “unknown”, a new class?!
�
使用属性均值
�
与目标元组同一类的所有样本的属性均值
:
更巧妙
�
最可能的值
:
基于推理的方法,如
贝叶斯公式或决策树
�
Noise:
被测量的变量的随机误差或方差
�
不正确的属性值可能由于
�
错误的数据收集工具
�
数据录入问题
data entry problems
�
数据传输问题
data transmission problems
�
技术限制
technology limitation
�
不一致的命名惯例
inconsistency in naming convention
�
其他需要数据清理的问题
�
重复记录
duplicate records
�
数据不完整
incomplete data
�
不一致的数据
inconsistent data
何处理噪音数据
?
�
分箱
Binning method:
�
排序数据,分布到等频
/
等宽的箱
/
桶中
�
箱均值光滑、箱中位数光滑、箱边界光滑
, etc.
�
聚类
Clustering
�
检测和去除离群点
/
孤立点
outliers
�
计算机和人工检查相结合
�
人工检查可疑值
(e.g., deal with possible outliers)
�
回归
Regression
�
回归函数拟合数据
17
Regression
x
y
18
�
数据偏差检测
Data discrepancy detection
�
使用元数据
(
数据性质的知识
)(e.g.,
领域
,
长度范围
,
从属
,
分布
)
�
检查字段过载
field overloading
�
检查唯一性规则
,
连续性规则
,
空值规则
�
使用商业工具
�
数据清洗
Data scrubbing:
使用简单的领域知识
(e.g.,
邮编
,
拼写检
查
)
检查并纠正错误
�
数据审计
Data auditing:
通过分析数据发现规则和联系发现违规
者
(
孤立点
)
�
数据迁移和集成
�
数据迁移工具
Data migration tools:
允许指定转换
�
提取
/
变换
/
装入工具
ETL (Extraction/Transformation/Loading) tools:
允许用户通过图形用户界面指定变换
�
整合两个过程
�
两个过程迭代和交互执行
(e.g., Potter’s Wheels