㈠ 一文看懂数据清洗:缺失值、异常值和重复值的处理
作者:宋天龙
如需转载请联系华章 科技
数据缺失分为两种:一种是 行记录的缺失 ,这种情况又称数据记录丢失;另一种是 数据列值的缺失 ,即由于各种原因导致的数据记录中某些列的值空缺。
不同的数据存储和环境中对于缺失值的表示结果也不同,例如,数据库中是Null,Python返回对象是None,Pandas或Numpy中是NaN。
在极少数情况下,部分缺失值也会使用空字符串来代替,但空字符串绝对不同于缺失值。从对象的实体来看,空字符串是有实体的,实体为字符串类型;而缺失值其实是没有实体的,即没有数据类型。
丢失的数据记录通常无法找回,这里重点讨论数据列类型缺失值的处理思路。通常有4种思路。
1. 丢弃
这种方法简单明了,直接删除带有缺失值的行记录(整行删除)或者列字段(整列删除),减少缺失数据记录对总体数据的影响。 但丢弃意味着会消减数据特征 ,以下任何一种场景都不宜采用该方法。
2. 补全
相对丢弃而言,补全是更加常用的缺失值处理方式。通过一定的方法将缺失的数据补上,从而形成完整的数据记录,对于后续的数据处理、分析和建模至关重要。常用的补全方法如下。
3. 真值转换法
在某些情况下,我们可能无法得知缺失值的分布规律,并且无法对于缺失值采用上述任何一种补全方法做处理;或者我们认为数据缺失也是一种规律,不应该轻易对缺失值随意处理,那么还有一种缺失值处理思路—真值转换。
该思路的根本观点是, 我们承认缺失值的存在,并且把数据缺失也作为数据分布规律的一部分 ,将变量的实际值和缺失值都作为输入维度参与后续数据处理和模型计算中。但是变量的实际值可以作为变量值参与模型计算,而缺失值通常无法参与运算,因此需要对缺失值进行真值转换。
以用户性别字段为例,很多数据库集都无法对会员的性别进行补足,但又舍不得将其丢弃掉,那么我们将选择将其中的值,包括男、女、未知从一个变量的多个值分布状态转换为多个变量的真值分布状态。
然后将这3列新的字段作为输入维度替换原来的1个字段参与后续模型计算。
4. 不处理
在数据预处理阶段,对于具有缺失值的数据记录不做任何处理,也是一种思路。这种思路主要看后期的数据分析和建模应用, 很多模型对于缺失值有容忍度或灵活的处理方法 ,因此在预处理阶段可以不做处理。
常见的能够自动处理缺失值的模型包括:KNN、决策树和随机森林、神经网络和朴素贝叶斯、DBSCAN(基于密度的带有噪声的空间聚类)等。这些模型对于缺失值的处理思路是:
在数据建模前的数据归约阶段,有一种归约的思路是 降维 ,降维中有一种直接选择特征的方法。假如我们通过一定方法确定带有缺失值(无论缺少字段的值缺失数量有多少)的字段对于模型的影响非常小,那么我们根本就不需要对缺失值进行处理。
因此,后期建模时的字段或特征的重要性判断也是决定是否处理字段缺失值的重要参考因素之一。
对于缺失值的处理思路是先通过一定方法找到缺失值,接着分析缺失值在整体样本中的分布占比,以及缺失值是否具有显著的无规律分布特征,然后考虑后续要使用的模型中是否能满足缺失值的自动处理,最后决定采用哪种缺失值处理方法。
在选择处理方法时,注意投入的时间、精力和产出价值,毕竟,处理缺失值只是整个数据工作的冰山一角而已。
在数据采集时,可在采集端针对各个字段设置一个默认值。以MySQL为例,在设计数据库表时,可通过default指定每个字段的默认值,该值必须是常数。
在这种情况下,假如原本数据采集时没有采集到数据,字段的值应该为Null,虽然由于在建立库表时设置了默认值会导致“缺失值”看起来非常正常,但本质上还是缺失的。对于这类数据需要尤其注意。
异常数据是数据分布的常态,处于特定分布区域或范围之外的数据通常会被定义为异常或“噪音”。产生数据“噪音”的原因很多,例如业务运营操作、数据采集问题、数据同步问题等。
对异常数据进行处理前,需要先辨别出到底哪些是真正的数据异常。从数据异常的状态看分为两种:
大多数数据挖掘或数据工作中,异常值都会在数据的预处理过程中被认为是噪音而剔除,以避免其对总体数据评估和分析挖掘的影响。但在以下几种情况下,我们无须对异常值做抛弃处理。
1. 异常值正常反映了业务运营结果
该场景是由业务部门的特定动作导致的数据分布异常,如果抛弃异常值将导致无法正确反馈业务结果。
例如:公司的A商品正常情况下日销量为1000台左右。由于昨日举行优惠促销活动导致总销量达到10000台,由于后端库存备货不足导致今日销量又下降到100台。在这种情况下,10000台和100台都正确地反映了业务运营的结果,而非数据异常案例。
2. 异常检测模型
异常检测模型是针对整体样本中的异常数据进行分析和挖掘,以便找到其中的异常个案和规律,这种数据应用围绕异常值展开,因此异常值不能做抛弃处理。
异常检测模型常用于客户异常识别、信用卡欺诈、贷款审批识别、药物变异识别、恶劣气象预测、网络入侵检测、流量作弊检测等。在这种情况下,异常数据本身是目标数据,如果被处理掉将损失关键信息。
3. 包容异常值的数据建模
如果数据算法和模型对异常值不敏感,那么即使不处理异常值也不会对模型本身造成负面影响。例如在决策树中,异常值本身就可以作为一种分裂节点。
数据集中的重复值包括以下两种情况:
去重是重复值处理的主要方法,主要目的是保留能显示特征的唯一数据记录。但当遇到以下几种情况时,请慎重(不建议)执行数据去重。
1. 重复的记录用于分析演变规律
以变化维度表为例。例如在商品类别的维度表中,每个商品对应的同1个类别的值应该是唯一的,例如苹果iPhone7属于个人电子消费品,这样才能将所有商品分配到唯一类别属性值中。但当所有商品类别的值重构或升级时(大多数情况下随着公司的发展都会这么做),原有的商品可能被分配了类别中的不同值。如下表所示展示了这种变化。
此时,我们在数据中使用Full join做跨重构时间点的类别匹配时,会发现苹果iPhone7会同时匹配到个人电子消费品和手机数码2条记录。对于这种情况,需要根据具体业务需求处理。
2. 重复的记录用于样本不均衡处理
在开展分类数据建模工作时,样本不均衡是影响分类模型效果的关键因素之一。解决分类方法的一种方法是对少数样本类别做简单过采样,通过随机过采样,采取简单复制样本的策略来增加少数类样本。
经过这种处理方式后,也会在数据记录中产生相同记录的多条数据。此时,我们不能对其中的重复值执行去重操作。
3. 重复的记录用于检测业务规则问题
对于以分析应用为主的数据集而言,存在重复记录不会直接影响实际运营,毕竟数据集主要是用来做分析的。
但对于事务型的数据而言, 重复数据可能意味着重大运营规则问题 ,尤其当这些重复值出现在与企业经营中与金钱相关的业务场景时,例如:重复的订单、重复的充值、重复的预约项、重复的出库申请等。
这些重复的数据记录通常是由于数据采集、存储、验证和审核机制的不完善等问题导致的,会直接反映到前台生产和运营系统。以重复订单为例:
因此,这些问题必须在前期数据采集和存储时就通过一定机制解决和避免。如果确实产生了此类问题,那么数据工作者或运营工作者可以基于这些重复值来发现规则漏洞,并配合相关部门,最大限度地降低由此而带来的运营风险。
本文摘编自《Python数据分析与数据化运营》(第2版),经出版方授权发布。
㈡ 性别教育的缺失,会造成哪些问题
引言:性别意识是非常重要的,如果自己家的孩子不知道男女有别,不知道怎样去保护自己的隐私部位的话,就会链举出现问题。但是有很多的国内家长都不重视性别教育,性别教育缺失是容易造成一些不好的影响的,那么都会造成哪些问题呢?
㈢ 交通银行九要素缺失客户怎么处理
九要素指的是睁启姓名、证件类型、证件号码、证件有效期、国籍、性别、职业、联系地址、联系电悉扮如话这九种信息,你只需要把这些信息缺圆前往交通银行补齐即可。
交通银行九要素缺失很多业务都不能办理要尽快补齐。
㈣ 对于缺失值的处理
建议:不同场景下的数据缺失机制不同,这需要工程师基于对业务选择合适的填充方法。
如何判断缺失值类型?
缺失值的分类按照数据缺失机制可分为:
可忽略的缺失
不可忽略的缺失
平常工作中遇到的缺失值大部分情况下是随机的(缺失变量和其他变量有关)
这个就可以用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.
㈤ 性别教育的缺失,那会造成哪些问题
性别教育的缺失会尘扮造成以下三个问题,第一会导致孩子有性别认知障碍,不能够很好的找准自己的性别定位。第二,性别教育的缺失,会导致孩子误入性早熟的歧途,不能够正确的看待性别的差异。第三袭兄拦,性别教育的缺失,会让孩子迷失在性别上的道德感,可能拍胡会做出伤风败俗的事情。
㈥ 股票账户中个人的职业信息需要更新吗如果不更新会影响交易吗
需要。影响。
1、根据信陪华泰证券公告,自然人客户的身份基本信息包括姓名、性别、国籍、职业、住所地或者工作单位地址、联系方式等。
2、对于上述基本信息缺失的客户需在券商指定的截至日期前登录相应券商的APP客户端修改。
3、股票账户中的个人职业信息,工作单位地址等基本内搏灶容不更新修基坦扮改,就不能进行股票交易。
㈦ 性别教育的缺失,那会造成哪些问题
性别教育的缺失会造成小孩子和同性以及异性之间的关系过于亲密,在这样的情况下很有可能就会出现一些其他的问题。如果小孩子没有明确的性别认知的话,那么小孩子就会觉得自己和身边的人没有任何的区别,在这样的情况下就有可能会和异性做出一些过度亲密的行为方式,在成长的过程当中可能也并不会意识到自己存在着怎样的问题。
如果爸爸妈妈在教育孩子的时候忽略了性别教育的话,那么很容易就会导致小孩子在这个过程当中出现了相应的影响,这一切对于孩子而言都是非常不对的。性别教育不仅能够让小孩子对于这些东西有着更清楚的认知,还能够让孩子学会更好地保护自己,所以说爸爸妈妈千万不要忽略。
㈧ spss雄性雌性显示不出来
题主是否想询问“spss雄性雌性显示不出来的原因”?有以下几种原因。
1、变量的值未正确编码为1和2。在SPSS中,将男性编码为空余兄1,女性编码为2。数据集中的性别变量被编码为其他值(例如0和1),则会出现显示问题。
2、变量的标签未正确设置。变量标签未设置为“性别”或“男女”,则无法正确显示变量。
3、数据集中缺少性别数据毁陵。没有录入性别数据或数据斗袭缺失率较高,则无法正确显示性别变量。
4、在数据输入时出现错误。在数据输入时意外将男性标记为女性或者女性标记为男性,则会导致SPSS显示不正确的性别结果。
㈨ 数据分析中的缺失值处理
数据分析中的缺失值处理
没有高质量的数据,就没有高质量的数据挖掘结果,数据值缺失是数据分析中经常遇到的问题之一。当缺失比例很小时,可直接对缺失记录进行舍弃或进行手工处理。但在实际数据中,往往缺失数据占有相当的比重。这时如果手工处理非常低效,如果舍弃缺失记录,则会丢失大量信息,使不完全观测数据与完全观测数据间产生系统差异,对这样的数据进行分析,你很可能会得出错误的结论。岩中
造成数据缺失的原因
现实世界中的数据异常杂乱,属性值缺失的情粗仔山况经常发全甚至是不可避免的。造成数据缺失的原因是多方面的:
信息暂时无法获取。例如在医疗数据库中,并非所有病人的所有临床检验结果都能在给定的时间内得到,就致使一部分属性值空缺出来。
信息被遗漏。可能是因为输入时认为不重要、忘记填写了或对数据理解错误而遗漏,也可能是由于数据采集设备的故障、存储介质的故障、传输媒体的故障、一些人为因素等原因而丢失。
有些对象的某个或某些属性是不可用的。如一个未婚者的配偶姓名、一个儿童的固定收入状况等。
有些信息(被认为)是不重要的。如一个属性的取值与给定语境是无关。
获取这些信息的代价太大。
系统实时性能要求较高。即要求得到这些信息前迅速做出判断或决策。
对缺失值的处理要具体问题具体分析,为什么要具体问题具体分析呢?因为属性缺失有时并不意味着数据缺失,缺失本身是包含信息的,所以需要根据不同应用场景下缺失值可能包含的信息进行合理填充。下面通过一些例子来说明如何具体问题具体分析,仁者见仁智者见智,仅供参考:
“年收入”:商品推荐场景下填充平均值,借贷额度戚烂场景下填充最小值;
“行为时间点”:填充众数;
“价格”:商品推荐场景下填充最小值,商品匹配场景下填充平均值;
“人体寿命”:保险费用估计场景下填充最大值,人口估计场景下填充平均值;
“驾龄”:没有填写这一项的用户可能是没有车,为它填充为0较为合理;
”本科毕业时间”:没有填写这一项的用户可能是没有上大学,为它填充正无穷比较合理;
“婚姻状态”:没有填写这一项的用户可能对自己的隐私比较敏感,应单独设为一个分类,如已婚1、未婚0、未填-1。
缺失的类型
在对缺失数据进行处理前,了解数据缺失的机制和形式是十分必要的。将数据集中不含缺失值的变量称为完全变量,数据集中含有缺失值的变量称为不完全变量。从缺失的分布来将缺失可以分为完全随机缺失,随机缺失和完全非随机缺失。
完全随机缺失(missing completely at random,MCAR):指的是数据的缺失是完全随机的,不依赖于任何不完全变量或完全变量,不影响样本的无偏性。如家庭地址缺失。
随机缺失(missing at random,MAR):指的是数据的缺失不是完全随机的,即该类数据的缺失依赖于其他完全变量。例如财务数据缺失情况与企业的大小有关。
非随机缺失(missing not at random,MNAR):指的是数据的缺失与不完全变量自身的取值有关。如高收入人群的不原意提供家庭收入。
对于随机缺失和非随机缺失,删除记录是不合适的,随机缺失可以通过已知变量对缺失值进行估计;而非随机缺失还没有很好的解决办法。
说明:对于分类问题,可以分析缺失的样本中,类别之间的比例和整体数据集中,类别的比例
缺失值处理的必要性
数据缺失在许多研究领域都是一个复杂的问题。对数据挖掘来说,缺省值的存在,造成了以下影响:
系统丢失了大量的有用信息;
系统中所表现出的不确定性更加显著,系统中蕴涵的确定性成分更难把握;
包含空值的数据会使挖掘过程陷入混乱,导致不可靠的输出。
数据挖掘算法本身更致力于避免数据过分拟合所建的模型,这一特性使得它难以通过自身的算法去很好地处理不完整数据。因此,缺省值需要通过专门的方法进行推导、填充等,以减少数据挖掘算法与实际应用之间的差距。
缺失值处理方法的分析与比较
处理不完整数据集的方法主要有三大类:删除元组、数据补齐、不处理。
删除元组
也就是将存在遗漏信息属性值的对象(元组,记录)删除,从而得到一个完备的信息表。这种方法简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与初始数据集的数据量相比非常小的情况下非常有效,类标号缺失时通常使用该方法。
然而,这种方法却有很大的局限性。它以减少历史数据来换取信息的完备,会丢弃大量隐藏在这些对象中的信息。在初始数据集包含的对象很少的情况下,删除少量对象足以严重影响信息的客观性和结果的正确性;因此,当缺失数据所占比例较大,特别当遗漏数据非随机分布时,这种方法可能导致数据发生偏离,从而引出错误的结论。
说明:删除元组,或者直接删除该列特征,有时候会导致性能下降。
数据补齐
这类方法是用一定的值去填充空值,从而使信息表完备化。通常基于统计学原理,根据初始数据集中其余对象取值的分布情况来对一个缺失值进行填充。数据挖掘中常用的有以下几种补齐方法:
人工填写(filling manually)
由于最了解数据的还是用户自己,因此这个方法产生数据偏离最小,可能是填充效果最好的一种。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。
特殊值填充(Treating Missing Attribute values as Special values)
将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个有趣的概念,可能导致严重的数据偏离,一般不推荐使用。
平均值填充(Mean/Mode Completer)
将初始数据集中的属性分为数值属性和非数值属性来分别进行处理。
如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值;
如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。与其相似的另一种方法叫条件平均值填充法(Conditional Mean Completer)。在该方法中,用于求平均的值并不是从数据集的所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。
这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推测缺失值。
热卡填充(Hot deck imputation,或就近补齐)
对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。
K最近距离邻法(K-means clustering)
先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。
使用所有可能的值填充(Assigning All Possible values of the Attribute)
用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。
组合完整化方法(Combinatorial Completer)
用空缺属性值的所有可能的属性取值来试,并从最终属性的约简结果中选择最好的一个作为填补的属性值。这是以约简为目的的数据补齐方法,能够得到好的约简结果;但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。
回归(Regression)
基于完整的数据集,建立回归方程。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关时会导致有偏差的估计。
期望值最大化方法(Expectation maximization,EM)
EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。
多重填补(Multiple Imputation,MI)
多重填补方法分为三个步骤:
为每个空值产生一套可能的填补值,这些值反映了无响应模型的不确定性;每个值都被用来填补数据集中的缺失值,产生若干个完整数据集合。
每个填补数据集合都用针对完整数据集的统计方法进行统计分析。
对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。该方法的计算也很复杂。
C4.5方法
通过寻找属性间的关系来对遗失值填充。它寻找之间具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。
就几种基于统计的方法而言,删除元组法和平均值法差于热卡填充法、期望值最大化方法和多重填充法;回归是比较好的一种方法,但仍比不上hot deck和EM;EM缺少MI包含的不确定成分。值得注意的是,这些方法直接处理的是模型参数的估计而不是空缺值预测本身。它们合适于处理无监督学习的问题,而对有监督学习来说,情况就不尽相同了。譬如,你可以删除包含空值的对象用完整的数据集来进行训练,但预测时你却不能忽略包含空值的对象。另外,C4.5和使用所有可能的值填充方法也有较好的补齐效果,人工填写和特殊值填充则是一般不推荐使用的。
不处理
补齐处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实,在对不完备信息进行补齐处理的同时,我们或多或少地改变了原始的信息系统。而且,对空值不正确的填充往往将新的噪声引入数据中,使挖掘任务产生错误的结果。因此,在许多情况下,我们还是希望在保持原始信息不发生变化的前提下对信息系统进行处理。
不处理缺失值,直接在包含空值的数据上进行数据挖掘的方法包括贝叶斯网络和人工神经网络等。
贝叶斯网络提供了一种自然的表示变量间因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。
人工神经网络可以有效的对付缺失值,但人工神经网络在这方面的研究还有待进一步深入展开。
知乎上的一种方案:
4.把变量映射到高维空间。比如性别,有男、女、缺失三种情况,则映射成3个变量:是否男、是否女、是否缺失。连续型变量也可以这样处理。比如Google、网络的CTR预估模型,预处理时会把所有变量都这样处理,达到几亿维。这样做的好处是完整保留了原始数据的全部信息、不用考虑缺失值、不用考虑线性不可分之类的问题。缺点是计算量大大提升。
而且只有在样本量非常大的时候效果才好,否则会因为过于稀疏,效果很差。
总结
大多数数据挖掘系统都是在数据挖掘之前的数据预处理阶段采用第一、第二类方法来对空缺数据进行处理。并不存在一种处理空值的方法可以适合于任何问题。无论哪种方式填充,都无法避免主观因素对原系统的影响,并且在空值过多的情形下将系统完备化是不可行的。从理论上来说,贝叶斯考虑了一切,但是只有当数据集较小或满足某些条件(如多元正态分布)时完全贝叶斯分析才是可行的。而现阶段人工神经网络方法在数据挖掘中的应用仍很有限。值得一提的是,采用不精确信息处理数据的不完备性已得到了广泛的研究。不完备数据的表达方法所依据的理论主要有可信度理论、概率论、模糊集合论、可能性理论,D-S的证据理论等。