Data Mining:(2)数据预处理

  • 该博客为数据挖掘系列博客的第二部分:数据预处理
  • 该博客主要介绍数据预处理的流程及其内容。

缘何兴起

在做一件事之前,我们需要问下自己为什么要做这件事,不至于自己糊里糊涂地在那瞎忙活而耽误了真正重要的事情。
那么问题来了,我们为什么需要进行数据预处理呢?
根据各种资料以及我个人的经历,我总结为以下两点:

  1. 原始数据大多是肮脏的:由于数据来源缺乏有效的管控,因此源数据大多数都是比较脏的,会有不一致、不完整、含噪声、重复等情况发生。
  2. 没有高质量的数据,就没有高质量的挖掘。正所谓“garbage in, garbage out”。
数据存在的问题 含义
不一致 数据内涵出现不一致情况,如编码存在差异
不完整 感兴趣的属性值缺失
含噪声 数据中存在着错误、或异常(偏离期望值)的数据
重复 记录重复

怎么定义

数据预处理是一项将原始数据转换成易于理解和处理的数据格式的数据挖掘技术。
真实世界的数据通常是不完整的、不一致的,伴随着一定的缺失,并且有许多错误。
数据预处理正是解决这些问题的有效方法。

Data preprocessing is a data mining technique that involves transforming raw data into an understandable format. Real-world data is often incomplete, inconsistent, and/or lacking in certain behaviors or trends, and is likely to contain many errors. Data preprocessing is a proven method of resolving such issues.

该怎么办

数据预处理的方法主要有以下四种:

  • 数据清洗
  • 数据集成
  • 数据变换
  • 数据归约

数据清洗(Data Cleansing)

概念阐述

数据清理也称为数据清洗,其作用就是清除数据噪声和与挖掘主题明显无关和不一致数据,包括填补缺失值、平滑噪声数据、识别删除孤立点、解决不一致性。

数据选取参考原则

  • 尽可能赋予属性名和属性值明确的含义
  • 统一多数据源的属性值编码
  • 去除惟一属性
  • 去除重复属性
  • 去除可忽略字段
  • 合理选择关联字段(相关性分析)

处理空缺值

  • 忽略元组(该记录):当类标号缺少时通常这么做(假定挖掘任务涉及分类或描述),当每个属性缺少值的百分比变化很大时,它的效果非常差
  • 去掉属性
  • 人工填充空缺值:工作量大,可行性低
  • 使用全局变量或默认值填充空缺值
  • 使用属性的平均值填充空缺值
  • 使用同类样本的平均值填充空缺值
  • 使用最可能的值填充空缺值:使用像贝叶斯公式或判定树这样的基于推断的方法

消除噪声数据

分箱

  • 概念:把待处理的数据进行排序,然后按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。
  • 分箱技术需要确定两个主要问题:
    • 分箱方法:即如何分箱
    • 数据平滑方法:即如何对每个箱子中的数据进行平滑处理
  • 分箱方法主要有:
    • 等深分箱法
      按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱的权重,也称为箱子的深度。
    • 等宽分箱法
      在整个属性值的区间上平均分布,即每个箱子的区间范围是一个常量,称为箱子宽 度。
    • 最小熵
      使在各区间分组内的记录具有最小的熵。
    • 用户自定义区间
      根据需要自行定义箱子范围
  • 数据平滑方法主要有:
    • 按平均值平滑
      对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。
    • 按边界值平滑
      用距离较小的边界值来替代箱子中的非边界数据
    • 按中值平滑
      取箱子中的数据的中值,用中值替代该箱子中的所有数据。

聚类

通过聚类分析查找孤立点,去除孤立点以消除噪声。
聚类算法可以得到若干数据类(簇),在所有类外的数据可视为孤立点,即噪声数据。

回归

发现两个相关的变量之间的变化模式,通过使数据适合一个函数来平滑数据,即利用拟合函数对数据进行平滑。

消除不一致

通过描述数据的元数据来消除数据命名的不一致
通过专门的例程来消除编码的不一致

数据集成(Data Integration)

概念阐述

将多个数据源中的数据整合到一个一致的数据存储中,由于数据源的多样性,就需要解决可能出现的各种集成问题。

模式匹配

通过整合不同数据源中的元数据来实施数据模式的集成,特别需要解决各数据源中属性等命名不一致的问题。

