数据挖掘中的数据清洗方法大全

作者:章华燕

编辑:黄俊嘉

在数据挖掘领域,经常会遇到的情况是挖掘出来的特征数据存在各种异常情况,如数据缺失 、数据值异常 等。对于这些情况,如果不加以处理,那么会直接影响到最终挖掘模型建立后的使用效果,甚至是使得最终的模型失效,任务失败。所以对于数据挖掘工程师来说,掌握必要的数据清洗方法是很有必要的!

接下来本文就依次讲解如何处理

数据值缺失数据值异常

两种情况的处理。

1. 缺失值的处理

如下图所示,当我们在进行数据挖掘的过程中,往往会出现如下图所示的情况:某些样本的个别属性出现缺失的情况。

那么出现数据缺失的情况,我们应该怎么处理呢?

1.1 删除缺失值

当样本数很多的时候,并且出现缺失值的样本在整个的样本的比例相对较小,这种情况下,我们可以使用最简单有效的方法处理缺失值的情况。那就是将出现有缺失值的样本直接丢弃。这是一种很常用的策略。

缺点: 改变了样本的数据分布,并且对于缺失值过多的情况无法适用。

1.2 均值填补法

根据缺失值的属性相关系数最大的那个属性把数据分成几个组,然后分别计算每个组的均值,把这些均值放入到缺失的数值里面就可以了。

缺点: 改变了数据的分布,还有就是有的优化问题会对方差优化,这样会让对方差优化问题变得不准确。

1.3 热卡填补法

对于一个包含缺失值的变量,热卡填充法的做法是:在数据库中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。最常见的是使用相关系数矩阵来确定哪个变量(如变量Y)与缺失值所在变量(如变量X)最相关。然后把所有变量按Y的取值大小进行排序。那么变量X的缺失值就可以用排在缺失值前的那个个案的数据来代替了。

缺点: 太麻烦。与均值替换法相比,利用热卡填充法插补数据后,其变量的标准差与插补前比较接近。但在回归方程中,使用热卡填充法容易使得回归方程的误差增大,参数估计变得不稳定,而且这种方法使用不便,比较耗时。

1.4 最近距离决定填补法

假设现在为时间y,前一段时间为时间x,然后根据x的值去把y的值填补好。

缺点: 一般就是在时间因素决定不显著的时候,比如一天的气温,一般不会突然降到很低,然后第二天就升的很高。但是对时间影响比较大的,可能就不可以了。

1.5 回归填补法

假设我y属性存在部分缺失值,然后我知道x属性。然后我用回归方法对没有缺失的样本进行训练模型,再把这个值的x属性带进去,对这个y属性进行预测,然后填补到缺失处。当然,这里的x属性不一定是一个属性,也可以是一个属性组,这样能够减少单个属性与y属性之间的相关性影响。

缺点: 由于是根据x属性预测y属性,这样会让属性之间的相关性变大。这可能会影响最终模型的训练。

1.6 多重填补方法(M-试探法)

它是基于贝叶斯理论的基础上,然后用EM算法来实现对缺失值进行处理的算法。对每一个缺失值都给M个缺失值,这样数据集就会变成M个,然后用相同的方法对这M个样本集进行处理,得到M个处理结果,总和这M个结果,最终得到对目标变量的估计。其实这个方法很简单,就是我尽量多做模型,然后找出最好的,我就叫它M-试探法吧。

1.7 k-最近邻法

先根绝欧氏距离和马氏距离函数来确定具有缺失值数据最近的k个元祖,然后将这个k个值加权(权重一般是距离的比值吧)平均来估计缺失值。

1.8 有序最近邻法

这个方法是在K-最近邻法的基础上,根据属性的缺失率进行排序,从缺失率最小的进行填补。这样做的好处是讲算法处理后的数据也加入到对新的缺失值的计算中,这样即使丢了很多数据,依然会有很好的效果。在这里需要注意的是,欧式距离不考虑各个变量之间的相关性,这样可能会使缺失值的估计不是最佳的情况,所以一般都是用马氏距离进行最近邻法的计算。

1.9 基于贝叶斯的方法

就是分别将缺失的属性作为预测项,然后根据最简单的贝叶斯方法,对这个预测项进行预测。但是这个方法有一个缺点,就是说不能把之前的预测出来的数据加入到样本集,会丢失一些数据,会影响到预测。所以现在就是对属性值进行重要性排序,然后把重要的先预测出来,在加入新的数据集,再用新的数据集预测第二个重要的属性,这样一直处理到最后为止。

2. 异常值的检测与处理

未完待续

敬请期待

原文发布于微信公众号 - 机器学习算法全栈工程师(Jeemy110)

原文发表时间:2017-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量化投资与机器学习

深度学习Matlab工具箱代码注释之cnnsetup.m

%%========================================================================= %...

2665
来自专栏华章科技

三天速成!香港科技大学TensorFlow课件分享

该教程第一天先介绍了深度学习和机器学习的潜力与基本概念,而后便开始探讨深度学习框架 TensorFlow。首先我们将学到如何安装 TensorFlow,其实我们...

782
来自专栏JasonhavenDai

自然语言处理基础知识1. 分词(Word Cut)2. 词性标注(POS Tag)3.自动标注4.文本分类5.评估6.从文本提取信息7.分析句子结构《python自然语言处理》各章总结:

1. 分词(Word Cut) 英文:单词组成句子,单词之间由空格隔开 中文:字、词、句、段、篇 词:有意义的字组合 分词:将不同的词分隔开,将句子分解为...

7776
来自专栏奇点大数据

再免费多看一章--最近质心

算法很简单,取训练样本每种类别的平均值当做聚类中心点,待分类的样本离哪个中心点近就归属于哪个聚类 。 ? 在《白话大数据与机器学习》里使用了sklearn里的N...

3358
来自专栏AI星球

机器学习 | 聚类分析总结 & 实战解析

聚类分析是没有给定划分类别的情况下,根据样本相似度进行样本分组的一种方法,是一种非监督的学习算法。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度...

992
来自专栏梦里茶室

TensorFlow深度学习笔记 循环神经网络实践

加载数据 使用text8作为训练的文本数据集 text8中只包含27种字符:小写的从a到z,以及空格符。如果把它打出来,读起来就像是去掉了所有标点的wikip...

2455
来自专栏用户2442861的专栏

聚类算法原理及python实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

694
来自专栏AI研习社

干货 | 一篇文章教你用TensorFlow写名著

前言 最近看完了 LSTM 的一些外文资料,主要参考了 Colah 的 blog以及 Andrej Karpathy blog的一些关于 RNN 和 LST...

3575
来自专栏IT派

一文带你入门Tensorflow

导语:此文编译自FCC(FreeCodeCamp),作者为Déborah Mesquita,该作者利用神经网络和TensorFlow进行了机器文本分类,并提出了...

4169
来自专栏决胜机器学习

机器学习(四) ——梯度下降算法解释以及求解θ

机器学习(四)——梯度下降算法解释以及求解θ (原创内容,转载请注明来源,谢谢) (本文接 机器学习(二) 的内容) 一、解释梯度算法 ? ? 梯度算法公式...

3356

扫码关注云+社区