机器学习实战 | 数据探索(缺失值处理)

点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接

接着上一篇:《机器学习实战-数据探索》介绍,机器学习更多内容可以关注github项目:machine learning(https://github.com/jacksu/machine-learning) 《机器学习实战-数据探索》介绍了1、变量识别;2、单变量分析;3、双变量分析,现在接着介绍缺失值处理。

为什么需要处理缺失值呢?

训练数据集中缺少的数据可以减少模型的拟合,或者可能导致模型偏差,因为没有正确地分析变量的行为和关系,可能导致错误的预测或分类。

Data_Exploration_2_11.png

注意上图中缺失值:在左侧的情况下,没有处理缺失值, 男性打板球的机会高于女性。 另一方面,如果看看第二个表,其中显示了处理缺失值后的数据(基于性别),我们可以看到女性与男性相比有较高的打板球的机会。

为什么会有缺失值呢?

前面说明了在数据集中处理缺失值的重要性, 现在来确定发生这些缺失值的原因,主要有以下两个阶段:

1、数据提取(Data Extraction)

提取过程可能有问题,在这种情况下,应该使用数据监护检查数据的准确性, 一些散列程序也可以用来确保数据提取的正确性,比较容易纠正(数据提取主要在NLP或者图像邻域,我现在理解不到位,后面补充)。

2、数据采集(Data collection)

数据采集时发生的错误,很难纠正,主要分为以下四种:

1、Missing completely at random

即所有观测值的缺失变量的概率相同。 例如:数据收集过程的受访者决定在抛出一个硬币后,宣布他们的收入。 如果发生,受访者宣布他的收入,反之亦然,这样,每个观察值,具有相同概率的缺失值。

2、Missing at random

即随机丢失变量概率,因其他输入变量的不同值或类别而变化。 例如:我们收集年龄,女性相比男性,具有较高的缺失值。

3、缺失值依赖于不可观察的预测变量

即缺失值不是随机的并且与未查看的输入变量相关。 例如:在一项医学研究中,如果特定诊断导致不适,那么研究中有更多的辍学机会。 这个缺失值不是随机的,除非我们将“不适”作为所有患者的输入变量。

4、缺失取决于缺失值本身

即缺失值的概率与缺失值本身直接相关。 例如:拥有较高或较低收入的人士,可能让其提供收入证明,有些不愿意。

缺失值有哪些处理方法呢?

1、删除

Data_Exploration_Missing_value

1、整条记录删除(list wise deletion) 删除任何变量丢失的观察结果,这种方法的主要优点之一是简单,但是这种方法降低了模型的准确性,因为它减少了样本大小。

2、删除对应的缺失值(In pair wise deletion) 这种方法的优点是,它保留了许多可用于分析的情况,缺点之一是对不同的变量使用不同的样本大小。

3、当缺失值为Missing completely at random,使用删除方法,否则可能会偏离模型输出。

2、Mean/Mode/Median估计

目标是使用可以在数据集的有效值中识别的已知关系来辅助估计缺失值。

Mean/Mode/Median是最常用的方法之一,包括通过该变量的所有已知值的mean或Median(定量属性)或Mode(定性属性)来替换给定属性的缺失数据,有以下两种方式:

1、广义插补(Generalized Imputation) 在这种情况下,我们计算该变量的所有非缺失值的mean或Median,然后用Mean或Median替换缺失值。 如上表所示,变量“人力”缺失值,取所有非缺失值的平均值(28.33)替换缺失值。

2、相似插补(Similar case Imputation) 如上表,分别计算性别“男性”(29.75)和“女性”(25)的平均值,然后根据性别替换缺失值,对于“男”的,以29.75代替缺失值,“女”的以“25”代替。

3、如果missing value占总体的比例非常小,那么直接填入Mean、Mode或者Median

3、预测模型(Prediction Model)

预测模型是处理缺失值的复杂方法之一, 通过创建一个预测模型来估计替代缺失值。 在这种情况下,我们将数据集分为两组:一组没有变量的缺失值,另一组有缺少值, 第一个数据集成为模型的训练数据集,而具有缺失值的第二个数据集是测试数据集,变量与缺失值被视为目标变量。 接下来,我们创建一个模型,根据训练数据集的其他属性预测目标变量,并填充测试数据集的缺失值。我们可以使用回归,方差分析,逻辑回归和各种建模技术来执行此操作。 这种方法有两个缺点:

模型估计值通常比真实值更好

如果与数据集中的属性和缺少值的属性没有关系,则该模型对于估计缺失值将不精确。

如果missing value所占比例不算小也不算大时,采用该方法。

4、KNN

此方法使用与值丢失的属性最相似的属性来估计属性的缺失值,通过距离函数确定两个属性的相似度。 具有如下优点和缺点:

优点

KNN可以预测定性和定量属性 不需要为缺少数据的每个属性创建预测模型 具有多个缺失值的属性可以轻松处理 数据的相关结构被考虑在内

缺点

KNN算法在分析大数据方面非常耗时, 搜索所有数据集,寻找最相似的实例。

k值的选择是非常关键的。 k较高脱显不了显著性属性,而较低的k会丢失重要属性。

注意: 如果missing value所占比例大,那么直接将miss value当做一种特殊的情况,另取一个值填入。

处理缺失值后,下一篇介绍异常值处理。

参考

https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java 源码分析

动态规划

​ 动态规划一般来说和分治有点类似都是让他们去处理相同的子问题,但是在动态规划里面你会遇到更多的相同子问题。然后我们就会导致很多的重复计算,所以一般我们可...

2785
来自专栏CreateAMind

keras中文doc之三

前面介绍了keras文档一二 keras中文文档, keras中文-快速开始Sequential模型

712
来自专栏PPV课数据科学社区

缺失值的处理方法

对于数据挖掘和分析人员来说,数据准备(Data Preparation,包括数据的抽取、清洗、转换和集成)常常占据了70%左右的工作量。而在数据准备的过程中...

3619
来自专栏Python小屋

计算Fibonacci数列第n项的第8种方法(数学推导与Python实现)

感谢山东工商学院学院厉玉蓉老师提供的完美数学推导,我在重写和整理时略加修改,比如变量替换时她喜欢用字母z,而我喜欢用x,哈哈。当然,还有另外几个小地方^_^ 本...

2765
来自专栏PPV课数据科学社区

强大的PyTorch:10分钟让你了解深度学习领域新流行的框架

摘要: 今年一月份开源的PyTorch,因为它强大的功能,它现在已经成为深度学习领域新流行框架,它的强大源于它内部有很多内置的库。本文就着重介绍了其中几种有特色...

3539
来自专栏暢的专栏

一篇文章搞懂柏林噪声算法,附代码讲解 [ 译 ]

柏林噪声是一个非常强大算法,经常用于程序生成随机内容,在游戏和其他像电影等多媒体领域广泛应用。本文以一种通俗简单的方式介绍Ken Perlin的改进版柏林噪声算...

2.5K3
来自专栏Petrichor的专栏

深度学习: BP (反向传播) 计算 & 链式法则

每个epoch: \qquad 每个batch: \qquad\qquad 每个level (n = N, … to 1,即从顶层往底层): \qq...

1314
来自专栏云时之间

对于问题的简单定义

学习此部分的目的:发现在没有单独的行动可以解决问题的时候,机器如何找到一个行动序列达到他的目标;在这部分中,通过讨论一些无信息的通用搜索算法,来比较各部分算法的...

2785
来自专栏软件开发 -- 分享 互助 成长

经典算法学习之贪心算法

贪心算法也是用来求解最优化问题的,相比较动态规划很多问题使用贪心算法更为简单和高效,但是并不是所有的最优化问题都可以使用贪心算法来解决。 贪心算法就是在每个决策...

5307
来自专栏云时之间

什么是循环神经网络

哈喽,大家好。在上一篇文章中我们简单了解了下卷积神经网络的基本介绍和基本的结构原理。一些小伙伴们给我提出了很多的指正。谢谢各位。话不多说,今天让我们来了解下什么...

2994

扫码关注云+社区