数据冗余

  • 集成多个数据源时,经常会出现冗余数据(data redundancy)
  • 常见的是属性冗余,如果一个属性可以由另外一个表导出,则它是冗余属性,如“年薪”可由“月薪”计算出
  • 有些冗余可以采用相关分析检测得到:如果rA,Br_{A,B}足够接近1时,可视为一个属性蕴含另一个属性的可能性极大,可将其中一个属性作为冗余属性去掉。

数据值冲突

  • 对现实世界中的同一实体,来自不同数据源的属性值可能是不同的。
  • 产生的原因有表示的差异、比例尺度的不同或编码的差异等。

数据转换(Data Transformation)

概念阐述

  • 数据转换是将数据转化为易于进行数据挖掘的数据存储形式
  • 一般包含在数据集成过程中。
  • 常见的方法有平滑、聚集、数据概化、数据规范化及属性构造等

平滑

去除噪声,将连续的数据离散化,增加粒度。

聚集

对数据进行汇总,可以用来构造数据立方体。

概化

用更高层次(更抽象)的概念取代低层次的数据对象。

规范化

  • 将数据按比例进行缩放,使之落入一个特定的区域,以消除数值型属性因大小不一而造成挖掘结果的偏差。
  • 方法主要有最小-最大规范化、零-均值规范化、小数定标规范化

最小-最大规范化

  • 已知属性的取值范围,将原取值区间[old_min,old_max]映射到[new_min,new_max]
  • v=vminAmaxAminA(new_maxAnew_minA)+new_minAv' = \frac{v-min_{A}}{max_{A}-min_{A}}(new\_max_{A}-new\_min_{A})+new\_min_{A}
  • 保留了原来数据中存在的关系,但若将来遇到超过目前属性[old_min,old_max]取值范围的数值,将会引起系统出错。

零-均值规范化

  • 根据属性的均值和偏差对属性进行规范化,也称 Z-Score 规范化
  • 常用于属性最大值与最小值未知,或使用最大最小规格化方法时出现数据异常的情况。
  • v=vAˉσA v' = \frac{v-\bar{A}}{\sigma_{A}}
    Aˉ\bar{A}表示A的平均值,σA\sigma_{A}表示A的标准差

小数定标规范化

  • 通过移动属性A值的小数位置,将属性A的值映射到 [0,1] 之间,用小数的科学表示法来达到规范化的目的。
  • 移动的小数位数取决于属性A绝对值的最大值
  • v=v10j v' = \frac{v}{10^{j}}
    其中的j为满足 maxA10j<1\frac{max_{|A|}}{10^{j}}<1 的最小整数

属性构造

利用已有属性集构造出新的属性,并加入到现有属性集合中以帮助挖掘更深层次的模式知识,提高挖掘结果准确性。

数据归约(Data Reduction)

概念阐述

  • 数据归约又称数据约简或数据简化。
  • 对于大数据集,通过数据归约可以得到其归约表示,它小得多但仍接近于保持原数据的完整性,这样在归约后的数据集上挖掘效率更高,产生的分析结果也基本相同。

归约标准

  • 用于数据归约的时间应当不超过在归约后的数据上挖掘所节省的时间。
  • 归约得到的数据虽然比原数据小,但可以产生几乎相同的分析结果。

归约类别

  • 属性归约(横向减少数据量)
  • 记录归约(纵向减少数据量)

归约方法

  • 数据立方体聚集
    将n维数据立方体聚集为n-1维的数据立方体
  • 维归约
    • 去掉无关的属性,减少数据挖掘处理的数据量
    • 常用方法有向前选择、向后剔除、逐步回归、判定树、基于统计分析的归约等。
  • 数据压缩
    • 用数据编码或者变换,得到原始数据的压缩表示
    • 常用方法有主成分分析法(Principal Component Analysis,PCA)等。
  • 数值归约
    • 用较小的数据表示数据,或采用较短的数据单位,或者用数据模型代表数据,减少数据量。
    • 常用方法有直方图、聚类、抽样、参数回归法等。
  • 离散化和概念分层
    • 连续属性的离散化就是在特定的连续属性的值域内设定若干个离散化的划分点,将属性的值域范围划分为一些离散化空间,最后用不同的符号或整数值表示落在每个子区间内的属性值。从本质上看,连续属性的离散化就是利用选取的断点对连续属性构成的空间进行划分的过程。
    • 数据离散化的常用方法有:分箱、直方图分析、聚类分析等。
    • 概念分层定义了一组由低层概念集到高层概念集的映射。它允许在各种抽象级别上处理数据,从而在多个抽象层上发现知识。用较高层次的概念替换较低层次的概念,以此来较少取值个数。
    • 概念分层结构可以用树来表示,树的每个节点代表一个概念。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章