1. 数据缺失值的4种处理方法
缺失值的处理方法
对于缺失值的处理,从总体上来说分为删除存在缺失值的个案和缺失值插补。对于主观数据,人将影响数据的真实性,存在缺失值的样本的其他属性的真实值不能保证,那么依赖于这些属性值的插补也是不可靠的,所以对于主观数据一般不推荐插补的方法。插补主要是针对客观数据,它的可靠性有保证。
1、删除含有缺失值的个案
主要有简单删除法和权重法。简单删除法是对缺失值进行处理的最原始方法。它将存在缺失值的个案删除。如果数据缺失问题可以通过简单的删除小部分样本来达到目标,那么这个方法是最有效的。当缺失值的类型为非完全随机缺失的时候,可以通过对完整的数据加权来减小偏差。把数据不完全的个案标记后,将完整的数据个案赋予不同的权重,个案的权重可以通过logistic或probit回归求得。如果解释变量中存在对权重估计起决定行因素的变量,那么这种方法可以有效减小偏差。如果解释变量和权重并不相关,它并不能减小偏差。对于存在多个属性缺失的情况,就需要对不同属性的缺失组合赋不同的权重,这将大大增加计算的难度,降低预测的准确性,这时权重法并不理想。
2、可能值插补缺失值
它的思想来源是以最可能的值来插补缺失值比全部删除不完全样本所产生的信息丢失要少。在数据挖掘中,面对的通常是大型的数据库,它的属性有几十个甚至几百个,因为一个属性值的缺失而放弃大量的其他属性值,这种删除是对信息的极大浪费,所以产生了以可能值对缺失值进行插补的思想与方法。
2. 几种常见的缺失数据插补方法
()案剔除(Listwise
Deletion)
见、简单处理缺失数据用案剔除(listwise
deletion)统计软件(SPSSSAS)默认缺失值处理种任何变量含缺失数据相应案析剔除缺失值所占比例比较十效至于具体缺失比例算比例专家意见存较差距者认应5%者认20%即种却局限性减少本量换取信息完备造资源量浪费丢弃量隐藏些象信息本量较情况删除少量象足严重影响数据客观性结确性缺失数据所占比例较特别缺数据非随机布种能导致数据发偏离错误结论
(二)均值替换(Mean
Imputation)
变量十重要所缺失数据量较庞候案剔除遇困难许用数据同剔除围绕着问题研究者尝试各种各办其均值替换(mean
imputation)我变量属性数值型非数值型别进行处理缺失值数值型根据该变量其所象取值平均值填充该缺失变量值;缺失值非数值型根据统计众数原理用该变量其所象取值数值补齐该缺失变量值种产偏估计所并推崇均值替换种简便、快速缺失数据处理使用均值替换插补缺失数据该变量均值估计产影响种建立完全随机缺失(MCAR)假设且造变量差标准差变
(三)热卡填充(Hotdecking)
于包含缺失值变量热卡填充数据库找与相似象用相似象值进行填充同问题能选用同标准相似进行判定见使用相关系数矩阵确定哪变量(变量Y)与缺失值所变量(变量X)相关所案按Y取值进行排序变量X缺失值用排缺失值前案数据代替与均值替换相比利用热卡填充插补数据其变量标准差与插补前比较接近归程使用热卡填充容易使归程误差增参数估计变稳定且种使用便比较耗
(四)归替换(Regression
Imputation)
归替换首先需要选择若干预测缺失值自变量建立归程估计缺失值即用缺失数据条件期望值缺失值进行替换与前述几种插补比较该利用数据库尽量信息且些统计软件(Stata)已经能够直接执行该功能该诸弊端第虽偏估计却容易忽视随机误差低估标准差其未知性质测量值且问题随着缺失信息增变更加严重第二研究者必须假设存缺失值所变量与其变量存线性关系候种关系存
(五)重替代(Multiple
Imputation)
重估算由Rubin等于1987建立起种数据扩充统计析作简单估算改进产物首先重估算技术用系列能值替换每缺失值反映替换缺失数据确定性用标准统计析程替换产若干数据集进行析自于各数据集统计结进行综合总体参数估计值由于重估算技术并用单值替换缺失值试图产缺失值随机本种反映由于数据缺失导致确定性能够产更加效统计推断结合种研究者比较容易舍弃任何数据情况缺失数据未知性质进行推断NORM统计软件较简便操作该
3. 几种常见的缺失数据插补方法
(一)个案剔除法(Listwise Deletion)
最常见、最简单的处理缺失数据的方法是用个案剔除法(listwise
deletion),也是很多统计软件(如SPSS和SAS)默认的缺失值处理方法。在这种方法中如果任何一个变量含有缺失数据的话,就把相对应的个案从分析中剔除。如果缺失值所占比例比较小的话,这一方法十分有效。至于具体多大的缺失比例算是“小”比例,专家们意见也存在较大的差距。有学者认为应在5%以下,也有学者认为20%以下即可。然而,这种方法却有很大的局限性。它是以减少样本量来换取信息的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些对象中的信息。在样本量较小的情况下,删除少量对象就足以严重影响到数据的客观性和结果的正确性。因此,当缺失数据所占比例较大,特别是当缺数据非随机分布时,这种方法可能导致数据发生偏离,从而得出错误的结论。
(二)均值替换法(Mean Imputation)
在变量十分重要而所缺失的数据量又较为庞大的时候,个案剔除法就遇到了困难,因为许多有用的数据也同时被剔除。围绕着这一问题,研究者尝试了各种各样的办法。其中的一个方法是均值替换法(mean
imputation)。我们将变量的属性分为数值型和非数值型来分别进行处理。如果缺失值是数值型的,就根据该变量在其他所有对象的取值的平均值来填充该缺失的变量值;如果缺失值是非数值型的,就根据统计学中的众数原理,用该变量在其他所有对象的取值次数最多的值来补齐该缺失的变量值。但这种方法会产生有偏估计,所以并不被推崇。均值替换法也是一种简便、快速的缺失数据处理方法。使用均值替换法插补缺失数据,对该变量的均值估计不会产生影响。但这种方法是建立在完全随机缺失(MCAR)的假设之上的,而且会造成变量的方差和标准差变小。
(三)热卡填充法(Hotdecking)
对于一个包含缺失值的变量,热卡填充法在数据库中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。最常见的是使用相关系数矩阵来确定哪个变量(如变量Y)与缺失值所在变量(如变量X)最相关。然后把所有个案按Y的取值大小进行排序。那么变量X的缺失值就可以用排在缺失值前的那个个案的数据来代替了。与均值替换法相比,利用热卡填充法插补数据后,其变量的标准差与插补前比较接近。但在回归方程中,使用热卡填充法容易使得回归方程的误差增大,参数估计变得不稳定,而且这种方法使用不便,比较耗时。
(四)回归替换法(Regression Imputation)
回归替换法首先需要选择若干个预测缺失值的自变量,然后建立回归方程估计缺失值,即用缺失数据的条件期望值对缺失值进行替换。与前述几种插补方法比较,该方法利用了数据库中尽量多的信息,而且一些统计软件(如Stata)也已经能够直接执行该功能。但该方法也有诸多弊端,第一,这虽然是一个无偏估计,但是却容易忽视随机误差,低估标准差和其他未知性质的测量值,而且这一问题会随着缺失信息的增多而变得更加严重。第二,研究者必须假设存在缺失值所在的变量与其他变量存在线性关系,很多时候这种关系是不存在的。
(五)多重替代法(Multiple Imputation)
多重估算是由Rubin等人于1987年建立起来的一种数据扩充和统计分析方法,作为简单估算的改进产物。首先,多重估算技术用一系列可能的值来替换每一个缺失值,以反映被替换的缺失数据的不确定性。然后,用标准的统计分析过程对多次替换后产生的若干个数据集进行分析。最后,把来自于各个数据集的统计结果进行综合,得到总体参数的估计值。由于多重估算技术并不是用单一的值来替换缺失值,而是试图产生缺失值的一个随机样本,这种方法反映出了由于数据缺失而导致的不确定性,能够产生更加有效的统计推断。结合这种方法,研究者可以比较容易地,在不舍弃任何数据的情况下对缺失数据的未知性质进行推断。NORM统计软件可以较为简便地操作该方法
4. 对于缺失值的处理
建议:不同场景下的数据缺失机制不同,这需要工程师基于对业务选择合适的填充方法。
如何判断缺失值类型?
缺失值的分类按照数据缺失机制可分为:
可忽略的缺失
不可忽略的缺失
平常工作中遇到的缺失值大部分情况下是随机的(缺失变量和其他变量有关)
这个就可以用estimator来做了,选其中一个变量(y),然后用其他变量作为X,随便选个值填充X的缺失部分,用X train一个estimator,再预测y的缺失部分(大致思路)
此外有些数据是符合某种分布的,利用这个分布呢也可以填充缺失的数据,如(EM算法)
处理缺失数据的三个标准:
1. 非偏置的参数估计
不管你估计means, regressions或者是odds ratios,都希望参数估计可以准确代表真实的总体参数。在统计项中,这意味着估计需要是无偏的。有缺失值可能会影响无偏估计,所以需要处理。
2. 有效的能力:
删除缺失数据会降低采样的大小,因此会降低power。如果说问题是无偏的,那么得到的结果会是显著的,那么会有足够的能力来检验这个效力(have adequate power to detect your effects)。反之,整个检测可能失效。
3. 准确的标准差(影响p值和置信区间):
不仅需要参数估计无偏,还需要标准差估计准确,在统计推断中才会有效。
缺失值处理的方法大致分为这几类:1、删除法;2、基于插补的方法;3、基于模型的方法; 4、不处理; 5、映射高维
有些处理方法是基于完全随机缺失假设(MCAR),一般来说,当数据不是 MCAR 而 是随机缺失(MAR)时,这些方法是不适用的;而有些方法(如似然估计法)在 MAR 的假设下是适用的,因此,在进行缺失数据处理时,首先需要认真分析缺失数 据产生的原因,然后采取有针对性的补救措施,这样才能够获得无偏或弱偏估计。
此处关于使用多重插补来处理非随机缺失(MNAR)的问题,它其实效果不一定,也可能出现效果倒退的情况,总的说多重更适合MAR
注:此处一元与多元指的是仅有一个特征有缺失值与多个特征有缺失值
对于不同类别的缺失值的处理方法如上图。
以下展开介绍各个方法:
注: k-means插补 与KNN插补很相似,区别在于k-means是利用无缺失值的特征来寻找最近的N个点,然后用这N个点的我们所需的缺失的特征平均值来填充,而KNN则是先用均值填充缺失值再找最近的N个点。
类似的还有 随机回归插补 :也优于纯回归插补
其他单一插补法:
与单一插补方法相比较,多重插补方法充分地考虑了数据的不确定性。多重插补的主要分为三个步骤,综合起来即为:插补、分析、合并。插补步是为每个缺失值都构造出 m 个可能的插补值,缺失模型具有不确定性,这些插补值能体现出模型的这个性质,利用这些可能插补值对缺失值进行插补就得到了 m 个完整数据集。分析步是对插补后的 m 个完整数据集使用一样的统计数据分析方法进行分析,同时得到 m 个统计结果。综合步就是把得到的这 m 个统计结果综合起来得到的分析结果,把这个分析结果作为缺失值的替代值。多重插补构造多个插补值主要是通过模拟的方式对估计量的分布进行推测,然后采用不同的模型对缺失值进行插补,这种插补是随机抽取的方式,这样以来能提高估计的有效性和可靠性。
多重插补-python手册
多重插补法主要有以下几种:
(使用回归、贝叶斯、随机森林、决策树等模型对缺失数据进行预测。)
基于已有的其他字段,将缺失字段作为目标变量进行预测,从而得到较为可能的补全值。如果带有缺失值的列是数值变量,采用回归模型补全;如果是分类变量,则采用分类模型补全。
常见能够自动处理缺失值模型包括:KNN、决策树和随机森林、神经网络和朴素贝叶斯、DBSCAN(基于密度的带有噪声的空间聚类)等。
处理思路:
自动插补 :例如XGBoost会通过training loss rection来学习并找到最佳插补值。
忽略 :缺失值不参与距离计算,例如:KNN,LightGBM
将缺失值作为分布的一种状态 :并参与到建模过程,例如:决策树以及变体。
不基于距离做计算 :因此基于值得距离计算本身的影响就消除了,例如:DBSCAN。
ID3、c4.5、cart、rf到底是如何处理缺失值的?
最精确的做法,把变量映射到高维空间。
比如性别,有男、女缺失三种情况,则映射成3个变量:是否男、否女、是否缺失。连续型变量也可以这样处理。比如Google、 网络的CTR预估模型,预处理时会把所有变量都这样处理,达到几亿维。又或者可根据每个值的频数,将频数较小的值归为一类'other',降低维度。此做法可最大化保留变量的信息。
前推法 (LOCF,Last Observation Carried Forward,将每个缺失值替换为缺失之前的最后一次观测值)与 后推法 (NOCB,Next Observation Carried Backward,与LOCF方向相反——使用缺失值后面的观测值进行填补)
这是分析可能缺少后续观测值的纵向重复测量数据的常用方法。纵向数据在不同时间点跟踪同一样本。当数据具有明显的趋势时,这两种方法都可能在分析中引入偏差,表现不佳。
线性插值 。此方法适用于具有某些趋势但并非季节性数据的时间序列。
季节性调整+线性插值 。此方法适用于具有趋势与季节性的数据。
总而言之,大部分数据挖掘的预处理都会使用比较方便的方法来处理缺失值,比如均值法,但是效果上并不一定好,因此还是需要根据不同的需要选择合适的方法,并没有一个解决所有问题的万能方法。
具体的方法采用还需要考虑多个方面的:
在做数据预处理时,要多尝试几种填充方法,选择表现最佳的即可。
总结来说,没有一个最完美的策略,每个策略都会更适用于某些数据集和数据类型,但再另一些数据集上表现很差。虽然有一些规则能帮助你决定选用哪一种策略,但除此之外,你还应该尝试不同的方法,来找到最适用于你的数据集的插补策略。
当前最流行的方法应该是 删除法、KNN、多重插补法 。
参考文献: 庞新生. 缺失数据处理方法的比较[J]. 统计与决策, 2010(24):152-155.
5. 数据缺失想要补齐有什么方法,用spss的替换缺失值和缺失值分析完全不会用
1、均值插补。数据的属性分为定距型和非定距型。如果缺失值是定距型的,就以该属性存在值的平均值来插补缺失的值;如果缺失值是非定距型的,就根据统计学中的众数原理,用该属性的众数(即出现频率最高的值)来补齐缺失的值。
2、利用同类均值插补。同均值插补的方法都属于单值插补,不同的是,它用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。假设X=(X1,X2...Xp)为信息完全的变量,Y为存在缺失值的变量。
那么首先对X或其子集行聚类,然后按缺失个案所属类来插补不同类的均值。如果在以后统计分析中还需以引入的解释变量和Y做分析,那么这种插补方法将在模型中引入自相关,给分析造成障碍。
3、极大似然估计(Max Likelihood ,ML)。在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计(Little and Rubin)。
这种方法也被称为忽略缺失值的极大似然估计,对于极大似然的参数估计实际中常采用的计算方法是期望值最大化(Expectation Maximization,EM)。
4、多重插补(Multiple Imputation,MI)。多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。
(5)文章数据最低值缺失如何补扩展阅读
缺失值产生的原因很多,装备故障、无法获取信息、与其他字段不一致、历史原因等都可能产生缺失值。一种典型的处理方法是插值,插值之后的数据可看作服从特定概率分布。另外,也可以删除所有含缺失值的记录,但这个操作也从侧面变动了原始数据的分布特征。
对于缺失值的处理,从总体上来说分为删除存在缺失值的个案和缺失值插补。对于主观数据,人将影响数据的真实性,存在缺失值的样本的其他属性的真实值不能保证,那么依赖于这些属性值的插补也是不可靠的,所以对于主观数据一般不推荐插补的方法。插补主要是针对客观数据,它的可靠性有保证。
6. 数据分析中缺失值的处理
数据缺失在许多研究领域都是一个复杂的问题,对数据挖掘来说,缺失值的存在,造成了以下影响:
1.系统丢失了大量的有用信息
2.系统中所表现出的不确定性更加显著,系统中蕴涵的确定性成分更难把握
3.包含空值的数据会使挖掘过程陷入混乱,导致不可靠的输出
数据挖掘算法本身更致力于避免数据过分拟合所建的模型,这一特性使得它难以通过自身的算法去很好地处理不完整数据。因此,缺失值需要通过专门的方法进行推导、填充等,以减少数据挖掘算法与实际应用之间的差距。
1.列表显示缺失值 mice包 md.pattern( )
2.图形探究缺失值 VIM包
3.用相关性探索缺失值
1.人工填写
由于最了解数据的还是用户自己,因此这个方法产生数据偏离最小,可能是填充效果最好的一种。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。
2.特殊值填充
将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个有趣的概念,可能导致严重的数据偏离,一般不推荐使用。
3.平均值填充
将信息表中的属性分为数值属性和非数值属性来分别进行处理。如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值;如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。另外有一种与其相似的方法叫条件平均值填充法(Conditional Mean Completer)。在该方法中,缺失属性值的补齐同样是靠该属性在其他对象中的取值求平均得到,但不同的是用于求平均的值并不是从信息表所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推测缺失值。
4.热卡填充
对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。
5.K最近距离邻法
先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。
同均值插补的方法都属于单值插补,不同的是,它用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。假设X=(X1,X2…Xp)为信息完全的变量,Y为存在缺失值的变量,那么首先对X或其子集行聚类,然后按缺失个案所属类来插补不同类的均值。如果在以后统计分析中还需以引入的解释变量和Y做分析,那么这种插补方法将在模型中引入自相关,给分析造成障碍。
6.使用所有可能的值填充
用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。
7.组合完整化方法
用空缺属性值的所有可能的属性取值来试,并从最终属性的约简结果中选择最好的一个作为填补的属性值。这是以约简为目的的数据补齐方法,能够得到好的约简结果;但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。
8.回归
基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充,当变量不是线性相关或预测变量高度相关时会导致有偏差的估计(SPSS菜单里有这种方法)
9.期望值最大化方法
EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。(SPSS菜单里有这种方法)
10.1多重插补原理
多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。
10.2多重填补在SPSS中的实现
10.2.1缺失模式分析
分析>多重归因>分析模式
10.2.2缺失值的多重填充
分析>多重归因>归因缺失数据值
10.2.3采用填充后的数据建模
10.3多重填补在R中的实现(基于mice包)
实例:
11.C4.5方法
通过寻找属性间的关系来对遗失值填充。它寻找之间具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。
就几种基于统计的方法而言,删除元组法和平均值填充法差于热卡填充法、期望值最大化方法和多重填充法;回归是比较好的一种方法,但仍比不上热卡填充和期望值最大化方法;期望值最大化方法缺少多重填补包含的不确定成分。值得注意的是,这些方法直接处理的是模型参数的估计而不是空缺值预测本身。它们合适于处理无监督学习的问题,而对有监督学习来说,情况就不尽相同了。譬如,你可以删除包含空值的对象用完整的数据集来进行训练,但预测时你却不能忽略包含空值的对象。另外,C4.5和使用所有可能的值填充方法也有较好的补齐效果,人工填写和特殊值填充则是一般不推荐使用的。
补齐处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实,在对不完备信息进行补齐处理的同时,我们或多或少地改变了原始的信息系统。而且,对空值不正确的填充往往将新的噪声引入数据中,使挖掘任务产生错误的结果。因此,在许多情况下,我们还是希望在保持原始信息不发生变化的前提下对信息系统进行处理。
直接在包含空值的数据上进行数据挖掘,这类方法包括贝叶斯网络和人工神经网络等。
贝叶斯网络是用来表示变量间连接概率的图形模式,它提供了一种自然的表示因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。当在任何一个对象中的缺失值数量很大时,存在指数爆炸的危险。人工神经网络可以有效的对付空值,但人工神经网络在这方面的研究还有待进一步深入展开。人工神经网络方法在数据挖掘应用中的局限性。
多数统计方法都假设输入数据是完整的且不包含缺失值,但现实生活中大多数数据集都包含了缺失值。因此,在进行下一步分析前,你要么删除,要么用合理的数值代理它们,SPSS、R、Python、SAS等统计软件都会提供一些默认的处理缺失值方法,但这些方法可能不是最优的,因此,学习各种各样的方法和他们的分支就显得非常重要。Little和Rubin的《Sstatistical Analysis With Missing Data 》是缺失值领域里经典的读本,值得一看。