2.2.3 缺失值填补

缺失值填补方法基于现有数据为每个缺失值计算合理的填补值,从而构造一个和原始数据集规模相同的完整数据集。缺失值填补的主要目的在于,借助填补值减小由缺失数据导致的分析偏差,以及构造完整数据集使后续分析过程更加简单高效。

与不完整样本删除法相比,缺失值填补方法在一些场景下更具合理性。例如,在问卷调查中,受访者由于生理、心理、文化等可能无法对全部问题做出回复,部分样本中难免会存在缺失值。当不完整样本包含几十甚至上百个属性值时,因为极少数缺失值而丢弃样本中大量的已知数据,将导致现有数据的极大浪费。又如,在对家庭人均收入进行回归建模时,数据集中的“受访年份”“房屋构建年份”等属性对分析结果的影响不显著,而“工资收入”“日用消费”等属性对分析结果影响较大。若因不显著属性中的缺失值而丢弃显著属性中的现有值,同样会造成现有数据的浪费。相较之下,缺失值填补法能够最大化保留数据集中的已知信息,并利用推断所得的填补值辅助后续分析的有效进行。

常用的填补方法大致包括基于统计学的填补方法和基于机器学习的填补方法。下面首先以均值填补法、回归填补法和热平台(Hot Deck)填补法为例,对常见的统计学填补方法进行简单介绍。

针对数值型属性,均值填补法根据属性中现有值的平均值对该属性中的缺失值进行填补。该方法可进一步推广到非数值型属性的处理中。针对非数值型属性,可利用属性中现有值出现频率最高的数,即众数,填补该属性内的缺失值。均值或众数一般被认为是具有代表性的统计量,利用该类数值替换属性中的缺失值是一种简单快捷的填补方式。基于均值填补法所得的填补值能够保持在合理的取值范围内,不必担心由填补值所致的异常值问题。但是,该方法的填补结果过于集中,降低了属性值分布的离散性。

回归填补法以现有值相应属性为自变量、以缺失值相应属性为因变量建立回归模型,接着基于完整样本求解模型参数后,将现有值输入模型,并以模型输出填补缺失值。回归填补法在建模期间充分利用了数据集中的现有数据。当所建模型能够合理地描述自变量与因变量间的相关性时,回归填补效果较为理想。然而,回归填补法带有一定的预测性,在实际问题中,其求解的填补值有可能超过合理范围,进而产生异常值。

热平台填补法是指从数据集中找到一个与不完整样本相似的完整样本,并利用该样本的属性值填补缺失值。热平台法所得的填补值来自数据集本身,而非统计量或者推测值。由于填补值从相似样本中产生,并非完全如均值一样是个固定值,因此与均值填补法相比,该方法能够降低对属性值分布离散性的影响,并解决回归填补法产生异常值的问题。当不完整属性内存在较多缺失值时,填补值很可能来自相同样本,因此易导致属性取值重复。

基于机器学习的填补方法通常采用建模的方式挖掘不完整数据内的有效信息,从而对填补值进行合理推断。下面介绍两种面向缺失值填补的建模思路。

第一种思路通过样本间相似性的挖掘,为每个不完整样本寻找一组相似样本,并根据相似样本的属性值实现缺失值填补。例如,K最近邻填补法为每个不完整样本寻找距其最近的K个完整样本,然后将这K个样本在相应属性上的均值或加权平均值作为填补值。基于聚类的填补方法一般对数据集进行划分后,采用聚类中心对不完整样本进行填补。聚类中心由簇内所有样本求解而来,是对这些样本的归纳性描述。根据聚类中心填补缺失值相当于利用簇内所有样本进行缺失值填补。基于自组织映射网络的填补方法是建立由输入层、竞争层构成的自组织映射网络,并在训练期间利用竞争层神经元的权重向量归纳输入样本间的相似度,在填补期间,将不完整样本直接输入模型,并利用与该样本相似的一组权重向量填补缺失值。由于权重向量是对输入中相似样本的高度概括,因此基于权重向量填补缺失值,相当于利用数据集中与不完整样本最相似的那部分样本进行缺失值填补。

第二种思路对不完整属性与完整属性间的关联关系进行回归建模,并根据所建模型估算缺失值。与统计学方法中的回归填补不同,机器学习所采用的回归模型构造灵活,往往具备强大的非线性拟合能力,因此能够较好地挖掘数据属性间的关联关系。例如,可针对不完整数据集建立诸如多层感知机、自编码器等非线性模型。训练期间,根据数据集中的完整样本集合求解模型参数;填补期间,首先对不完整样本进行预填补,接着将预填补后的样本输入所建模型并将模型输出作为填补值。此类方法需解决由样本缺失形式多样而导致的建模困难。缺失形式可理解为不完整样本中缺失值在样本属性上的位置分布,若样本仅在第i个属性上存在缺失值,其缺失形式为{i};若样本仅在第i个和第j个属性存在缺失值,则缺失形式为{i,j},以此类推。缺失形式不同,则回归模型中自变量和因变量的设置也有所不同。为解决上述问题,多层感知机模型针对每种缺失形式构建专属的回归模型,而自编码器则基于输入层和输出层神经元数量等同于样本属性个数,采用输出等于输入的网络结构,同时学习所有属性的非线性拟合函数。

缺失值填补能够改善不完整数据的质量,实际应用中需合理选择填补方法。针对相同的不完整数据集,不同的填补方法会生成不同的填补值,进而使分析结果不一致。为了获得有效的填补值,需要针对具体场景具体分析,选择最适用的缺失值填补方法。