理想的状态下,数据都是直接可用、规律的,但现实中的数据总会有各种问题,比如:数据缺失、格式不一致、含噪声(数据中存在错误/异常值)、数据不一致(不能相互验证)等……在数据分析的工作中,数据处理占了大部分时间。数据预处理做得好,往往让我们的数据分析工作事半功倍。就像我的统计学第二篇数据特征及质量中说的,数据的准确是重中之重,采用异常数据进行描述、推断得到的结论误导给分析判断的隐患不可小觑。

本篇主要分析数据缺失的原因、类型、影响、解决方法等。

一 数据缺失的原因

①有些信息暂时无法获取;如:基金等金融产品的收益有后滞性,工作日当日的收益下一个工作日才能看到;

②有些信息是被遗漏的;可能是输入时认为不重要、忘记填写了、非强制填写或对数据理解错误等人为因素而遗漏,也可能由于数据采集设备的故障、传输媒体的故障、处理/存储介质的故障等数据传输处理过程中每个环节出错都可能会导致丢失;

③有些对象的某个或某些属性不可用;如:婴儿的工资;

④有些信息(被认为)是不重要的,与要分析的内容不相关;如:你今天吃什么和美国2020年总统选举结果没有关系;

⑤获取这些信息的代价太大;如:每年全国人口普查;

⑥系统实时性能要求较高,即要求得到这些信息前迅速做出判断或决策。

二 数据缺失机制

①完全随机缺失(missing completely at random,MCAR):指数据的缺失是完全随机的,不依赖于任何不完全变量或完全变量,不影响样本的无偏性。如:家庭地址缺失;

②随机缺失(missing at random,MAR):指数据的缺失不是完全随机的,即该类数据的缺失依赖于其他完全变量。如:财务数据缺失情况与企业的大小有关;

③非随机缺失(missing not at random,MNAR):指数据的缺失与不完全变量自身的取值有关。如:高收入人群的不原意提供家庭收入。

正确判断缺失值的类型会极大方便后续工作,这种能力也需要积累经验和熟悉业务。①②情况下,可以根据情况删除缺失值的数据,随机缺失可以通过已知变量估计缺失值;③情况下,删除含缺失值的数据可能会导致模型出现偏差,填充数据时也需谨慎。

三 缺失值处理的必要性

数据缺失在许多研究领域都是一个复杂的问题,对数据挖掘来说,缺失值的存在,造成了以下影响:

①使系统丢失大量的有用信息;

②系统中所表现出的不确定性更加显著,蕴涵的确定性成分更难把握;

③包含空值的数据会使挖掘过程陷入混乱,导致不可靠的输出 。

数据挖掘算法本身更致力于避免数据过分拟合所建的模型,这一特性使得它难以通过自身的算法去很好地处理不完整数据。因此,缺失值需要通过专门的方法进行推导、填充等,以减少数据挖掘算法与实际应用之间的差距。

四 缺失值的处理方法

缺失值一般有以上3类处理方法,其中删除在包含缺失值的属性含有大量缺失值、包含少量有效值时有效;若变量的缺失值较高(>80%),覆盖率较低,且重要性较低,可以直接删除变量。

(1)删除

①删除

将存在遗漏信息属性值的样本(行)或特征(列)删除,从而得到一个完整的数据表。

优点:简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与初始数据集的数据量相比较小的情况下非常有效。

缺点:当缺失数据所占比例较大,特别当遗漏数据非随机分布时,这种方法可能导致数据发生偏离,从而引出错误的结论。

②成对删除

在重要变量存在的情况下,成对删除只会删除相对不重要的变量行,尽可能保证充足的数据。

优点:能够帮助增强分析效果。

缺点:它假设缺失数据服从完全随机丢失(MCAR),如果使用此方法,最终模型的不同部分就会得到不同数量的观测值,从而使得模型解释非常困难。

(2)插补(重点)

1.人工填写(filling manually)

