https://www.cnblogs.com/163yun/p/9518861.html
https://blog.csdn.net/jiazericky/article/details/80322225
数据清洗是将重复、多余的数据筛选清除,将缺失的数据补充完整,将错误的数据纠正或者删除,最后整理成为我们可以进一步加工、使用的数据。
所谓的数据清洗,也就是ETL处理,包含抽取Extract、转换Transform、加载load这三大法宝。在大数据挖掘过程中,面对的至少是G级别的数据量,包括用户基本数据、行为数据、交易数据、资金流数据以及第三方的数据等等。选择正确的方式来清洗特征数据极为重要,除了让你能够事半功倍,还至少能够保证在方案上是可行的。
数据清洗的一般步骤:分析数据、缺失值处理、异常值处理、去重处理、噪音数据处理。在大数据生态圈,有很多来源的数据ETL工具,但是对于公司内部来说,稳定性、安全性和成本都是必须考虑的。
一、. 探索性分析
探索性分析部分,对于整个数据来讲是获得对数据一个初步的认识以及对先验知识的一个探索分析过程,在我做相关数据挖掘的过程中,主要是利用python相关的科学计算库进行数据初步的探索,例如数据类型,缺失值,数据集规模,各特征下的数据分布情况等,并利用第三方绘图库进行直观的观察,以获取数据的基本属性与分布情况,另外,通过单变量分析与多变量分析,可以初步探索数据集中各特征之间的关系,以验证在业务分析阶段所提出的假设。
————————————————
版权声明:本文为CSDN博主「jiazericky」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiazericky/article/details/80322225
二、对于数据值缺失的处理,通常使用的方法有下面几种:
1、删除缺失值
当样本数很多的时候,并且出现缺失值的样本在整个的样本的比例相对较小,这种情况下,我们可以使用最简单有效的方法处理缺失值的情况。那就是将出现有缺失值的样本直接丢弃。这是一种很常用的策略。
2、均值填补法
根据缺失值的属性相关系数最大的那个属性把数据分成几个组,然后分别计算每个组的均值,把这些均值放入到缺失的数值里面就可以了。
3、热卡填补法
对于一个包含缺失值的变量,热卡填充法的做法是:在数据库中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。最常见的是使用相关系数矩阵来确定哪个变量(如变量Y)与缺失值所在变量(如变量X)最相关。然后把所有变量按Y的取值大小进行排序。那么变量X的缺失值就可以用排在缺失值前的那个个案的数据来代替了。
还有类似于最近距离决定填补法、回归填补法、多重填补方法、K-最近邻法、有序最近邻法、基于贝叶斯的方法等。
(
①.在缺失率少且属性重要程度低的情况下,若属性为数值型数据则根据数据分布情况简单的填充即可,例如:若数据分布均匀,则使用均值对数据进行填充即可;若数据分布倾斜,使用中位数填充即可。若属性为类别属性,则可以用一个全局常量‘Unknow’填充,但是,这样做往往效果很差,因为算法可能会将其识别为一个全新的类别,因此很少使用。
②.当缺失率高(>95%)且属性重要程度低时,直接删除该属性即可。然而在缺失值高且属性程度较高时,直接删除该属性对于算法的结果会造成很不好的影响。
③.缺失值高,属性重要程度高:主要使用的方法有插补法与建模法
(1)插补法主要有随机插补法,多重插补法,热平台插补法,以及拉格朗日插值法与牛顿插值法
1>随机插补法--从总体中随机抽取某几个样本代替缺失样本
2>多重插补法--通过变量之间的关系对缺失数据进行预测,利用蒙特卡洛方法生成多个完整的数据集,在对这些数据集进行分析,最后对分析结果进行汇总处理
3>热平台插补----指在非缺失数据集中找到一个与缺失值所在样本相似的样本(匹配样本),利用其中的观测值对缺失值进行插补。
优点:简单易行,准确率较高
缺点:变量数量较多时,通常很难找到与需要插补样本完全相同的样本。但我们可以按照某些变量将数据分层,在层中对缺失值实用均值插补
4>拉格朗日差值法和牛顿插值法
(2)建模法
可以用回归、贝叶斯、随机森林、决策树等模型对缺失数据进行预测。例如:利用数据集中其他数据的属性,可以构造一棵判定树,来预测缺失值的值。)
三、异常值通常被称为“离群点”,对于异常值的处理,通常使用的方法有下面几种:
1、简单的统计分析
拿到数据后可以对数据进行一个简单的描述性统计分析,譬如最大最小值可以用来判断这个变量的取值是否超过了合理的范围,如客户的年龄为-20岁或200岁,显然是不合常理的,为异常值。
2、3∂原则
如果数据服从正态分布,在3∂原则下,异常值为一组测定值中与平均值的偏差超过3倍标准差的值。如果数据服从正态分布,距离平均值3∂之外的值出现的概率为P(|x-u| > 3∂) <= 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。
3、箱型图分析
箱型图提供了识别异常值的一个标准:如果一个值小于QL01.5IQR或大于OU-1.5IQR的值,则被称为异常值。QL为下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR为四分位数间距,是上四分位数QU与下四分位数QL的差值,包含了全部观察值的一半。箱型图判断异常值的方法以四分位数和四分位距为基础,四分位数具有鲁棒性:25%的数据可以变得任意远并且不会干扰四分位数,所以异常值不能对这个标准施加影响。因此箱型图识别异常值比较客观,在识别异常值时有一定的优越性。
4、基于模型检测
首先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇的集合,则异常是不显著属于任何簇的对象;在使用回归模型时,异常是相对远离预测值的对象
优缺点:1.有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;2.对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。
5、基于距离
通常可以在对象之间定义邻近性度量,异常对象是那些远离其他对象的对象
优缺点:1.简单;2.缺点:基于邻近度的方法需要O(m2)时间,大数据集不适用;3.该方法对参数的选择也是敏感的;4.不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。
6、基于密度
当一个点的局部密度显著低于它的大部分近邻时才将其分类为离群点。适合非均匀分布的数据。
优缺点:1.给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;2.与基于距离的方法一样,这些方法必然具有O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达到O(mlogm);3.参数选择困难。虽然算法通过观察不同的k值,取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。
7、基于聚类:
基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇。离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。
优缺点:1.基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的;2.簇的定义通常是离群点的补,因此可能同时发现簇和离群点;3.产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性;4.聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。
处理异常点的方法:
1>删除异常值----明显看出是异常且数量较少可以直接删除
2>不处理---如果算法对异常值不敏感则可以不处理,但如果算法对异常值敏感,则最好不要用这种方法,如基于距离计算的一些算法,包括kmeans,knn之类的。
3>平均值替代----损失信息小,简单高效。
4>视为缺失值----可以按照处理缺失值的方法来处理
四、噪音,是被测量变量的随机误差或方差。对于噪音的处理,通常有下面的两种方法:
1、分箱法
分箱方法通过考察数据的“近邻”(即,周围的值)来光滑有序数据值。这些有序的值被分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此它进行局部光滑。
用箱均值光滑:箱中每一个值被箱中的平均值替换。
用箱中位数平滑:箱中的每一个值被箱中的中位数替换。
用箱边界平滑:箱中的最大和最小值同样被视为边界。箱中的每一个值被最近的边界值替换。
一般而言,宽度越大,光滑效果越明显。箱也可以是等宽的,其中每个箱值的区间范围是个常量。分箱也可以作为一种离散化技术使用.
2、回归法
可以用一个函数拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”直线,使得一个属性能够预测另一个。多线性回归是线性回归的扩展,它涉及多于两个属性,并且数据拟合到一个多维面。使用回归,找出适合数据的数学方程式,能够帮助消除噪声。