1.2.2 基于机器学习的缺失值填补方法
基于机器学习的缺失值填补方法把不完整数据集中的完整样本当作训练集来建立预测模型,并根据训练出的预测模型估计缺失值。目前,常见的基于机器学习的缺失值填补方法包括K最近邻(K-Nearest Neighbors,KNN)填补法、基于聚类的填补方法和基于神经网络(Neural Network,NN)的填补方法等。
1.K最近邻填补法
针对每个不完整样本,K最近邻填补法为寻找最相近的K个近邻样本,并利用近邻样本在不完整属性上的平均值填补缺失值。在获取不完整样本的近邻样本时,如何度量样本间的距离是一个关键问题。较为常见的距离度量指标包括欧式距离(Euclidean Distance)、闵可夫斯基距离(Minkowski Distance)等。这些指标在处理连续变量时表现良好,但却无法处理离散变量。张世超等人将灰色关联分析法(Gray Relational Analysis)引入样本间距离的度量中,且在计算不完整样本的近邻样本时将样本的标签信息考虑在内,从而对同时包含离散变量和连续变量的数据集中的缺失数据进行了有效填补[11]。
在获取不完整样本的近邻样本后,如何充分利用近邻样本的属性进行缺失值填补同样是一个重要问题。鉴于不完整样本各近邻与该样本的距离存在差异,Troyanskaya等人提出了一种加权的K最近邻填补法。该方法基于欧式距离选择不完整样本的K个近邻样本,并根据各近邻样本与不完整样本间距离的倒数计算其权重[12]。为了提高权重的灵活性并降低算法对超参数K的敏感性,提高缺失值填补的精度,Tutz等人将核函数(Kernel Function)引入权重计算过程以调节权重与样本间距离的相关程度。同时,权重计算方法引入了权重参数,通过调整权重参数,所得样本间的权重能够在不同K值下取得良好的填补效果,提高了K最近邻填补法的鲁棒性[13]。与均值填补类似,K最近邻填补法同样没有考虑到样本属性之间的相关性,毕永朋等人参考主成分分析(Principal Component Analysis,PCA)算法的原理,通过协方差矩阵记录属性间的相关系数,并在计算填补结果时将来自其他属性的影响考虑在内,提高了K最近邻填补法的精度[14]。
2.基于聚类的填补方法
基于聚类的填补方法通常使用聚类算法将数据集中的样本划分为不同的簇,并参照聚类中心(Cluster Center)及类内的完整样本对不完整样本的缺失值进行填补。Gajawada等人提出了一种较为典型的基于聚类的缺失值填补方法,即通过K均值(K-Means)聚类算法对数据集中的样本进行聚类。对于每一个不完整样本,在其所属的聚类簇中寻找该样本的一组近邻,计算各近邻样本在对应属性上的均值并将其作为填补结果[15]。为了在填补过程中充分利用簇内关系,降低不同簇的相互干扰,马永军等人在K均值聚类填补方法的基础上引入了离群点检测[16]。该方法通过核函数将数据集映射到高维空间,在高维空间对样本进行聚类,形成不同的簇,在同簇内选择与缺失值最相似的数据进行填补,然后使用K均值聚类检测填补后数据集中的离群样本,去除离群样本的填补值并将离散样本重新放入数据集进行填补。通过不断迭代直到填补的数据不再检测出离群点,离群点检测的引入使得样本的聚类信息得以充分利用,从而提升了基于聚类的填补方法的精度。为了有效挖掘数据矩阵中隐藏的局部特征信息,徐鹏雅将双聚类算法应用于缺失数据的填补中[17]。双聚类算法在行和列两个维度上对数据矩阵中的对象和属性同时进行聚类,双聚类簇内均方残差越低,表示在簇内属性一致性越高。该方法利用双聚类簇这一特点寻找与缺失值一致性较高的属性,并根据其均值进行缺失值填补。
相对于上述确定性的聚类划分,模糊C均值(Fuzzy C-Means,FCM)聚类计算样本对于各个聚类簇(Cluster)的隶属度,从而提供更加灵活的聚类结果。目前,FCM已经广泛应用于缺失数据的填补。Kumaran等人通过FCM对样本进行模糊聚类,对于不完整样本中的各现有属性,计算其与各聚类中心的距离以确定其所属聚类簇,并采用各属性投票的方式确定样本所属的聚类簇,从而根据簇内完整样本的属性进行缺失值填补。模糊聚类与投票的结合取得了优于传统聚类算法的聚类精度,因而获得了较好的填补效果[18]。鉴于聚类簇的数量对模糊聚类的精度具有较大的影响,Aydilek等人采用支持向量回归和遗传算法对聚类簇的数量和加权因子进行优化,以改善聚类效果的方式提升缺失值填补的精度[19]。考虑到聚类簇的初始位置对模糊聚类的影响,Ming等人在模糊聚类前通过全局K均值聚类算法选定各聚类簇的初始位置,从而提升了模糊聚类及缺失值填补的鲁棒性[20]。
3.基于神经网络的填补方法
基于神经网络的填补方法多使用不完整数据集中的现有属性训练网络参数,并通过所构建的网络模型对不完整样本的缺失值进行填补。目前,业内已经提出了很多应用于缺失值填补的网络模型,其中,自组织映射(Self-Organizing Map,SOM)是较为传统的一种。自组织映射是由输入层、竞争层构成的两层无监督型结构[21],能够识别相似度较高的输入样本子集,并使竞争层中彼此距离较近的神经元(Neuron)对相似样本产生响应,从而利用这些神经元的权重归纳样本间相似度[22]。该方法首先基于完整样本实现权重训练,接着将各不完整样本输入网络模型并计算其与权重向量间的距离。随后,选取距各不完整样本最近的权重向量所对应的神经元作为获胜节点,并确定激活邻域。最终,将激活邻域内所有权重向量在不完整属性的加权平均值作为填补值。该模型结构简单,训练过程的时间开销较小,但其忽视了属性间的相关性,会在一定程度上影响填补精度。
多层感知机(Multi-Layer Perceptron,MLP)按照一定规则将若干神经元节点组织为层状网络结构,并借助激活函数及节点间的连接权重等表征复杂的非线性系统。基于MLP的填补方法根据不完整属性的组合个数建立相应数量的MLP回归模型,模型中通过连接权重充分利用属性间的相关性。具体而言,针对数据集中每种不完整属性组合,该方法为其构建专属MLP模型,即建立以不完整属性为模型输出,其他属性为模型输入的MLP回归模型。此外,一种改进的MLP填补方法依次将每个不完整属性作为输出,其他属性作为输入建立MLP模型,最终构造模型数量仅为sm的填补框架。基于MLP的填补方法能够较好地拟合属性间的关联,但由于每个模型均需完成一次训练,所以其训练过程比较耗时。
自编码器(AutoEncoder,AE)是一类输出层和输入层节点数量等同于样本属性个数的网络模型,其仅借助一个结构即可学习每个不完整属性的拟合函数[23]。相较于MLP填补架构,自编码器具有高度的结构简洁性,因此其训练更为高效。自编码器在缺失值填补领域已取得广泛的研究成果。例如,Abdella等人提出结合自编码器与遗传算法的填补方法,在填补阶段将缺失值视为代价函数(Cost Function)的自变量,并利用遗传算法优化代价函数以求解缺失值[24]。Nelwamondo等人在上述方法的基础上加入动态规划理论,构建了多个自编码器并为每个不完整样本选取最优模型以实现填补[25]。Aydilek等人在填补阶段采用K最近邻法对缺失值进行预填补,同时将近邻数K视为代价函数的变量,并由遗传算法确定其最优解[26]。
除以上自编码器填补模型外,许多基于各类神经网络的自编码器变体也被相继提出并应用于缺失值填补。Ravi等人提出4种自编码器变体,包括广义回归自编码器、基于粒子群算法的自编码器、基于粒子群算法的自相关小波神经网络,以及径向基函数自编码器,并通过实验证明广义回归自编码器在自编码器架构族中具有较优的填补性能[27]。随后,Gautam等人提出对偶传播自编码器[28],后续又提出极限学习机(Extreme Learning Machine,ELM)自编码器[29],并通过实验证明上述两种填补模型在多个数据集上的填补精度均优于广义回归自编码器。