当你对自己手头的数据集足够了解时,可以选择自己填写缺失值。但该方法很费时,当数据规模很大、空值很多的时候,该方法不可行,一般不推荐

2.特殊值填充(Treating Missing Attribute values as Special values)

将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。一般作为临时填充或中间过程。有时可能导致严重的数据偏离,一般不推荐

3.平均值填充(Mean/Mode Completer)

将初始数据集中的属性分为数值属性、非数值属性来分别进行处理。

如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值; 如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。

与其相似的另一种方法叫条件平均值填充法(Conditional Mean Completer)。在该方法中,用于求平均的值并不是从数据集的所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推测缺失值。

4.热卡填充(Hot deck imputation,或就近补齐)

对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计;它的缺点在于难以定义相似标准,主观因素较多。

5.K最近距离邻法(K-means clustering)

先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。

在本方法中,先根据某种距离度量选择出k个“邻居”,他们的均值就被用于插补缺失数据。这个方法要求我们选择k的值(最近邻居的数量),以及距离度量。KNN既可以预测离散属性(k近邻中最常见的值)也可以预测连续属性(k近邻的均值)。

根据数据类型的不同,距离度量也不尽相同:

(1)连续数据:最常用的距离度量有欧氏距离,曼哈顿距离以及余弦距离。

(2)分类数据:汉明(Hamming)距离在这种情况比较常用。对于所有分类属性的取值,如果两个数据点的值不同,则距离加一。汉明距离实际上与属性间不同取值的数量一致。

KNN算法最吸引人的特点之一是:它易于理解也易于实现。其非参数的特性在某些数据非常“不寻常”的情况下非常有优势。

KNN算法的一个明显缺点是:在分析大型数据集时会变得非常耗时,因为它会在整个数据集中搜索相似数据点。此外,在高维数据集中,最近与最远邻居之间的差别非常小,因此KNN的准确性会降低。

6.使用所有可能的值填充(Assigning All Possible values of the Attribute)

用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,一般不推荐

7.回归(Regression)

基于完整的数据集,建立回归方程,或利用机器学习中的回归算法。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关时会导致有偏差的估计,较常用。

但是要注意!!!防止过拟合

8.期望值最大化方法(Expectation maximization,EM)

EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。

9.多重插补(Multiple Imputation,MI)

多重填补方法分为三个步骤:

(1)插补:将不完整数据集缺失的观测行估算填充m次。请注意,填充值是从某种分布中提取的。模拟随机抽取并不包含模型参数的不确定性。更好的方法是采用马尔科夫链蒙特卡洛模拟(MCMC,Markov Chain Monte Carlo Simulation)。这一步骤将生成m个完整的数据集。

(2)分析:分别对每一个(m个)完整数据集进行分析。

(3)合并:对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。

10.C4.5方法

通过寻找属性间的关系来对遗失值填充。它寻找具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。

(在上述方法中,比较推荐是的多重插补回归。针对某项特征数据大量缺失时,随机森林回归十分有效;当数据存在明显的线性关系时,线性回归也有很好的效果。)

(3)不处理缺失值

不处理缺失值,直接在包含空值的数据上进行数据挖掘的方法。其中包括: 贝叶斯网络人工神经网络等。

贝叶斯网络提供了一种自然的表示变量间因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。人工神经网络也类似。

