机器学习:工作流(一)—— 数据预处理

模型训练之前的数据准备阶段可以分为三个步骤,虽然这些步骤往往是相互交织、反复迭代的,但是为了指导数据准备阶段有序进行,有必要尝试对各个步骤进行界定:

  1. 数据收集:收集所有可能与所研究问题相关的数据;
  2. 数据预处理:为满足模型对数据的要求而对原始数据进行的一系列操作;
  3. 特征工程:从现有数据中挖掘出有意义的特征,常见的如特征选择、特征抽取;

在做数据预处理时,总的原则可以概括为:以尽可能少的信息损失为代价使数据满足模型的要求。具体来说,评价一个预处理操作的好坏可以从以下两方面分析:

  1. 尽可能保留原始数据中的信息;
  2. 尽可能减少操作所代入的噪声;

预处理操作所带来的信息量变化$\Delta I $可以用下面式子来表示,其中$\Delta H $表示该操作所带来的信息增益,$\Delta \varepsilon $表示该操作所引入的新的噪声,增加信息增益、减少噪声的操作可以提升数据质量,这是数据处理的核心。

统计数据分类

在统计学中,统计数据主要可分为四种类型,分别是定类数据,定序数据,定距数据,定比变量:

  1. 定类数据(Nominal):名义级数据,数据的最低级,表示个体在属性上的特征或类别上的不同变量,仅仅是一种标志,没有序次关系。例如, ”性别“,”男“编码为1,”女“编码为2。
  2. 定序数据(Ordinal):数据的中间级,用数字表示个体在某个有序状态中所处的位置,不能做四则运算。例如,“受教育程度”,文盲半文盲=1,小学=2,初中=3,高中=4,大学=5,硕士研究生=6,博士及其以上=7。
  3. 定距数据(Interval):具有间距特征的变量,有单位,没有绝对零点,可以做加减运算,不能做乘除运算。例如,温度。
  4. 定比变量(Ratio):数据的最高级,既有测量单位,也有绝对零点,例如职工人数,身高。

一般来说,数据的等级越高,应用范围越广泛,等级越低,应用范围越受限。不同测度级别的数据,应用范围不同。等级高的数据,可以兼有等级低的数据的功能,而等级低的数据,不能兼有等级高的数据的功能

缺失值处理

基本术语:

  • 完全数据集/变量/样本:不含缺失值的数据集/变量/样本;
  • 不完全数据集/变量/样本:含有缺失值的数据集/变量/样本;

缺失值产生的原因

缺失值的产生的原因多种多样,主要分为机械原因和人为原因:

  1. 机器原因:由于机器原因导致的数据保存失败,如机器故障、磁盘损坏等;
  2. 人为原因:由于人的主观失误或故意隐瞒造成的数据缺失,如录入人员漏录,或被采访着拒绝透露;

缺失值的分类

按缺失机制划分

“缺失机制”并非是指造成缺失值的原因,而是描述某个变量是否发生缺失与观测变量值的关系,Rubin (1976)最早将缺失值的机制分为三类:

  1. 完全随机缺失(missing completely at random,MCAR):某变量是否发生缺失与其他变量取值和该变量自身取值都无关,即变量缺失值的出现完全是随机的;例如,我们一般认为性别信息的缺失是MCAR,因为性别信息的缺失与被访者是男是女、或其他变量的取值无明显关系;
  2. 随机缺失(missing at random,MAR):某变量是否缺失与其他变量取值有关而与该变量自身取值无关;例如,在一次测试中,如果IQ达不到最低要求的100分,那么将不能参加随后的人格测验。在人格测验上因为IQ低于100分而产生的缺失值为MAR,因为人格测验产生的缺失只与IQ有关,而与人格测验本身无关;
  3. 非随机缺失(missing not at random,MNAR):某变量是否缺失的分布与该变量自身取值相关;例如,公司新录用了20名员工,由于6名员工表现较差在试用期内辞退,试用期结束后的表现评定中,辞退的6名员工的表现分即为非随机缺失,因为表现分缺失与表现分过低有关;

简单说来:

  • “随机缺失”就是指变量是否缺失和变量自身取值无关,如果也和其他变量取值无关则称“完全随机缺失”;
  • “非随机缺失”就是指变量是否缺失和变量自身取值有关;

