基于机器学习的数据缺失值填补:理论与方法
上QQ阅读APP看书,第一时间看更新

3.4.1 多重填补法

多重填补法是指,利用不完整数据集中的现有数据对缺失值进行多次填补,由此生成多个完整数据集的填补方法。基于多重填补法的不完整数据分析过程如图3-8所示。其中,S表示数据集的属性数量,Aj(j=1,2,…,s)表示第j个属性的名称,黑色方框表示缺失值,白色方框表示现有值,m表示填补次数。图3-8中所示过程可分为3个步骤,即填补、分析与合并。在填补阶段,对不完整数据集展开m次填补,得到m组填补值,由此产生m个完整数据集。在分析阶段,采用同样的分析算法对所有完整数据集进行独立的分析,并求解出m个分析结果。例如针对分类问题,在得到m个完整数据集后,基于每个数据集搭建分类模型并获得m组模型参数。在合并阶段,综合上一阶段的所有结果获得最终分析结果。仍以分类问题为例,在获得m组模型参数后,可通过取均值的思路将所有模型参数合并为一组参数,以此进行推断。

图3-8 基于多重填补法的不完整数据分析过程

相比于求解填补值,多重填补法更关注于不完整数据的分析结果。其采用多组填补值表征缺失值的不确定性,对不同填补值下的完整数据集进行多次分析,并综合若干个分析结果以获得最终的推断。该方法合理考虑了缺失值的不确定性对分析过程的影响,有助于提高分析质量。下面介绍几种常见的多重填补方法。

多重填补法的简单实现思路是,利用单一填补法重复展开若干轮填补,并得到多个不同的完整数据集。然而,大多数单一填补法针对相同的不完整数据集仅能得到一组填补结果。例如,均值填补法利用不完整属性中所有现有值的平均值进行缺失值填补,线性回归填补法采用完整样本计算模型参数并根据所建模型求解填补值。不管重复多少次填补过程,此类方法所得的完整数据集完全相同。为了在单一填补法的基础上获得若干组不同的填补结果,可以考虑为填补模型求解的填补值、填补模型自身的参数,或者填补模型的输入数据集引入随机性。本节将按照上述3种思路分别介绍3种不同的多重填补法。

1.基于随机干扰项的多重填补法

基于随机干扰项的多重填补法在单一填补法所求填补值的基础上引入随机干扰项,进而获得多组不同的填补结果[21]。下面以线性回归填补法为例,对此方法展开介绍。

沿用3.2.1节的假设,X={xi|xis,i=1,2,…,n}表示样本数量为n,属性数量为s的数据集。其中,第i个样本为xi=[xi1,xi2,…,xis]T(i=1,2,…,n)。以数据集中前p个属性作为自变量,第p+1个属性作为因变量,建立如式(3-102)所示的线性回归模型:

式(3-102)中,yi表示因变量,由于此模型的因变量对应第p+1个属性,此处yi=xi(p+1);Xco表示完整样本集合;xi=[xi1,xi2,…,xis]T表示完整样本集合Xco中的样本;βj(j=0,1,…,p)表示模型参数;εi表示误差,服从于正态分布。

在基于完整样本得到模型参数估计值j后,即可采用该线性模型估计缺失值。例如,针对某不完整样本xi,其填补值可表示为式(3-103):

式(3-103)中,Xin表示不完整样本集合。

由于参数估计值j固定不变,基于式(3-103)得到的填补值i始终是固定值。在此基础上引入随机干扰项,将式(3-103)改写为式(3-104)所示的形式:

式(3-104)中,sxy表示针对所有完整样本,因变量的估计值与真实值间误差的标准差;u表示服从于标准正态分布的随机值。在线性函数中加入随机干扰项sxyu后,模型所得的填补值将随着干扰项取值的不同而变化,因此,利用该模型重复进行多次填补会得到多个不同的完整数据集。

上述方式将j(j=0,1,…,p)视为固定值,每次的填补值i均可看作是在初始填补值的基础上引入了一个随机值。在此方式下,所得填补值受初始填补值的影响较大,若初始填补值不准确,则求得的一系列填补值都会存在相应的估计误差。

2.贝叶斯多重填补法

