机器学习与数据挖掘——数据预处理

Posted 耶瞳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习与数据挖掘——数据预处理相关的知识,希望对你有一定的参考价值。

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间

一:关于数据预处理

在工程实践中,我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。数据预处理没有标准的流程,通常针对不同的任务和数据集属性的不同而不同。数据预处理的常用流程为:去除唯一属性、处理缺失值、属性编码、数据标准化正则化、特征选择、主成分分析。

数据预处理的意义:

  • 真实世界中的数据存在脏数据:
    • 不完备(Incompleteness):缺少属性值,缺少某种感兴趣的属性,或者仅包含聚集数据
    • 误差:测量误差和收集误差,难以处理
    • 噪音(Noise):存在错误或者不属于取值范围。包含错误或者孤立点/离群点(outlier)
    • 不一致(Inconsistency):编号或者名称存在差异
  • 数据质量的多维度量
    • 一个广为认可的多维度量观点:
      • 精确性(Accuracy)
      • 完整性(Completeness)
      • 一致性(Consistency)
      • 时效性(Timelines)
      • 可信度(Believability)
      • 可解释性(Interpretability)
    • 跟数据本身的含义相关的
      • 内在的、上下文的、表象的以及可访问性
  • 实际领域有很多复杂的数据,数据来自许多不同的来源和不同形式

数据预处理的重要性:

  • 没有高质量的数据,就没有高质量的挖掘结果
    • 高质量的决策必须依赖高质量的数据
    • 数据仓库需要对高质量的数据进行一致地集成
    • 低质量的数据VS算法性能
  • 数据预处理将是构建数据仓库或者进行数据挖掘的工作中占工作量最大的一个步骤

数据预处理的主要任务:

  • 数据清理(Data Cleaning):填写空缺的值,平滑噪声数据,识别、删除孤立点,解决不一致性
  • 数据集成(Data Integration):集成多个数据库、数据立方体或文件
  • 数据变换(Data Transformation):规范化(Normalization)、聚集(Aggregation)、数据离散化(Data Discretization)
  • 数据归约(Data Reduction):得到数据集的压缩表示并得到相同或相近的结果

二:数据清理

数据清理的基本概念:数据清理一般指对数据通用性的处理,旨在提高数据质量,与分析任务关联不大。

数据清理任务:

  • 填充空缺值
  • 识别离群点和平滑噪声数据
  • 纠正不一致的数据
  • 解决数据集成造成的冗余
  • 数据脱敏

引起空缺值的原因

  • 数据并不总是完整的。数据库表中,很多条记录的对应字段没有相应值,比如销售表中的顾客收入。
  • 设备异常
  • 与其他已有数据不一致而被删除
  • 因为误解而没有被输入的数据
  • 在输入时,有些数据应为得不到重视而没有被输入
  • 对数据的改变没有进行日志记载

空缺值的填充方法:

  • 忽略元组:当类标号缺少时通常这么做(假定挖掘任务设计分类或描述),当每个属性缺少值的百分比变化很大时,它的效果非常差
  • 人工填写空缺值:工作量大,可行性低
  • 填充:
    • 用一个全局变量填充空缺值:比如使用unknown或者∞
    • 使用属性的平均值填充空缺值
    • 使用与给定元组属同一类的所有样本的平均值
    • 使用最可能的值填充空缺值:使用像Bayesian公式,knn或判定树这样的基于推断的方法

噪声数据与其他数据问题:

  • 噪声:一个测量变量中的随机错误或偏差
  • 引起不正确属性值的原因
    • 数据收集工具的问题
    • 数据输入错误
    • 数据传输错误技术限制
    • 命名规则的不一致
  • 其它需要数据清理的数据问题
    • 重复记录
    • 不完整的数据不一致的数据

噪声数据的处理方式:

  • 回归(Regression):通过让数据适应回归函数来平滑数据
  • 聚类(Clustering):监测并且去除孤立点
  • 计算机和人工检查结合:计算机检测可疑数据,然后对它们进行人工判断

噪声数据的处理方式——聚类:聚类将类似的值聚成簇,落在簇集合之外的值被视为离群点

三:数据集成

数据集成的基本概念

  • 定义:将多个数据源中的数据整合到一个一致的存储中
  • 模式集成:整合不同数据源中的元数据

数据集成的处理方法:

  • 实体识别(Entity ldentification/Term Recognition)问题:匹配来自不同数据源的现实世界的实体
  • 检测并解决数据值的冲突(Value Conflict)
    • 对现实世界中的同一实体,来自不同数据源的属性值可能是不同的
    • 可能的原因:不同的数据表示,不同的度量等

集成多个数据库时,常出现冗余(Redundancy)数据

  • 对象识别:同一属性或对象在不同的数据库中会有不同的字段名
  • 可导出数据:一个属性可以由另外一个表导出,如“年薪=工资*12”

数据集成时处理冗余数据:

四:数据变换

数据变换(Data Transformation)策略:

  • 光滑(Smoothing):分箱、回归、聚类等技术
  • 特征构造(Feature Construction):新特征生成
  • 聚集(Aggregation):对数据进行汇总或聚集
  • 概念分层(Concept Hierarchy Generation):如:country-province -city
  • 规范化(Normalization):将数据按比例缩放,使之落入一个小的特定区间
  • 离散化(Discretization):数值属性用区间标签或概念标签替换

4.1:规范化

