数据清理| 学习笔记

简介: 快速学习数据清理。

开发者学堂课程【高校精品课-北京理工大学-数据仓库与数据挖掘(上):数据清理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/921/detail/15630


数据清理

 

内容介绍

一、脏数据的体现

二、数据清理的方法

 

一、脏数据的体现

数据清理是数据预处理的重要步骤。现实世界中的数据是脏数据。脏数据主要体现在数据是不完整,有错误,不一致,有噪音,甚至是有异常的问题。我们现在分别来看一下脏数据有哪些体现。

1、数据不完整

数据不完整,可能是数据缺少属性值。也可能是缺少某个感兴趣的属性。甚至是数据只包含聚合后的数据,而丢失了原始数据。

2、数据中存在错误

现实世界中的数据是脏数据的第二种体现,主要指的是数据中存在错误。比如说我们的酬金取值为负十,很显然负十是不属于这个酬金的范围。

3、数据的不一致性

我们的年龄有一个取值是42,我们同时还有生日的取值。因为我们知道通过生日是可以推测出年龄的。那么由生日推测出的年龄跟我们年龄的取值不一致,那么这种就是一种不一致的情况。此外比如说我们对一些等级的取值,我们可以用123表示,也可以用 ABC 表示。那么这也造成了数据取值的不一致。

由于数据挖掘中使用的数据是来源于多个不同数据源的。有可能同一条数据记录在不同的数据表中取值是不一样的,造成了记录的冲突。

我们下面来看一下现实世界中这样的一些数据不完整,存在错误和不一致的情况。首先在字段范围可能会存在空置的情况。

image.png

比如说我们的电话号码。现在无法获得这个顾客的电话号码,那么我们可以用一个缺省值去填充。那其次可能由于书写错误,我们把这个 city 的名称输错了。此外有可能我们还会用一个模糊或者是含义不清的名词。对这个属性值进行填充,比如说这个职位是等于这个 DBprog ,那么这个 DBprog 是什么含义我们并不清楚。那此外还有可能我们对一个数据段输入了多个数据传值。例如我们只需要在企业名称中输入企业的名称,但是我们有可能还输入了这个企业的邮编和他的地址。最后可能是字段的输入错误。比如说我们要输入这个城市的名称,但是我们输出了他的省份的名称。此外在记录方面呢,可能会出现一些违反属性依赖的问题。比如说这个。数据记录中有 city 的属性。还有他的邮编的属性。但是我们通过这个邮编查到。她的城市名称和我们的城市名称可能是不一致。此外在数据的类型中也还可能存在错误。比如说有冲突或者是重复输入的问题。那么这些都是在现实的数据中经常会发现的一些问题。在现实世界中除了有不一致错误,和不完整的情况。

4、噪音和异常现象

首先我们来看一下噪音。噪音就指的是测量错误的随机部分。比如说像我们的 PPT 中。

image.png

这边的图展示的是一个关于一段语音的记录。那如果这段语音是在一个嘈杂的环境中。那么我们得到的记录可能就是这样的形式也就是带有一些噪音的。

我们再来了解一下脏数据中的异常数据。异常数据就指的是这些数据的行为和数据集中,大部分的数据行为有明显的差异。那么在有一些数据挖掘任务中,把异常就是当做噪音点直接删掉。但是在有一些数据挖掘中,我们认为异常是很重要的。他可能能告诉我们一些重要的信息,比如说像信用卡欺诈检测中或者是在入侵检测中在这样的一些数据挖掘任务中发现的异常都是非常重要的。由于数据中存在不完整,错误不一致,噪音和异常的问题。导致我们使用的数据质量较差。在数据质量较差的数据上进行数据挖掘。往往会得到比较不理想的数据挖掘结果。

比如在银行贷款业务中,我们需要建立分类模型用于预测申请贷款人员的信用。如果我们使用的数据质量较差,就有可能去否决一些信用较好的人缘的贷款申请。而批准一些有违约记录人的贷款申请。这是因为现实世界中的数据是脏数据,就需要我们使用数据清理。把数据变成满足数据质量要求的干净数据。

 

二、数据清理的方法

数据清理主要包括处理缺失数据,平滑噪音数据,识别,或者移除异常点,以及解决数据不一致的问题。

image.png

