数据预处理总述
etl--抽取,转换,加载
大数据项目开发流程
数据采集--数据预处理--数据存储--数据分析挖掘--数据可视化
背景
数据质量问题:准确性,完整性,一致性,可信性、可解释性,时效性,相关性
准确性:数据是正确的,数据存储在数据库中的值对应真实世界的值( 可能发生在数据采集过程中出现错误)
造成不准确原因:数据收集设备故障,数据输入错误,数据传输过程出错,命名约定、数据代码、输入字段的格式不一致
完整性:通常与NULL有关,一般包括记录的缺失和记录属性的缺失(从数据采集的角度来说,可能会出现数据的完整性)
造成不完整原因:涉及个人隐私,无法获取相关属性;数据输入时,由于人为的疏漏导致;数据输入或传输时,由于机器的故障导致
一致性:在数据库中指在不同地方存储和使用的同一数据应当是等价的,表示数据有相等的值和相同的含义(数据采集中)
造成不一致性原因:逻辑不一致(关系型数据库和非关系型数据库);记录规范不一致(发生在数据集成,不同数据库对同一属性的命名,规则不一致); 数据冗余时数据内容不一致
可信性:数据的权威性、数据的规范性、数据产生的时间
可解释性:反映数据是否容易理解
时效性:指数据仅在一定时间段内对决策具有价值的属性,数据的时效性很大程度上制约着决策的客观效果
应用场景:商品推荐和城市交通
相关性:数据与特定的应用和领域有关
应用场景:构造预测模型,需采集与模型相关的数据;相同的数据,在不同的应用领域中,相关性也是不一样的
目的
数据预处理目的: 提升数据质量
是数据挖掘的准备
达到改进数据质量,提高数据挖掘过程的准确率和效率;保证数据挖掘的正确性和有效性;通过对数据格式和内容的调整,使得数据更符合挖掘的需要
流程
数据清理
脏数据:由于重复录入,并发处理等不规范的操作,导致产生不完整,不准确的,无效的数据(越早处理脏数据,数据清理操作越简单)
数据清理试图填充空缺的值、识别孤立点、消除噪声,并纠正数据的不一致性
缺失值处理
缺失值:现有数据集中某个或某些属性的值是不完整的的;
处理方法:忽略元组;人工填写;使用全局变量;(不常用)属性的 中心度量来填充;使用与给定元组同一类的所有样本平均值;使用最可能的值(常用)
噪声处理
噪声数据平滑
噪声处理--噪声是被测量的变量的随机误差或偏差
孤立点:不符合数据模型的数据
噪声处理的目的:降低对数据分析和结果的影响
引起噪声原因:数据收集工具的问题;数据输入的错误;数据传输错误;技术的限制;命名规则不一致
处理方法
分箱--通过考察数据的近邻来光滑有序数据值
回归--采用一个函数拟合数据来光滑数据(线性回归;多元线性回归)
聚类--可以通过聚类算法来检测离群点,消除噪声
数据集成
定义:将相互关联的分布式异构数据源集成到一起,使用户能够以透明的方式访问这些数据源
信息孤岛(阶段性+分布性):指不同软件间,尤其是不同部门间的数据信息不能共享,造成系统中存在大量冗余数据、垃圾数据,无法保证数据的一致性
方法:联邦数据库,中间件集成,数据复制(常用)
联邦数据库:将各数据源的数据视图集成为全局模式
中间件集成(通过全局数据模型)
数据复制:将各数据源的数据复制到同一处,即数据仓库
集成过程中需处理的问题:实体识别;冗余与相关分析;数据冲突检测与处理
实体识别:匹配多个信息源在现实世界中的等价实体(同义不同命;同名不同义)
冗余与相关分析--冗余问题(属性重复;属性相关冗余;元组重复)
数据归约
为什么
数据集庞大,数据海量,在整个数据集上进行复杂的数据分析和挖掘需要花费很长的时间
目的
概念:帮助从原有庞大数据集中获得精简的数据集合,使该精简的数据集保持原有数据集的完整性,这样精简的数据集上进行数据挖掘显然效率更高,并且挖掘出来的结果与原有数据集所获得的结果基本相同
标准
归约时间+小数据集的挖掘时间(精简数据集挖掘时间)< 大数据挖掘时间(原有数据集挖掘时间)
小数据集的挖掘结果(精简数据集挖掘结果) 几乎等于 大数据集的挖掘结果(原有数据集挖掘结果)
策略
维归约
维归约-主成分分析(主分量分析):利用降维的思想,把多指标转化为少数几个综合指标(即主成分)其中每个主成分能够反映原始变量的大部分信息,且所含信息互不重复
维归约-属性子集选择:利用检测并删除不相关、弱相关或冗余的属性,目标是找出最小属性集,使得数据类的概率分布尽可能的接近使用所有属性得到的原分布
数量归约:通过选择替代的、较小的数据表示形式来减少数据量(有参方法-回归和对数的线性模型;无参方法-直方图、聚类、抽样和数据立方体聚集)
聚类 :将原有数据集划分成多个群或聚类
取样:允许用数据的较小随机样本(子集)表示大的数据集(不放回简单随机取样;放回简单随机取样;聚类取样--先聚类,后取样;分层取样--先分层,后取样)
数据立方体聚集:将n维数据立方体聚集成n-1维的数据立方体
数据压缩
利用数据编码或数据转换将原来的数据集合压缩为一个较小规模的数据集合。
无损压缩(loseless):可以不丢失任何信息地还原压缩数据;如:字符串压缩,压缩格式:Zip或RAR
有损压缩(lossy):只能重新构造原数据的近似表示;如:音频/视频压缩。
数据变换
目的
将数据转换或统一成易于进行数据挖掘的数据存储形式,使得挖掘过程可能更有效
方法策略
光滑:去掉数据中的噪音
属性构造:由给定的属性构造新的属性并添加到属性集中,帮助数据分析和挖掘
聚集:对数据进行汇总或聚集
规范化:将属性数据按比例缩放,使之落入一个小的特定区间1)最小—最大规范化:假定minA和maxA分别为属性A的最小和最大值,则通过下面公式将A的值映射到区间[new_minA, new_maxA]中:
2)z-score规范化(零均值规范化):
将属性A的值根据其平均值和标准差进行规范化;
常用于属性最大值与最小值未知,或使用最小最大规范化方法会出现异常数据的情况。
其中,meanA、 standard_devA分别为属性A取值的均值和标准差。
3)小数定标规范化:通过移动属性A的小数点位置进行规范化,小数点的移动依赖于A的最大绝对值
离散化:数值属性用区间标签或概念标签替换
数据预处理注意项
- 数据预处理的上述流程并不是完全分开的,在某种场景下是可以一起使用的
- 应该针对具体所要研究的问题通过详细分析后再进行预处理方案的选择
- 整个预处理过程要尽量人机结合,尤其要注重和客户以及专家多交流
- 预处理后,若挖掘结果显示和实际差异较大,在排除源数据的问题后,则有必要考虑数据的二次预处理
工具
数据预处理工具-Kettle
开源,且支持可视化编程
支持各种数据源
数据处理功能很强大
数据预处理工具-Python
可以胜任很多领域的工作,是人工智能和大数据时代的明星语言
是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库。
本章总结