为什么要预处理数据?
现实世界的数据是“肮脏的”——数据多了,什么问题都会出现
- 不完整的:有些感兴趣的属性缺少属性值,或仅包含聚集数据
- 含噪声的:包含错误或者“孤立点”
- 不一致的:在编码或者命名上存在差异
没有高质量的数据,就没有高质量的挖掘结果
- 高质量的决策必须依赖高质量的数据
- 数据仓库需要对高质量的数据进行一致地集成
数据质量的多维度量
一个广为认可的多维度量观点:
- 准确度
- 完整度
- 一致性
- 合乎时机–时效性
- 可信度
- 附加价值
- 可访问性、可解释性
跟数据本身的含义相关的
- 内在的、上下文的、表象的
数据预处理的主要任务
数据清理–Potter’s Wheel
填写空缺的值,平滑噪声数据,识别、删除孤立点,解决不一致性
数据集成
集成多个数据库、数据立方体或文件
数据变换
规范化和聚集
数据归约
得到数据集的压缩表示,它小得多,但可以得到相同或相近的结果
数据离散化
数据归约的一部分,通过概念分层和数据的离散化来规约数据,对数字型数据特别重要
空缺值
数据并不总是完整的
例如:数据库表中,很多条记录的对应字段没有相应值,比如销售表中的顾客收入
引起空缺值的原因
- 设备异常
- 与其他已有数据不一致而被删除
- 因为误解而没有被输入的数据
- 在输入时,有些数据应为得不到重视而没有被输入
- 对数据的改变没有进行日志记载
空缺值要经过推断而补上
如何处理空缺值
忽略元组:当类标号缺少时通常这么做(假定挖掘任务涉及分类或描述),当每个属性缺少值的百分比变化很大时,它的效果非常差。
人工填写空缺值:工作量大,可行性低
使用一个全局变量填充空缺值:比如使用unknown或-∞
使用属性的平均值填充空缺值
使用与给定元组属同一类的所有样本的平均值
使用最可能的值填充空缺值:使用像Bayesian公式或判定树这样的基于推断的方法
噪声数据
噪声:一个测量变量中的随机错误或偏差
引起噪声数据的原因
- 数据收集工具的问题
- 数据输入错误
- 数据传输错误
- 技术限制
- 命名规则的不一致
如何处理噪声数据
分箱(binning):
首先排序数据,并将他们分到等深的箱中
然后可以按箱的平均值平滑、按箱中值平滑、按箱的边界平滑等等
聚类:
监测并且去除孤立点
计算机和人工检查结合
计算机检测可疑数据,然后对它们进行人工判断
回归
通过让数据适应回归函数来平滑数据
数据集成
数据集成:
将多个数据源中的数据整合到一个一致的存储中
模式集成:
整合不同数据源中的元数据
实体识别问题:匹配来自不同数据源的现实世界的实体,比如:A.cust-id=B.customer_no
检测并解决数据值的冲突
对现实世界中的同一实体,来自不同数据源的属性值可能是不同的
可能的原因:不同的数据表示,不同的度量等等
处理数据集成中的冗余数据
集成多个数据库时,经常会出现冗余数据
同一属性在不同的数据库中会有不同的字段名
一个属性可以由另外一个表导出,如“年薪”
有些冗余可以被相关分析检测到
仔细将多个数据源中的数据集成起来,能够减少或避免结果数据中的冗余与不一致性,从而可以提高挖掘的速度和质量
数据变换
平滑:去除数据中的噪声 (分箱、聚类、回归)
聚集:汇总,数据立方体的构建
数据概化:沿概念分层向上概化
规范化:将数据按比例缩放,使之落入一个小的特定区间
属性构造:通过现有属性构造新的属性,并添加到属性集中;以增加对高维数据的结构的理解和精确
数据归约策略
数据仓库中往往存有海量数据,在其上进行复杂的数据分析与挖掘需要很长的时间
数据归约
数据归约可以用来得到数据集的归约表示,它小得多,但可以产生相同的(或几乎相同的)分析结果
数据归约策略
- 数据立方体聚集
- 维归约
- 数据压缩
- 数值归约
- 离散化和概念分层产生
用于数据归约的时间不应当超过或“抵消”在归约后的数据上挖掘节省的时间。