当前位置:文档之家› 第3章数据的采集和预处理(新)

第3章数据的采集和预处理(新)

数据清洗本质上是一个修改 改数据模型的过程。
典型的数据清洗路径
缺失值清洗
删除缺失值 均值填补法 热卡填补法 最近距离决定填补法 回归填补法 多重填补方法 k-最近邻法 有序最近邻法 基于贝叶斯的方法
异常值清洗
异常值的定义与识别
简单的统计分析 3σ原则 箱型图分析 基于模型检测 基于距离 基于密度 基于聚类
第3章 数据的采集和预 处理
Unrestricted
任课教师: 学院:
主要内容
第一部分:概述 第二部分:数据预处理的目的和任务 第三部分:数据清洗 第四部分:数据集成 第五部分:数据变换
大数据采集的特点
数据采集是大数据生命周期中的第一个环节 相对于传统数据 而言,大数据的数据具有海量、多样、异构等特
度/动态流检测)技术 特定系统接口数据采集
数据预处理的目的和任务
数据预处理的主要目的是提高数据质量 数据质量涉及很多因素,包括准确性、完
整性、一致性、时效性、可信性和可解释 性。 数据预处理的主要任务包括:数据清洗、 数据集成与数据变换
数据清洗
在实际操作中,数据清洗通 常会占据分析过程的 50% ~80%的时间。
数据变换
几种数据变换的策略
光滑 属性构造(特征构造) 聚集 规范化 离散化 概念分层
常用的数据变换方法
规范化
最小最大规范化 z-score规范化 小数定标规范化
分箱离散化 直方图分析 聚类、决策树和相关分析离散化 标称数据的概念分层
模式级显式说明属性的序或者部分序 通过显式数据分组说明分层结构 说明属性集,但不说明它们的偏序 只说明部分属性集
去重 举例2:
你用的系统里很有可能两条路都叫八里庄 路,敢直接去重不?(附送去重小tips:两 个八里庄路的门牌号范围不一样)
逻辑错误清洗
去除不合理值
逻辑不合理值的处理非常依赖于大数据的具体问题上 下文,要依赖于数据分析专家或者数据分析师的丰富 经验和细心负责态度。
一句话就能说清楚:有人填表时候瞎填,年龄200岁, 年收入100000万(估计是没看见”万“字),这种的 就要么删掉,要么按缺失值处理。这种值如何发现? 提示:可用但不限于箱形图(Box-plot).
非需求数据清洗
这一步说起来非常简单:把不要的字段删了。但实 际操作起来,有很多问题。例如: 1、把看上去不需要但实际上对业务很重要的字段删 了; 2、某个字段觉得有用,但又没想好怎么用,不知道 是否该删; 3、一时看走眼,删错字段了。
前两种情况我给的建议是:如果数据量没有大到不 删字段就没办法处理的程度,那么能不删的字段尽量 不删。第三种情况,请勤备份数据……
去重 举例1:
电话销售相关的数据分析发现,销售们为 了抢单简直无所不用其极……举例,一家公 司叫做“ABC管家有限公司“,在销售A手 里,然后销售B为了抢这个客户,在系统里录 入一个”ABC官家有限公司“。你看,不仔 细看你都看不出两者的区别,而且就算看出 来了,你能保证没有”ABC官家有限公司“ 这种东西的存在么……这种时候,要么去抱 RD大腿要求人家给你写模糊匹配算法,要么 肉眼看吧。
CAP 理论的核心是:一个分布式系统不可能同时 很好地满足一致性、可用性和分区容错性这 3 个 需求,最多只能同时较好地满足两个。
大数据采集的方法
分布式系统的日志采集 网络数据采集(网络爬虫) DPI(Deep Packet Inspection,深度包检
测)技术 DFI(Deep/Dynamic Flow Inspection,深
总结:逻辑错误除了以上列举的情况,还有很多未列举 的情况,在实际操作中要酌情处理。另外,这一步骤在之后 的数据分析建模过程中有可能重复,因为即使问题很简单, 也并非所有问题都能够一次找出,我们能做的是使用工具和 方法,尽量减少问题出现的可能性,使分析过程更为高效。
Байду номын сангаас
非需求数据清洗
一般原则是:只要大数据系统能够承受, 尽量不丢弃数据;万不得已一旦决定要清 洗非需求数据,一定要做好数据的备份和 恢复工作。
数据规范化(公式写法1)
1、最大—最小规范化 : X *=(x-min)/(max-min) 映射到 [0,1] 之间,若数据集中且某个数值太大,则规范
化后各值都接近0,且相差不大 2、零—均值规范化:
X*=(x-mean)/ sigma 目前用的最多的数据标准化方法 3、小数定标规范化: X*=x /(10^k) 通过移动属性值的小数位数,映射到 [-1,1] 之间,移动 的小数位数取决于属性值绝对值的最大值
关联性验证
严格意义上来说,这已经脱离数据清洗的 范畴,而且关联数据变动在数据库模型中 就应该涉及。对于大数据数据分析师来说 ,多个来源的数据整合是非常复杂的工作 ,在数据清洗阶段就一定要注意数据之间 的关联性,尽量不要拖到分析过程中结果 不对才发现数据之间互相矛盾。
数据集成
数据集成,指的是合并来自多个数据存储 的数据,存放在一个一致的数据存储中, 如存放在数据仓库中。
此情况是在属性 A 的最大和最小值未知,或局外者左右了 最大-最小规范化时使用
数据规范化(公式写法2)
3、normalization by decimal scaling: 小数定标规范化通过移动属性 A 的小数点位置进行规范
化。小数点的移动位数依赖于 A 的最大 绝对值。A 的值 v 被规范化为 v’,由下式计算:
分箱离散化
分箱的重要性及其优势: 1、离散特征的增加和减少都很容易,易于模型的快速迭代; 2、稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展; 3、离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年 龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300 岁”会给模型造成很大的干扰; 4、特征离散化后,模型会更稳定,比如如果对用户年龄离散化, 20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完 全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分 区间是门学问; 5、特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模 型过拟合的风险。 6、可以将缺失作为独立的一类带入模型。
异常值的处理
删除 不处理 用平均值代替 视为缺失值
格式内容清洗
时间、日期、数值、全半角等显示格式不 一致
内容中有不该存在的字符 内容与该字段应有内容不符 数据的编码格式和语义分析
逻辑错误清洗
去重
大数据中去重要特别小心,很多时候大数据的算法并 不希望去重,甚至还会自动生成很多重合数据。一是 人为判断的重复不见得是真正的重复,被认为重复而 实际上不重复的数据往往表达了真实世界中的有用信 息;二是某些场景下数据的重复反而是大数据学习的 需要,比如深度学习中的对抗设计,反而需要去生成 非真实采集的重复数据。
通过直方图分析离散化*
左图 使用单值桶的price直方图—每个桶代表一个price值/ 频率对 右图 price的等宽直方图,值被聚集使得每个桶都有一致的 宽度即10美元
通过聚类、决策树和相关分析离散化
聚类分析是一种流行的离散化方法。通过将属性A的值划分成簇 或组,聚类算法可以用来离散化数值属性A。聚类考虑A的分布以及 数据点的邻近性,因此可以产生高质量的离散化结果。
其中,j 是使得 Max(|v’|) < 1 的最小整数
分箱离散化
数据分箱是下列情形下常用的方法:
1.某些数值自变量在测量时存在随机误差,需要对数值进行 平滑以消除噪音。
2.有些数值自变量有大量不重复的取值,对于使用<、>、= 等基本操作符的算法(如决策树)而言,如果能减少这些不 重复取值的个数,就能提高算法的速度。
逻辑错误清洗
修正矛盾内容
有些字段是可以互相验证的,举例:身份证号是 1101031980XXXXXXXX,然后年龄填18岁,我们虽 然理解人家永远18岁的想法,但得知真实年龄可以给 用户提供更好的服务啊。在这种时候,需要根据字段 的数据来源,来判定哪个字段提供的信息更为可靠, 去除或重构不可靠的字段。
数据规范化(公式写法2)
1、min-max normalization:
v is input value new_max and new_min 是线性变换后的区间长度, 最小 -最大规范化就是对原始数据区间进行线性变换。
数据规范化(公式写法2)
2、z-score normalization:
A 的 值 v 被规范化为 v’
标称数据的概念分层产生
念分层可以用来把数据变换到多个粒度值。
下面我们研究四种标称数据概念分层的产生方法。
(1)由用户或专家在模式级显式地说明属性的部分序:通常,分 类属性或维的概念分层涉及一组属性。用户或专家在模式级通过说明 属性的部分序或全序,可以很容易地定义概念分层。例如,关系数据 库或数据仓库的维location可能包含如下一组属性:street,city, province_or_state和country。可以在模式级说明一个全序,如 street<city <province_or_state <country,来定义分层结构。
ETL是构建数据仓库的重要一环,用户从数据源 抽取出所需的数据,经过数据清洗,最终按照预先 定义好的数据仓库模型,将数据加载到数据仓库 中去。通常在泛指意义上,这就是数据集成。
传统数据仓库的挑战
具体的挑战: 计算性能成瓶颈 硬件成本投入大、利用率低 扩展性面临挑战
实用的大数据集成系统必须具有以下要素: 云化ETL 大规模数据的图形化开发处理能力
冗余:一个属性如果能由另一个或另一组 属性“导出”,则这个属性可能是冗余的 。有些冗余可以被相关分析检测,对于标 称数据,我们使用卡方检验,对于数值属 性,一般使用相关系数或协方差;
工业界对数据集成的定义
在工业界,这个把数据从来源端经过抽取( extract)、转换(transform)、加载(load)至 目的端的过程称之为ETL,是英文 ExtractTransform-Load的缩写。ETL一词较常用在数据 仓库,但其对象并不限于数据仓库。
相关主题