数据是否是完全随机缺失可以采用单变量t检验和Little (1988)提出的多元t检验。其原理是,如果变量X的缺失值是完全随机的,那么在X上缺失和非缺失两组样本间在第二个变量Y上的均值差异是不显著的,否则存在某种相关性。多元t检验可在SPSS上运行。然而均值差异比较并非能保证MCAR,因为在MAR和MANR条件先也能产生相等的均值(Enders, 2010)。

目前,缺少检验MAR的有效程序,幸运的是严重违反MAR假设的情况相对较少(Graham et al., 1997, p. 354; Schafer & Graham, 2002)。研究者推荐使用包含辅助变量(Auxiliary Variables,与缺失值相关的因素)的方法减少估计偏差并提高满足MAR假设的可能性(Collins et al., 2001; Rubin, 1996; Schafer, 1997; Schafer & Graham, 2002)。具体来说,在分析缺失值数据时将辅助变量纳入分析过程,但辅助变量并不出现在模型中。

按缺失值所属特征划分

  1. 单值缺失:所有的缺失值都是同一属性
  2. 任意缺失:缺失值属于不同的属性
  3. 单调缺失:对于时间序列类的数据,可能存在随着时间的缺失

缺失值处理方法

大多数模型都要求数据集中不能含有缺失值(除了决策树系算法),当数据集中出现缺失值时,首先应尝试从数据源头进行补全(虽然常常被忽视),只有当这些缺失值确实无法被获取到或者获取的成本很高时,才需考虑特殊的缺失值处理方法。缺失值处理大多是基于MAR假设。

对于缺失值的处理,总体上可分为删除和插补两种方式,删除会损失掉一些信息,插补又会引入一些噪声,在选择缺失值处理的方法时总的原则是使得操作所引起的信息损失达到最小,即尽可能少的丢弃原有数据,尽可能少的引入新的噪声:

  • $\Delta H$:处理操作导致的原有数据的减少;
  • $\Delta noise$:处理操作引入的噪声;

删除

当插补所引入的噪声比删除所丢弃的信息还要多的时候,应该选择删除缺失值所在的样本或特征:

  1. 样本删除(casewise deletion):如果某些行(样本)中缺失值很多,而这些样本在总样本中的比例较小时,应舍弃这些样本;有时也叫列表删除(listwise deletion)
  2. 特征删除(variable deletion):如果某些列(特征)中缺失值很多,二这些特征又不是很重要时,应舍弃这些特征;有时也叫配对删除(pairwise deletion)

插补

插补相当于预测缺失值,这和监督学习的目标很像,但所采用的方法一般没有后者那么精确。

当删除不完全样本所带来的信息丢失比插补所引入的噪声还要多的时候,应对缺失值进行插补。插补又可分为单值插补和多重插补:

  • 单值插补:为每个缺失值提供一个替代值;
  • 多重插补:为每个缺失值提供多个替代值,从而得到多个完整数据集,然后对每个完整数据集进行统计分析,得到一个最优的替代值;多重插补效果更好,所得结论也更稳定;
单值插补

单值插补操作简单,但无法反映缺失值的不确定性,且导致参数估计方差产生偏倚,常用的单重插补方法包括:全局均值插补法、组均值插补法、中位数插补法、众数插补法、回归插补法、末次观测值结转法、热平台插补法、冷平台插补法、比插补、最近邻插补等。

对于标称型特征:

  1. 新类别填充:将缺失值NAN作为新的类别处理,引入的噪声较小且保留了原始数据全部信息;
  2. 众数填充:用该特征上出现频率最高的值来填充;
  3. 条件众数:在监督学习中,如果只有训练数据中有缺失值,则可以用与该样本同label下的条件众数进行填充;

对于连续特征:

  1. 新类别填充:先对该特征做离散化,再将NAN作为新的类别处理
  2. 统计量填充:用特征均值、分位值(最大最小中位值)、随机数、插值、固定值、上下数据填充缺失值,这种方法会产生估计偏差,最不为方法学者推荐;
  3. 条件统计量填充:在监督学习中,如果只有训练数据中有缺失值,则可以用与该样本同label下的条件均值、条件中位数进行填充
  4. 回归法:通过其他特征建立回归模型预测缺失值;同样会产生估计偏差;
多重插补

按照Landerman 等( 1997) 建议当缺失比例小于2%时, 用均数替代; 当缺失比例在2%—5%之间时, 用最大似然估计替代; 而当缺失比利大于5%时, 用多项回归替代(multiple imputation)。