相比于引入随机干扰项,一种更有效的处理思路是在填补模型的求解过程中引入随机性,通过构建随机的线性模型展开多次填补。贝叶斯多重填补法正是基于此思路实现的填补方法,其利用贝叶斯理论求解填补模型的参数,使模型参数来自后验分布的随机抽取,从而为模型引入随机性[22]

下面以式(3-102)所示的线性回归模型为例,介绍贝叶斯多重填补法。首先该方法存在如下假设。

①自变量服从于p元正态分布,因变量服从于一元正态分布。

②因变量的缺失机制为随机缺失,即样本中缺失值的产生仅与现有值的取值有关,与缺失值的取值无关。

③自变量与因变量之间存在线性关系,并且满足式(3-105):

式(3-105)中,B表示全部模型参数构成的向量,Y表示完整样本集合中所有因变量构成的向量,X*表示完整样本集合中所有自变量构成的矩阵,也称设计矩阵,其定义见3.2.1节中的式(3-46)。

以下为贝叶斯多重填补法的主要步骤[23]

步骤1:根据最小二乘法和完整样本集合求解模型参数估计值,以及关于误差εi的方差估计值2,如式(3-106)和(3-107)所示:

式(3-107)中,nco表示完整样本的数量,p表示自变量的数量,|nco|-p表示统计学中的自由度,即独立或能够自由变化的数据个数。

步骤2:利用2构建B和σ2的后验分布,根据统计学定理,由于随机误差εi服从正态分布,其方差估计值σ2的后验分布满足式(3-108):

式(3-108)中,nco表示完整样本的数量,χ2(nco-p)表示自由度为nco-p的卡方分布(Chi-squared Distribution)。卡方分布的定义为:若随机变量Z1,Z2,…Zk彼此相互独立,并且均服从标准正态分布,则这k个变量的求和结果将服从自由度为k的卡方分布,通常可写作式(3-109):

鉴于Y~N(X*B,σ2),并且Y=X*B+σ,在给定σ2的前提下,B的后验分布可表示为如式(3-110)所示的正态分布:

步骤3:根据所得后验分布,调整模型参数的估计值。首先根据式(3-108)将估计值2更新为σ*2,如式(3-111)所示。

式(3-111)中,g表示服从于χ2(nco-p)分布的一个随机值。

接着,结合式(3-110)和式(3-111)将模型参数的估计值更新为B*,如式(3-112)所示。

式(3-112)中,z1表示p维随机向量,并且服从于p元标准正态分布;[(X*TX*)-1]1/2表示矩阵(X*TX*)-1的方根,可由Cholesky分解求得。Cholesky分解是一种经典的数学方法,目的是将一个对称正定矩阵分解为一个下三角矩阵和该下三角矩阵转置相乘的形式。

步骤4:在得到σ*2和B*后,根据式(3-113)计算填补值i,并利用所有填补值替换缺失值以得到一个完整数据集。

式(3-113)中,xi*=[1,xi1,xi2,…,xip]T,z2表示服从于p元标准正态分布的p维随机向量,xin表示不完整属性集合。

步骤5:若填补次数达到上限值m,则进入步骤6。否则,返回步骤3,继续下一轮填补过程。

步骤6:填补结束,得到m个完整数据集。

3.基于重采样的多重填补法

重采样(Resampling)是指从样本总体中提取部分样本,在此基础上进行统计量估计或其他推断的一类方法。每次重采样得到的样本集合可视为对样本总体的局部描述,不同局部描述下求得的填补模型往往不同,由其求解的填补值也存在差异,因此,可利用重采样获得多组不同的填补结果,进而实现多重填补。重采样法主要包括刀切(Jackknife)法和自助(Bootstrap)法,下面依次对其介绍[24]

Jackknife法从原始数据集中去除某个样本,并将其他样本构成数据集以供分析。由于每次去除的样本不同,基于Jackknife法得到的样本集合也不相同。假设X={x1,x2,…,xn}表示原始数据集,θ表示待估计参数,以下为基于Jackknife法的分析过程。

步骤1:设置访问标记i=0,在数据集X的基础上,利用分析方法求解参数估计值0

