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

本文探讨了数据集中缺失值处理的重要性及原因,详细介绍了常见的缺失值处理方法,包括删除、均值/众数/中位数估计、预测模型及KNN等,并提供了实际案例帮助理解。

点击“阅读原文”直接打开【北京站 | 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/


原文链接:http://www.jianshu.com/p/945ea9b8303c



往期精彩回顾


LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础


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

概要:   DevCon 实用工具是一种命令行实用工具,可以替代设备管理器。使用 DevCon,您可以启用禁用、重新启动、更新、删除查询单个设备或一组设备。DevCon 提供与开发人员有关但无法在设备管理器中看到的信息。   您可以将 DevCon 用于 Windows 2000 、Windows XPWindows vista。不能将 Devcon 用于 Microsoft Windows 95、Windows 98、或 Windows Millennium Edition。   下载:http://download.microsoft.com/download/1/1/f/11f7dd10-272d-4cd2-896f-9ce67f3e0240/devcon.exe 用法及参数说明:   devcon.exe [-r] [-m:\\] [...]   -r 如果指定它,在命令完成后若需要则重新启动计算机。    是目标计算机的名称。    是将要执行的命令(如下所示)。   ... 是命令需要的一个或多个参数。   要获取关于某一特定命令的帮助,请键入:devcon.exe help   classfilter 允许修改类别筛选程序。   classes 列出所有设备安装类别。   disable 禁用与指定的硬件或实例 ID 匹配的设备。   driverfiles 列出针对设备安装的驱动程序文件。   drivernodes 列出设备的所有驱动程序节点。   enable 启用与指定的硬件或 实例 ID 匹配的设备。   find 查找与指定的硬件或 实例 ID 匹配的设备。   findall 查找设备,包括那些未显示的设备。   help 显示此信息。   hwids 列出设备的硬件 ID。   install 手动安装设备。   listclass 列出某一安装类别的所有设备。   reboot 重新启动本地计算机。   remove 删除与特定的硬件或 实例 ID 匹配的设备。   rescan 扫描以发现新的硬件。   resources 列出设备的硬件资源。   restart 重新启动与特定的硬件或 实例 ID 匹配的设备。   stack 列出预期的设备驱动程序堆栈。   status 列出设备的运行状态。   update 手动更新设备。   UpdateNI 手动更新设备,无用户提示   SetHwID 添加、删除更改根枚举设备的硬件 ID 的顺序。 示例:   devcon -m:\\test find pci\* 列出计算机 test 上的所有已知 PCI 设备。(通过使用 -m,您可以指定一个目标计算机。您必须使用“进程间通信”(IPC) 访问此计算机。)   devcon -r install Windows directory\Inf\Netloop.inf *MSLOOP 安装一个新的 Microsoft 环回适配器实例。这将创建一个新的根枚举设备节点,使用此节点您可以安装“虚拟设备”,如环回适配器。如果需要重新启动计算机,此命令还将以安静模式重启计算机。   devcon classes 列出所有已知的安装类别。输出结果包含短的未本地化的名称(例如,“USB”)描述性名称(例如,“通用串行总线控制器”)。 禁用启用网卡的步骤:   1.用devcon hwids PCI*命令得到所有以PCI开头的设备。这时会列出很多设备,那么哪个才是网卡对应的呢?   2.打开设备管理器,展开网络适配器,找到网卡的名称,然后记住到刚才得到的列表中找对应的Name,然后你会在下面看到好几个ID,随便挑一个就行   3.用devcon disable "PCI\VEN_11AB&DEV_4380&SUBSYS_301B17AA&REV_10"禁用网卡(启用的话讲disable换成enable就行了)   4.其实用PCI开头得到的几组设备中一般第一个就是网卡设备 sysdzw 16:01 2010-11-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值