模型拟合填充

单值插补是最容易实现的,也是以前人们经常使用的,但是它对样本存在极大的干扰,尤其是当插补后的值作为解释变量进行回归时,参数的估计值与真实值的偏差很大。相比较而言,极大似然估计和多重插补是两种比较好的插补方法,与多重插补对比,极大似然缺少不确定成分,所以越来越多的人倾向于使用多值插补方法。

  1. KNN算法:对于缺失了特征f的样本s,从其它不缺失特征s的样本集中找到与当前样本距离前k近的样本,取这k个样本在特征f上的平均值/众数作为样本s在特征f上的缺失值;
  2. 极大似然估计(Max Likelihood ,ML):在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计,实际中常采用的计算方法是期望值最大化(Expectation Maximization,EM)。该方法比删除个案和单值插补更有吸引力,它一个重要前提:适用于大样本。有效样本的数量足够以保证ML估计值是渐近无偏的并服从正态分布。但是这种方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。
  3. 多重插补(Multiple Imputation,MI):多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。
    多重插补方法分为三个步骤:①为每个空值产生一套可能的插补值,这些值反映了无响应模型的不确定性;每个值都可以被用来插补数据集中的缺失值,产生若干个完整数据集合。②每个插补数据集合都用针对完整数据集的统计方法进行统计分析。③对来自各个插补数据集的结果,根据评分函数进行选择,产生最终的插补值。

假设一组数据,包括三个变量Y1,Y2,Y3,它们的联合分布为正态分布,将这组数据处理成三组,A组保持原始数据,B组仅缺失Y3,C组缺失Y1和Y2。在多值插补时,对A组将不进行任何处理,对B组产生Y3的一组估计值(作Y3关于Y1,Y2的回归),对C组作产生Y1和Y2的一组成对估计值(作Y1,Y2关于Y3的回归)。

当用多值插补时,对A组将不进行处理,对B、C组将完整的样本随机抽取形成为m组(m为可选择的m组插补值),每组个案数只要能够有效估计参数就可以了。对存在缺失值的属性的分布作出估计,然后基于这m组观测值,对于这m组样本分别产生关于参数的m组估计值,给出相应的预测即,这时采用的估计方法为极大似然法,在计算机中具体的实现算法为期望最大化法(EM)。对B组估计出一组Y3的值,对C将利用 Y1,Y2,Y3它们的联合分布为正态分布这一前提,估计出一组(Y1,Y2)。

上例中假定了Y1,Y2,Y3的联合分布为正态分布。这个假设是人为的,但是已经通过验证(Graham和Schafer于1999),非正态联合分布的变量,在这个假定下仍然可以估计到很接近真实值的结果。

多重插补和贝叶斯估计的思想是一致的,但是多重插补弥补了贝叶斯估计的几个不足。

(1)贝叶斯估计以极大似然的方法估计,极大似然的方法要求模型的形式必须准确,如果参数形式不正确,将得到错误得结论,即先验分布将影响后验分布的准确性。而多重插补所依据的是大样本渐近完整的数据的理论,在数据挖掘中的数据量都很大,先验分布将极小的影响结果,所以先验分布的对结果的影响不大。

(2)贝叶斯估计仅要求知道未知参数的先验分布,没有利用与参数的关系。而多重插补对参数的联合分布作出了估计,利用了参数间的相互关系。

插补处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实。以下分析都是理论分析,对于缺失值由于它本身无法观测,也就不可能知道它的缺失所属类型,也就无从估计一个插补方法的插补效果。另外这些方法通用于各个领域,具有普遍性,那么针对一个领域的专业的插补效果就不会很理想,正是因为这个原因,很多专业数据挖掘人员通过他们对行业的理解,手动对缺失值进行插补的效果反而可能比这些方法更好。缺失值的插补是在数据挖掘过程中为了不放弃大量的信息,而采用的人为干涉缺失值的情况,无论是那种处理方法都会影响变量间的相互关系,在对不完备信息进行补齐处理的同时,我们或多或少地改变了原始的数据的信息系统,对以后的分析存在潜在的影响,所以对缺失值的处理一定要慎重。

参考

机器学习中如何处理缺失数据?

机器学习预处理之数据值缺失

流行病调查中缺失数据的常用填补方法)

坚持原创技术分享,您的支持将鼓励我继续创作!