有效值和峰峰值的关系_4.数据预处理—缺失值处理(二)相关推荐

  1. 超级超级详细的实体关系抽取数据预处理代码详解

    超级超级详细的实体关系抽取数据预处理代码详解 由于本人是代码小白,在学习代码过程中会出现很多的问题,所以需要一直记录自己出现的问题以及解决办法. 废话不多说,直接上代码!!! 一.data_proce ...

  2. 数据预处理-缺失值处理

    数据预处理-缺失值处理 缺失值类型 不完全变量 完全随机缺失 随机缺失 完全非随机缺失 缺失值补全 1-均值查补 2-同类均值插补 3-建模预测 4-高维映射 5-多重插补 6-手动插补 数据预处理完 ...

  3. 数据预处理+缺失值处理方案+Missing Value+pandas+缺失值填充方法、方案

    数据预处理+缺失值处理方案+Missing Value+pandas+缺失值填充方法.方案 缺失值+sklearn from sklearn.preprocessing import Imputer ...

  4. 二、数据预处理——缺失值处理

    二.数据预处理--缺失值处理 点击标题即可获取文章相关的源代码文件哟! 机器学习和数据挖掘中所使用的数据,永远不可能是完美的.很多特征,对于分析和建模来说意义非凡,但对于实际收集数据的人却不是如此,因 ...

  5. 大数据分析必须要会的数据预处理操作(二)!!!

    数学建模美赛大数据题必须要会的数据预处理操作(二)!!! 文章目录 数学建模美赛大数据题必须要会的数据预处理操作(二)!!! 创建DataFrame 数据显示限制 Series操作 创建Series ...

  6. 数据预处理--缺失值填补《菜菜学习笔记》

    目录 引言 一.缺失值填补 impute.SimpleImputer函数 1.1 Simplelmputer四个重要参数 1.2 用各个值填补演示 1.3 在这里我们使用中位数填补Age,用众数填补E ...

  7. [Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念]

    前言 系列文章目录 [Python]目录 视频及资料和课件 链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234 提取码:1234 文 ...

  8. python预处理缺失值_[Scikit-Learn] - 数据预处理 - 缺失值(Missing Value)处理

    reference : http://www.cnblogs.com/chaosimple/p/4153158.html 关于缺失值(missing value)的处理 在sklearn的prepro ...

  9. python数据预处理_Python数据预处理——缺失值、重复值

    一.缺失值处理 isnull( ) .fillna( ) .dropna( ) (1)查看 缺失 查看数据集缺失,返回每列的缺失个数 df.isnull().sum() 查看某字段有缺失的行 df[d ...

最新文章

  1. 四种JOIN简单实例
  2. [WPF]winfom中ShowWPF新窗口时TextBox等控件无法输入问题解决方法 .
  3. MongoDB shell 操作
  4. OpenGL Indirect Culling间接剔除实例
  5. 应用密码学的笑话之MD5+Salt不安全
  6. 汽车诊断之UDS入门-DTC(Diagnostic Trouble Code)相关服务0x14,0x85
  7. java digester_使用digester解析XML配置文件
  8. 为什么哪些90后程序员年薪50万+,他们经历了啥?
  9. 输入任意一个字符串,判断这个字符串是否是回文,回文示例: 上海自来水来自海上
  10. windet插入图片的大小_LaTeX图片插入
  11. 一些心理上的优势状态和劣势状态
  12. 关于“无法读取 KSR data-disk 1 扇区。。”蓝屏问题
  13. HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者
  14. 百度炮轰Google搜索不创新 拟全力进攻云搜索
  15. 【H3C】pc+交换机+路由器+连外网
  16. swift学习——点点滴滴——3~著名算法
  17. 小张张带你学习css美化网页,让你在学习的道路上不再孤单
  18. html创建目录6,VB6选择文件夹的时候有新建文件夹按钮
  19. Django框架介绍之cookie与session
  20. Anylogic建立无标度网络

热门文章

  1. iptables防火墙火墙服务
  2. 使用Axis2来构建Web Service客户端
  3. c# 使用GDAL处理大图
  4. 树莓派:文本编辑器与文件
  5. mysql format 格式化 返回值
  6. 判斷作業系統為 64bit 或 32bit z
  7. PTA-6-3 使用函数的选择法排序 (25分)(C语言)
  8. C++语言基础 —— 数组
  9. 求最长不下降序列(信息学奥赛一本通-T1259)
  10. 计算(信息学奥赛一本通-T1356)