开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:数据理解与预处理-2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15439
数据理解与预处理-2
内容介绍
一、数据质量
二、数据预处理
三、小结
一、数据质量
1、考虑的问题
数据质量有三个问题要考虑,第一个为数据质量有哪些问题,第二个如何识别检测这些数据质量问题,第三个为对于这些数据质量怎样去处理。
2、数据质量问题的方法
实际上数据质量问题有很多,常见的有以下几种:
(1)噪声和离群点
噪声:噪声是指加入了错误数据修改了原始
左边是一个人原始的声音,这个是声音信号的数据。右边是原始的声音的信号加入噪声的数据。比如在说话的时候旁边有其他的声音干扰了,最后的混合信号中就有了噪声数据。
(2)Outliers(离群点):
离群点或异常值是指有些数据对象,其特征与数据集中其他大多数的数据对象不同。在第一讲学过的常用的数据挖掘方法中有一个异常检测。异常检测可以有聚列的方法也可以用回归的方法。
这也使用聚列的方法来发现样本方法中的离群点,大多数样本都会有和它相似的一组样本。少量样本非常独特,和数据集中大多数的样本不相似,这样的样本可能就是离群值或者是离群点。
(3)缺失值:主要是一些数据属性在样本中缺失
缺失值的原因:
①信息未被采集
②有些属性并不是适合所有样本。比如要收集人的收入,那么孩子就没有收入。
处理缺失值的方法:
①删除缺失的样本数据,整个样本数据如果有缺失的话就删除掉。
②删除缺失的值。如果某一属性有缺失的数据就删除。
当然这两种方法都比较“暴力”,在样本数据量非常大的时候,可以这样做,影响很小。如果样本数据量较少时,删除这样的数据是非常可惜的。
③样本对象和样本属性并不删除,但是在分析的过程中去忽略不使用它,其他有值的属性就可能被使用。
④用可能的值替换缺失的值,比如人群的收入当中有些人缺失了收入,那么可以用收入的平均值进行填充、替换和替代。
(4)重复数据:主要是可能有很多相同的数据样本或者样本中的某些属性是相同的。重复值是指数据样本、数据对象是重复的,或者数据对象的的大多数属性是相似的。这个造成数据值冲突的原因大多是在数据采集的时候。另外在数据合并的时候因为在此合并了一次这样容易造成数据重复。例如一个人有多个邮件地址。
对于重复数据一般通过数据清晰的方法来解决。它有一套处理过程。如果是对于数据库数据的话,数据库中有专门的语句来查重和记录,在后面的上机软件的工具中都可以处理重复数据。
二、数据预处理
因为数据质量有问题,所以要进行数据预处理。
1、数据挖掘的定义
数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但有潜在的有用信息和知识的过程。
数据前有许多的定义,就是这个数据较为复杂,较为复杂的数据要经过处理才能够使用,数据中的质量也会有些问题。
数据挖掘主要是为企业的管理者提供决策,通过数据挖掘知识来为企业带来不可估量的效益。所以数据质量有问题,数据未经过处理的话,就很难实现数据挖掘的目标。
在一个完整的数据挖掘过程中,数据预处理要花费60%~90%左右的时间,实际上现在许多的时候都要超过90%的时间。而后的挖掘工作也就是建立数据模型的时间并不是很多,仅占总工作量的10%左右。
2、数据预处理的必要性
在海量的原始数据中,存在着大量杂乱的、重复的、不完整的数据,也就是数据质量严重有问题。这会严重影响到数据挖掘算法的执行效率,甚至可能导致挖掘结果的偏差。
有这样一个英文缩写为 GIGO,I是 imput;O是 output;G为 garbage,也就是垃圾的意思。即“垃圾输入”会“垃圾输出”。所以要保证梳理数据挖掘的数据不能是“垃圾”。否则最后数据挖掘的结果肯定是有问题的。
3、数据预处理的重要性
那么再展开一下数据预处理的重要性,有这样三点。
(1)数据预处理是数据挖掘顺利进展的基础。
(2)数据预处理是挖掘过程高效率完成的基础。
(3)数据预处理的结果与数据挖掘的结果,乃至最终的商业分析结果影响巨大,也就是 GIGO。
4、数据预处理的功能
在此来看一下数据预处理有哪些方法,有哪些功能,从对不同的数据进行预处理的功能来分。数据预处理主要有四个功能,就是数据清理或者叫数据清洗,然后再有数据集成、数据变换和数据规约等四个基本功能。在实际的数据预处理过程当中,这4种功能不定都用到,而且它们的使用也没有先后顺序,某一种预处理可能先后要多次进行。
(1)数据清洗
①数据清洗的定义
数据清洗也叫做数据清理,是指发现并纠正数据文件中可识别错误的步骤,包括对噪声、缺失值、异常值的处理。也就是在数据质量挖掘中的主要的质量问题、例如噪声、缺失值、异常值等。
数据清洗及数据清理要去除或清洗源数据集中的噪声数据和无关数据,处理遗漏数据和清洗脏数据、空缺值,识别删除孤立点等。
②噪声的定义及其处理
噪声是一个测量变量中的随机错误或偏差,包括错误的值或偏离期望的孤立点值,这都是对数据会造成影响的。对于噪声数据的清洗有一个去噪的方法,可以通过分箱把数据分成不同的区间,然后降低噪声的影响。也可以通过回归或者聚类的方法来解决噪声的问题。在数据清洗中非常重要也经常要做到的缺失值的处理。
③对于缺失值的处理
对于缺失值的处理,可以把它清除掉也可以忽略,或者有一个可能的值来填充。如果做得更科学一些的话,可以使用一些模型来预测最具可能性的值,比如用回归模型,甚至用后面的决策数等等机器学习数据挖掘的方法,来估计一个最可能的值。在前面讲数据质量的时候,如果客户数据里面缺少收入的话,可以用一个平均值来填充。但是用平均收入去填充缺失收入的话,并不是很科学。因为这个客户或者这个人,他的身份,他所在的城市,他所从事的岗位,从事的职业,收入可能有较大差别,如果用全部的平均收入去填充的话,可能就不是很科学了,这里是讲的数据清洗的有关内容。
④脏数据的清洗
这个概念非常形象。洗数据,数据“脏了”才要洗,这与洗车、洗衣服的含义就很接近了。
脏数据的定义:
有不完整、不一致、不精确或者重复的数据,然后就会造成脏数据。这个数据里面有各种干扰,以至于搞不清楚这个数据的本质是什么面貌。那么这样的数据就是脏数据,在数据清洗中也要进行处理。
(2)数据集成
是指把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而提供全面的数据共享。这个比较容易理解,因为集成本身是由多个来源的数据,并把它变成一个数据提供使用。
数据集成的含义非常容易理解,但是要注意以下几个问题。
需要注意的问题:
①实体识别
在数据集成过程当中,一个实体识别的问题,就是几份数据合并在一起的方法,那一定要有一个识别的问题,它是否是同一个实体。比如有几份学生数据要集成在一起,那如果学生有统一的学号的话,同一个学号的学生就可以把数据集成在一起,所以这个统一编号很重要。人在社会上都需要一个身份证号码,对于在各个方面的数据,如果以后有条件有机会去整合的话,那整合的数据都会容易出错。
②数据冗余
第二个数据集成的问题叫数据冗余的问题,也就是同一个属性,它几个来源都有,但是它的命名不一致,可能造成认为它不是同一个属性,然后在数据里面就有了多个字段,实际上这多个字段它都代表了同一个含义。
③数据值冲突检测与处理
再一个就是数据值的冲突检测与处理问题,这个是非常常见的,就是几份数据合并在一起的时候,可能数据中相同的字段,它的值,它的单位不一样。比如各个区的房产交易中心向市的交易中心去提交数据的时候,如果每个区的对房屋的面积的单位不一样,有的用平方米,有的用平方尺,那最后各个区的数据结算在一起的时候,就会有冲突了,需要把单位进行统一。那么还有数据类型,字段长度不统一等等问题,字段长度不统一的话。如果少的字段向大的字段进行集成的话没问题;如果把长的字段,然后按照短的字段来集成的话,那就可能会丢失数据。
数据集成一般的信息系统中现在不是很多,因为现在很多单位里面都做了一个统一的完整的信息系统。
这是大学里面的一个数据集成的示意图。那么在系统构造的时候都已经用了统一的标准,比如学校中的人事处、科技处、教务处、研究生院等等,数据标准都是一样的。同一个系统一般就不会有数据集成的问题。
但是在做数据采集,数据挖掘过程当中,那数据集成还是经常遇到的。比如不同的项目组的成员去网站上抓数据,那抓的数据最终要合成在一起。比如说去抓不同的房产网站,每一个房产网站上的数据的定义不一样,那这个要合并在一起才能够完成项目。所以数据集成问题,在数据挖掘里面还是经常遇到的。前面对数据变换的初步定义,可能还不是很清楚,下面就是用在实际工作中经常用到的数据变换再介绍一下。
(3)数据变换
数据变换就是将数据转换或归并成适合数据挖掘的描述形式。对于数据变换的定义可能并不是那么容易理解,关于数据变换的具体内容会展开论述。
数据变换可以简单理解成为就是对于数据进行规范化的处理。在实际工作里面的规范化的处理主要有这样一些。
数据变换的特征:
①特征二值化
第一个是特征数据的二值化,就是将特征的值按照一个阈值把它分成两部分,一部分是零,另一部分是一。比如把客户的年龄本来是连续的年龄值进行二值化变成年龄大于35岁和年龄小于35岁。大于等于35岁可以取0,小于35岁就取1,将特征进行二值化。这也是数据离散化的一种表示,将连续的数值变成离散的值。在离散的过程中,二元化非常重要。
②特征归一化
数据变换另外一个常用的为特征规划,就是利用数学方法将特征值转换到零和一之间。比如学生的学习成绩本来是百分制的,90几分或80几分。现在不看这个具体数据,同时给它除以100,转换到零和一之间,在很多数据挖掘算法里面,把数据转变到零和一之间是非常重要的。
③One-hot 编码
数据变换,经常遇到One-hot 编码。从英文单词的 hot 上面来说,它是热。因为就一个热的,所以它又称为独热码,其一位代表一种状态,对于离散特征,有多少个状态就有多少位。例如一个属性是家庭收入,其中的状态是低中高。本来每一个客户只取一个值,要么低,要么中,要么高。现在里面放的是一个向量,由三个元素构成的向量。
如果当前客户的收入是高收入的话,那么三种要素中高的一位就是1,其他两位都是0。在数据挖掘中经常遇到 One-hot 编码,也就是保证整个状态的值不至于太多,都是在0和1 之间。状态存在的一位是一,其他的都是0,所以叫做独热编码。
比如总共有10种手写的数字0到9,手写的数字让机器进行识别,本身它的状态为0到9,用原来的状态表示为10种,现在使用 One-hot 编码的话,则只有0和1。因为总共有10个状态,现在每一个手写数字用10个元素的向量表示,按照顺序如果当前写的数字是0的话,这10个向量的值就是1后面九个0。如果当前的数字是1的话,则第一位是0,第二位是一,后面都是0。
④数据标准化
另外关于数据变换还有一些概念,如数据标准化,把数据进行规约化也是数据标准化的处理。
⑤数据离散化
数据离散化,数据二值化也是离散化的一种。
⑥数据泛化
数据泛化是关于片点城市之间的抽象,比如商品有大类、中类、小类,如果把小类的层次提升到大类,这也是一种数据变换的方法。
(4)数据归约
①定义
规约从字面上讲,“约”就是约减的意思,就是将多的变成少的。它是将数据库中的海量数据进行归约,归约后的数据仍接近于保持原数据的完整性,但数据量相对小得多,这样进行数据挖掘的性能和效率会得到很大提升。
②策略
数据归约的策略主要有数据立方体聚集、维归约、数据压缩、数值压缩、离散化和概念分层。其中比较容易理解的就是数据压缩。各位都用过压缩软件,将一个很大的视频和图片压缩的很小,但是这并不影响整个数据的质量。
三、小结
1、数据质量:哪种?如何处理?
2、数据预处理的重要性?哪个儿功能?
3、具体的数据预处理成功