数据变换——规范化/标准化:

  • 作用: 对属性值进行规范化常用于涉及神经网络或距离度量的分类算法和聚类算法中。比如使用神经网络向后传播算法进行分类挖掘时,对训练元组中度量每个属性的输入值进行规范化有助于加快学习阶段的速度。对于基于距离度量相异度的方法,数据规范化可以让所有的属性具有相同的权重。
  • 常用方法:
    • 简单的标准化
    • 最小-最大规范化
    • z-score规范化
    • 小数定标规范化

4.2:离散化

数据变换——离散化:

  • 将连续属性变换成分类属性,即连续属性离散化
    • 一些DM算法要求数据是分类属性形式,如ID3算法、Apriori算法等
  • 离散化的过程
    • 涉及两个子任务:
      • 决定需要多少个分类量及确定如何将连续
      • 属性值映射到这些分类值
  • 常用的离散化方法
    • 无监督方法:分箱法、直方图、基于聚类/相关分析的方法
    • 监督方法:离散化的决策树方法、概念分层

五:数据归约

5.1:基本概念

数据归约是指在尽可能保持数据原貌的前提下,最大限度地精简数据量(完成该任务的必要前提是理解挖掘任务和熟悉数据本身内容)。

数据归约主要有两个途径:属性选择和数据采样,分别针对原始数据集中的属性和记录。

假定在公司的数据仓库选择了数据用于分析,这样数据集将非常大。在海量数据上进行复杂的数据分析扣挖掘将需要很长时间,使得这种分析不现实或不可行。数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近地保持原数据的完整性。这样,在归约后的数据集上挖掘将更有效,并产生相同(或几乎相同)的分析结果。

数据归约的策略:

  • 数据立方体聚集:聚集操作用于数据方中的数据。
  • 维归约:可以检测并删除不相关、弱相关或冗余的属性或维。
  • 数据压缩:使用编码机制压缩数据集。
  • 数值归约:用替代的、较小的数据表示替换或估计数据,如参数模型(只需要存放校型参数,而不是实际数据)或非参数方法,如聚类、选样和使用直方图。
  • 离散化和概念分层生产:属性的原始值用区间值或较高层的概念替换,概念分层允许挖掘多个抽象层上的数据,是数据挖掘的一种强有力的工具。

5.2:归约分类

5.2.1:特征归约

特征归约是从原有的特征中删除不重要或不相关的特征,或者通过对特征进行重组来减少特征的个数。其原则是在保留、甚至提高原有判别能力的同时减少特征向量的维度。特征归约算法的输入是一组特征,输出是它的一个子集。在领域知识缺乏的情况下进行特征归约时一般包括3个步骤:

  • 搜索过程:在特征空间中搜索特征子集,每个子集称为一个状态由选中的特征构成。
  • 评估过程:输入一个状态,通过评估函数或预先设定的阈值输出一个评估值搜索算法的目的是使评估值达到最优。
  • 分类过程:使用最终的特征集完成最后的算法。

特征归约处理的效果:

  • 更少的数据,提高挖掘效率
  • 更高的数据挖掘处理精度
  • 简单的数据挖掘处理结果
  • 更少的特征

5.2.2:样本归约

样本都是已知的,通常数目很大,质量或高或低,或者有或者没有关于实际问题的先验知识。

样本归约就是从数据集中选出一个有代表性的样本的子集。子集大小的确定要考虑计算成本、存储要求、估计量的精度以及其它一些与算法和数据特性有关的因素。

初始数据集中最大和最关键的维度数就是样本的数目,也就是数据表中的记录数。数据挖掘处理的初始数据集描述了一个极大的总体,对数据的分析只基于样本的一个子集。获得数据的子集后,用它来提供整个数据集的一些信息,这个子集通常叫做估计量,它的质量依赖于所选子集中的元素。取样过程总会造成取样误差,取样误差对所有的方法和策略来讲都是固有的、不可避免的,当子集的规模变大时,取样误差一般会降低。一个完整的数据集在理论上是不存在取样误差的。与针对整个数据集的数据挖掘比较起来,样本归约具有以下一个或多个优点:减少成本、速度更快、范围更广,有时甚至能获得更高的精度。

5.2.3:特征值归约

特征值归约是特征值离散化技术,它将连续型特征的值离散化,使之成为少量的区间,每个区间映射到一个离散符号。这种技术的好处在于简化了数据描述,并易于理解数据和最终的挖掘结果。

特征值归约可以是有参的,也可以是无参的。有参方法使用一个模型来评估数据,只需存放参数,而不需要存放实际数据;

  • 有参的特征值归约有以下两种:
    • 回归:线性回归和多元回归
    • 对数线性模型:近似离散多维概率分布
  • 无参的特征值归约有3种:
    • 直方图:采用分箱近似数据分布,其中V-最优和MaxDiff直方图是最精确和最实用的
    • 聚类:将数据元组视为对象,将对象划分为群或聚类,使得在一个聚类中的对象“类似”而与其他聚类中的对象“不类似”在数据归约时用数据的聚类代替实际数据
    • 选样:用数据的较小随机样本表示大的数据集,如简单选择n个样本(类似样本归约)、聚类选样和分层选样等

以上是关于机器学习与数据挖掘——数据预处理的主要内容,如果未能解决你的问题,请参考以下文章

机器学习实战之K近邻算法

机器学习实战之K近邻算法

机器学习基础 - 偏度正态化以及 Box-Cox 变换

机器学习实战笔记-K近邻算法1(分类动作片与爱情片)

Python数据挖掘与机器学习技术入门实战

机器学习中的数据预处理方法与步骤