博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据预处理
阅读量:3681 次
发布时间:2019-05-21

本文共 1580 字,大约阅读时间需要 5 分钟。

为什么要预处理数据?

现实世界的数据是“肮脏的”——数据多了,什么问题都会出现

  • 不完整的:有些感兴趣的属性缺少属性值,或仅包含聚集数据
  • 含噪声的:包含错误或者“孤立点”
  • 不一致的:在编码或者命名上存在差异

没有高质量的数据,就没有高质量的挖掘结果

  • 高质量的决策必须依赖高质量的数据
  • 数据仓库需要对高质量的数据进行一致地集成

数据质量的多维度量

一个广为认可的多维度量观点:

  • 准确度
  • 完整度
  • 一致性
  • 合乎时机–时效性
  • 可信度
  • 附加价值
  • 可访问性、可解释性

跟数据本身的含义相关的

  • 内在的、上下文的、表象的

数据预处理的主要任务

数据清理–Potter’s Wheel

填写空缺的值,平滑噪声数据,识别、删除孤立点,解决不一致性

数据集成

集成多个数据库、数据立方体或文件

数据变换

规范化和聚集

数据归约

得到数据集的压缩表示,它小得多,但可以得到相同或相近的结果

数据离散化

数据归约的一部分,通过概念分层和数据的离散化来规约数据,对数字型数据特别重要

空缺值

数据并不总是完整的

例如:数据库表中,很多条记录的对应字段没有相应值,比如销售表中的顾客收入

引起空缺值的原因

  • 设备异常
  • 与其他已有数据不一致而被删除
  • 因为误解而没有被输入的数据
  • 在输入时,有些数据应为得不到重视而没有被输入
  • 对数据的改变没有进行日志记载

空缺值要经过推断而补上

如何处理空缺值

忽略元组:当类标号缺少时通常这么做(假定挖掘任务涉及分类或描述),当每个属性缺少值的百分比变化很大时,它的效果非常差。

人工填写空缺值:工作量大,可行性低
使用一个全局变量填充空缺值:比如使用unknown或-∞
使用属性的平均值填充空缺值
使用与给定元组属同一类的所有样本的平均值
使用最可能的值填充空缺值:使用像Bayesian公式或判定树这样的基于推断的方法

噪声数据

噪声:一个测量变量中的随机错误或偏差

引起噪声数据的原因

  • 数据收集工具的问题
  • 数据输入错误
  • 数据传输错误
  • 技术限制
  • 命名规则的不一致

如何处理噪声数据

分箱(binning):

首先排序数据,并将他们分到等深的箱中
然后可以按箱的平均值平滑、按箱中值平滑、按箱的边界平滑等等
这里写图片描述

聚类:

监测并且去除孤立点
计算机和人工检查结合
计算机检测可疑数据,然后对它们进行人工判断
这里写图片描述

回归

通过让数据适应回归函数来平滑数据
这里写图片描述

数据集成

数据集成:

将多个数据源中的数据整合到一个一致的存储中

模式集成:

整合不同数据源中的元数据
实体识别问题:匹配来自不同数据源的现实世界的实体,比如:A.cust-id=B.customer_no

检测并解决数据值的冲突

对现实世界中的同一实体,来自不同数据源的属性值可能是不同的
可能的原因:不同的数据表示,不同的度量等等

处理数据集成中的冗余数据

集成多个数据库时,经常会出现冗余数据

同一属性在不同的数据库中会有不同的字段名
一个属性可以由另外一个表导出,如“年薪”

有些冗余可以被相关分析检测到

这里写图片描述

仔细将多个数据源中的数据集成起来,能够减少或避免结果数据中的冗余与不一致性,从而可以提高挖掘的速度和质量

数据变换

平滑:去除数据中的噪声 (分箱、聚类、回归)

聚集:汇总,数据立方体的构建
数据概化:沿概念分层向上概化
规范化:将数据按比例缩放,使之落入一个小的特定区间
属性构造:通过现有属性构造新的属性,并添加到属性集中;以增加对高维数据的结构的理解和精确

数据归约策略

数据仓库中往往存有海量数据,在其上进行复杂的数据分析与挖掘需要很长的时间

数据归约

数据归约可以用来得到数据集的归约表示,它小得多,但可以产生相同的(或几乎相同的)分析结果

数据归约策略

  • 数据立方体聚集
  • 维归约
  • 数据压缩
  • 数值归约
  • 离散化和概念分层产生

用于数据归约的时间不应当超过或“抵消”在归约后的数据上挖掘节省的时间。

你可能感兴趣的文章
IDEA访问不了官网解决办法
查看>>
Docker 基础篇之快速上手【一】
查看>>
Docker 基础篇之快速上手【二】
查看>>
【大厂面试】面试官都爱问的 Redis 事务
查看>>
IDEA编译时出现 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
查看>>
Redis 的 Java 客户端
查看>>
Redis 做分布式锁
查看>>
Redis 做消息队列
查看>>
Linux 的网络配置
查看>>
Linux 环境下安装 MySQL,各种踩坑、疑难杂症
查看>>
MySQL性能【索引优化分析】
查看>>
MySQL性能【查询截取分析】
查看>>
MySQL 锁机制
查看>>
3. Shiro 授权
查看>>
Git 版本管理
查看>>
MyBatis Plus 3.X 通俗易懂版教程
查看>>
Java 中一个元素在集合中如何忽略自己循环比对是否存在相同元素
查看>>
JAVA如何计算字符串公式
查看>>
Java 实现 crc modbus 16 位校验算法
查看>>
Java工作中常用方法总结
查看>>