数据清理主要包含手动清理和自动清理两种。由于现实世界中数据规模较大。我们往往是利用一些业务规则,清理算法和清理规则,实现自动清理。我们下面来详细的介绍,在数据清理中,经常使用到的一些数据清理方法。首先我们来了解一下处理异常值的方法。处理异常值第一种方法就是忽略元组。

当我们数据中的缺失值,如果比较少的时候,我们可以使用这种方法。但是如果我们的数据中缺失的数据比较多,采用这种方法就会导致我们的数据,极度稀疏。因此。对于缺失数据比例比较高的数据。我们往往使用插补的方法。插补的方法方法有很多种。比如。我们可以用均值中位数和众数进行插补。

那么我们还可以用一个固定的值进行插补。比使用均值中位数,众数,以及固定值,比较更准确的一个方法,就是可以用一个最近邻的插补方法进行插补。我们可以计算和缺失值最相关的这样的一个记录,用这样的一个记录的属性值,来对我们的缺失值进行插补。最后一种呢就是使用最可能的值进行插补,那么我们可以利用一些回归 VS 预测。等一些数据挖掘方法去预测我们的缺失值。然后进行插补。在了解了如何处理缺失数据之后,我们来看一下如何处理异常点。对于异常点的处理第一步,首先是要去识别异常。

那识别异常,我们可以用一些前面我们介绍过的,比如说这样的一个3  sigma 原则。以及镶嵌图甚至还有聚类算法,以及其他的一些异常检测算法。在检测到异常之后,我们可以对异常进行处理。那我们在这张表中列举了异常经处理的一些方法。如果这个异常比较少,我们可以直接把含有异常数据的记录删掉。此外我们还可以把异常当做缺失值。用我们刚才讲的处理缺失值的方法进行处理。此外我们还可以用平均值对我们发现的异常进行修正。那最后一种方法就是不处理。好我们再来看一下在数据清理中如何处理噪音。

在数据清理中,我们一般是对噪音进行平滑。平滑噪音的方法有很多。比如说分箱。

我们这里通过一个例子向大家介绍,如何用分箱的方法进行数据的平滑。比如说我们有一个。产品的价格。首先在分享前要对它进行排序。假设我们要把它分为三箱,我们就将排序后的数据分为三组数据。然后对于分箱后的数据,我们可以用这个箱的平均值。或者是用箱的边界值去平滑。

image.png

比如。在这里我们就是用这个箱的平均值去平滑。对于第一组数据。4,8,15。我们就可以用它的平均值9去平滑这一组数据。那么用边界值去平滑又分为两种。那么用边界值平滑,主要是保留这个箱的两端的数据。中间的数据根据他离上端或者下端的距离来进行调整。比如说像我们的第一组数据,4 ,8,15。我们保留两端的数据是和食物。中间的这个数据8,由于8离它的上端4距离比较近。所以就把这个八用四进行平滑。这个就是用。分享的方法,对数据进行平滑,从而消除噪音。我们还可以用回归的方法进行噪音的处理。比如说像 ppt 上所示。

image.png

这幅图展示的是具有年龄和身高的两个属性的一组数据。其中蓝色的点表示的是男性。红色点代表是女性。我们可以用一个一元线性回归模型去模拟我们的数据。模拟之后我们就可以用其中的一个属性去预测另外一个属性。从而达到平滑噪音的效果,那么处理噪音的第三种方法就是用聚类。比如说像我们 ppt 上面。

image.png

我们可以使用一些聚类算法,比如说像 db scan 算法。用它去识别我们数据中的噪音。然后把这些噪音删除掉。在这个途中我们有一个点就是这个紫色的这个点。那么就是通过 db scan  算法识别出来的噪音,我们把这个噪音把它删除就可以了。

相关文章
|
7月前
非常实用的清理buffcache小脚本
非常实用的清理buffcache小脚本
|
2天前
|
XML SQL 运维
关于日志的清理
关于日志的清理
|
11天前
|
弹性计算 运维 Shell
自动清理临时文件
【4月更文挑战第30天】
14 0
|
10月前
|
消息中间件 关系型数据库 Shell
记录贴:sentry磁盘占用过大如何清理?
记录贴:sentry磁盘占用过大如何清理?
860 0
|
缓存 NoSQL Redis
Redis缓存清理
Redis缓存清理
136 0
|
消息中间件 存储 RocketMQ
删除过期文件机制分析|学习笔记
快速学习删除过期文件机制分析
184 0
|
监控 Shell