步骤2:去除第i个样本xi,将其他样本构成数据集X-i={x1,…,xi-1,xi+1…,xn};

步骤3:在数据集X-i的基础上,利用分析方法计算参数估计值-i

步骤4:根据式(3-114)求解i,该值通常被称为虚拟值(Pseudovalue);

步骤5:若i=n,则进入步骤6;否则,令i←i+1,并返回步骤2;

步骤6:根据式(3-115)计算最终的参数估计值。

Bootstrap法包括非参数Bootstrap和参数化Bootstrap两种形式,其中,非参数Bootstrap是将原始数据集视为总体,并进行多次有放回采样,从而得到一个样本集合。参数化Bootstrap是假设数据分布的函数形式是已知的,首先基于原始数据集对函数中的参数进行估计,由此得到数据分布,并根据此分布对数据集进行多次有放回采样。这两种方式的唯一区别在于随机采样时每个样本被抽取的概率不同,前者是等概率采样,而后者是基于原始数据的分布采样。

令X={x1,x2,…,xn}表示原始数据集,θ表示待估计参数,m表示采样次数,nb表示每次采样时抽取的样本数量。以下为基于Bootstrap法的分析过程。

步骤1:设置访问标记t=0。

步骤2:对原始数据集X进行有放回采样,由此得到样本集合Xt={xt1,xt2,…,xtnb},其中,1≤tk≤n,k=1,2,…,nb,表示样本下标。

步骤3:在数据集Xt的基础上,采用分析方法计算参数估计值i

步骤4:若t=m,进入步骤5;否则,令t←t+1,并返回步骤2。

步骤5:根据式(3-116)计算最终的参数估计值

在上述两种重采样方法中,Jackknife法的采样方式可视为无放回采样,即每次随机抽取的样本不再放回数据集。而Bootstrap法使用有放回采样,在随机抽取某样本后,将该样本重新放回数据集,再进行随机抽取。在无放回采样中,每次采样时的数据分布和未进行任何采样时的原始数据分布并不一致。相较而言,有放回采样能够在维持原始数据分布的前提下,对样本展开无限次数的抽取。鉴于Bootstrap法比Jackknife法具有更优良的性质,所以该方法已被广泛使用。

下面仍以线性回归模型为例,阐述基于重采样的多重填补法。假设Xco表示不完整数据集内的完整样本集合,Xt表示第t次填补期间基于重采样得到的样本集合,集合内的样本均来自于Xco。针对如式(3-102)所示的线性回归模型,基于Xt求得的模型参数可表示为式(3-117)。

式(3-117)中,t=[0(t),1(t),…,p(t)]T表示模型参数估计值,Yt表示集合Xt中的所有因变量构成的向量,Xt*是由集合Xt中的所有自变量构成的矩阵,也称设计矩阵,其定义见3.2.1节中的式(3-46)。第t次填补期间,随机误差εi的方差估计值t2可表示为式(3-118):

式(3-118)中,nt表示集合Xt内的样本数量,即|Xt|;p表示自变量的数目。

在由集合Xt得到模型参数估计值j(t)(j=0,1,…,p)和t2后,根据式(3-119)估计缺失值:

式(3-119)中,i(t)表示第t次填补期间,模型针对不完整样本xi的填补值,ui表示基于标准正态分布所抽取的随机值,xin表示不完整样本集合。

基于重采样的多重填补法在完整样本集合的基础上进行有放回采样,并且每次采样所得的样本集合间存在差异。该差异性使得填补值更加多样,从而弥补均值填补等单一填补法对数据总体方差的低估。此外,与贝叶斯多重填补法相比,基于重采样的多重填补法无须Cholesky分解,也无须从卡方分布中随机抽取参数估计,故更加高效。

除了以上几种典型的多重填补法外,目前存在诸多改进版本。例如,上述贝叶斯多重填补法假设数据服从正态分布,当真实数据不符合该假设时,该方法的分析精度会受到一定影响。因此,研究人员将多元t分布理论引入填补过程,以扩展多重填补法的应用范围[25]。鉴于多重填补法合理考虑缺失值对建模产生的不确定性,已成为目前应用最广泛的填补方法之一,在医疗、金融等领域均取得了广泛的研究成果。