数据预处理

为什么要进行预处理

现实世界的数据很“脏”

  • 不完整的: 缺少属性值, 感兴趣的属性缺少属性值, 或仅包含聚集数据
    如, occupation=“ ”
    来源于:收集数据时,在不同的阶段具有不同的考虑;人/硬件/软件的问题等。
  • 含噪声的: 包含错误或存在孤立点
    如, Salary=“-10”
    来源于:收集阶段;数据传输阶段等。
  • 不一致的: 在名称或代码之间存在着差异
    如, Age=“42” Birthday=“03/07/1997”
    如, 原来排序 “1,2,3”, 现在排序 “A, B, C”
    来源于:不同的数据源;功能依赖冲突。

数据预处理的主要任务

  • 数据清洗(Data cleaning)
    填充遗失的数据, 平滑噪声数据, 辨识或删除孤立点, 解决不一致性问题
  • 数据集成(Data integration)
    对多个数据库,数据立方或文件进行集成
  • 数据变换(Data transformation)
    规范化与聚集(Normalization and aggregation)
  • 数据约简(Data reduction)
    得到数据集的压缩表示,它小的多,但能够产生同样的(或几乎同样的)分析结果
  • 数据离散化(Data discretization)
    特别对数字值而言非常重要

数据清洗

清洗的主要任务:
  • 填充遗失数据
  • 辨识孤立点、平滑噪声数据
  • 修正不一致性数据
  • 解决数据集成时带来的数据冗余问题
怎样处理遗失的数据:
  • 忽略元组: 除非元组有多个属性缺少值,否则该方法不是很有效
  • 人工填充: 费时费力
  • 自动填充:
  • 使用一个全局常量填充: 如, “unknown”, 会误认为是一个新的、有意义的类?!
  • 该属性的平均值
  • 使用最可能的值: 使用基于推导的方法,如Bayesian公式或决策树
怎样处理噪声数据:
  • 分箱方法:
    先对数据进行排序,然后把它们划分到箱
    然后通过箱平均值,箱中值等进行平滑.
  • 等宽 (距离)划分:
    根据属性值的范围划分成N等宽的区间
    如果A和B 属性值的最大与最小值,则区间宽度为: W = (B –A)/N.
    很直接,但孤立点将会对此方法有很大的影响
  • 等深 (频率) 划分:
    划分成N个区间,每个区间含有大约相等地样本数。具有较好的数据扩展性。

实例:

*  价格排序: 4, 8, 9, 11, 15, 21, 21, 22, 24, 25, 26, 28, 29, 30, 40
*  划分成箱 (等深) :
      - Bin 1: 4, 8, 9, 11, 15
      - Bin 2: 21, 21, 22, 24, 25
      - Bin 3: 26, 28, 29, 30, 40
*  用箱平均值平滑数据:
      - Bin 1: 9.4, 9.4, 9.4, 9.4, 9.4
      - Bin 2: 22.6, 22.6, 22.6, 22.6, 22.6
      - Bin 3: 30.6, 30.6, 30.6, 30.6, 30.6
*  用箱中值平滑数据:
      - Bin 1: 9, 9, 9, 9, 9
      - Bin 2: 22, 22, 22, 22, 22
      - Bin 3: 29, 29, 29, 29, 29
  • 聚类
    探测并去除孤立点
  • 回归分析(Regression)
    让数据适合一个函数(如回归函数)来平滑数据

数据集成

数据集成: 将多个数据源中的数据结合起来存放在一个一致的数据存储中(如数据仓库)。

存在以下问题:

  1. 实体识别问题 (EI): 从不同的数据源辨识实体,如, A.cust-id  B.cust-#。
  2. 检测与解决值冲突问题
    对客观世界的同一实体, 不同数据源可能具有不同的值
    可能原因: 不同的表示方式, 不同的刻度,如公制与英制(metric vs. British units)等
  3. 数据冗余问题
    冗余属性可以通过相关分析检测出来

数据变换

规范化(Normalization): 刻度变换

mysql预处理语句的原理 预处理数据库_数据挖掘

数据约简

数据约简: 获得原有数据的约简表示,它的规模小的多,但具有与原有规模的数据相同或近似的分析结果

策略:

  • 降维(Dimension Reduction):主成分分析PCA、线性判别分析LDA、决策树归纳等
  • 参数化或非参数化方法
  1. 参数化方法:假设数据适合某个模型,然后估计模型参数,仅仅存储这些模型参数,而不再存储原有数据(除了可能的孤立点).如线性回归、多元线性回归、对数线性模型等
  2. 非参数化方法
    不假设模型,有: 直方图(histograms)、聚类, 采样(sampling)等.
  • 采样
    选择原有数据集的具有代表性的一个子集,自适应采样方法,分层采样。

####关于主成分分析PCA:
是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的新变量(转换后的这组变量叫主成分),同时根据实际需要选取几个较少的新变量以尽可能多地反映原来变量的信息。

mysql预处理语句的原理 预处理数据库_数据挖掘_02

mysql预处理语句的原理 预处理数据库_mysql预处理语句的原理_03

mysql预处理语句的原理 预处理数据库_离散化_04

mysql预处理语句的原理 预处理数据库_mysql预处理语句的原理_05

离散化

属性的三种类型
  1. 标称性的 — 取自于无序集合(unordered set)的值
  2. 有序的(Ordinal) —取自于有序集合(ordered set)的值
  3. 连续的 — 实数

把连续型属性的取值范围划分成区间
通过离散化减少数据集大小
为进一步分析做好准备

离散化方法
  • 分箱
  • 直方图分析
  • 聚类分析
  • 基于熵的离散化

mysql预处理语句的原理 预处理数据库_mysql预处理语句的原理_06