数据缺失值处理办法 您所在的位置:网站首页 数据缺失应该怎么做 数据缺失值处理办法

数据缺失值处理办法

2024-07-14 16:41| 来源: 网络整理| 查看: 265

1.随机森林模型怎么处理异常值?

隨机森:林是已故统计学家Leo Breiman提出的,和gradient boosted tree—样,它的基模型是决策树。在介绍RF时,Breiman就提出两种解决缺失值的方去 (Random forests - classification description):

方法1-众数填充(快速简草但效果差):

把数值型变畺(numerical variables)中的缺失值用其所对应的类别中 (class)的中位数(median)替换。描述型变畺(categorical variables)缺失的部分用所对应类别中出现最多的数值替代(most frequent non-missing value)。以数值型变悬为例:

[公式]

方法2(耗时费力但效果好):

虽然依然是便用中位数出现次敎最多的数来进行替换,方法2引入了权重。即对需要替换的数据先和其他数据做相似度测量(proximity measurement)也就是下面公式中的Weight,在补全缺失点是相似的点的数据会有更高的权重W。以数值型变畺为例:

[公式]

Breiman说明了第二种方法的效果更好,但雲要的时间更长,这也是为什么工具包中不提供数据补全的功能,因为会影响到工具包的效率。

在训练、验证、测试含有缺失值时怎么办? 1. 在选择分裂属性的时候,训练样本存在缺失值,如何处理?

(计算分裂损失减少值时,忽略特征缺失的样本,最终计算的值乘以比例(实际参与计算的样本数除以总的样本数))

假如你使用ID3算法,那么选择分类属性时,就要计算所有属性的熵增(信息增益,Gain)。假设10个样本,属性是a,b,c。在计算a属性熵时发现,第10个样本的a属性缺失,那么就把第10个样本去掉,前9个样本组成新的样本集,在新样本集上按正常方法计算a属性的熵增。然后结果乘0.9(新样本占raw样本的比例),就是a属性最终的熵。

2. 分类属性选择完成,对训练样本分类,发现样本属性缺失怎么办?

(将该样本分配到所有子节点中,权重由1变为具有属性a的样本被划分成的子集样本个数的相对比率,计算错误率的时候,需要考虑到样本权重)

比如该节点是根据a属性划分,但是待分类样本a属性缺失,怎么办呢?假设a属性离散,有1,2两种取值,那么就把该样本分配到两个子节点中去,但是权重由1变为相应离散值个数占样本的比例。然后计算错误率的时候,注意,不是每个样本都是权重为1,存在分数。

这也是C4.5的算法。例如分西瓜中“纹理”是所有属性中最大属性,被用于对根节点进行划分。划分结果是使用编号为{1,2,3,4,5,6,15}的样本进入了“纹理=清晰”,{7,9,13,14,17}样本进入了“纹理=稍糊”,{12,11,16}进入了“样本=模糊”分支,且权重都为1。编号为{8}的样本在属性=“纹理”上出现了缺失值,因此它将同时进入三个分支中,但是权重在三个子节点分别调整为\(\frac{7}{15},\frac{5}{15},\frac{3}{15}\)。

3. 训练完成,给测试集样本分类,有缺失值怎么办?

(分类时,如果待分类样本有缺失变量,而决策树决策过程中没有用到这些变量,则决策过程和没有缺失的数据一样;否则,如果决策要用到缺失变量,决策树也可以在当前节点做多数投票来决定(选择样本数最多的特征值方向)。)

(U)如果有单独的缺失分支,使用此分支。(c)把待分类的样本的属性a值分配一个最常出现的a的属性值,然后进行分支预测。(S)根据其他属性为该待分类样本填充一个属性a值,然后进行分支处理。(F)在决策树中属性a节点的分支上,遍历属性a节点的所有分支,探索可能所有的分类结果,然后把这些分类结果结合起来一起考虑,按照概率决定一个分类。(H)待分类样本在到达属性a节点时就终止分类,然后根据此时a节点所覆盖的叶子节点类别状况为其分配一个发生概率最高的类。

2.xgboost怎幺处理缺失值?

In many real-world problems, it is quite common for the input x to be sparse. There are multiple possible causes for sparsity: 1) presence of missing values in the data; 2)frequent zero entries in the statistics; and, 3) artifacts of feature engineering such as one-hot encoding. It is important to make the algorithm aware of the sparsity pattern in the data. In order to do so, we propose to add a default direction in each tree node, which is shown in Fig. 4. When a value is missing in the sparse matrix x, the instance is classified into the default direction. There are two choices of default direction in each branch. The optimal default directions are learnt from the data. The algorithm is shown in Alg. 3. The key improvement is to only visit the non-missing entries Ik. The presented algorithm treats the non-presence as a missing value and learns the best direction to handle missing values. The same algorithm can also be applied when the non-presence corresponds to a user specified value by limiting the enumeration only to consistent solutions. xgboost处理缺失值的方法和其他树模型不同。根据作者TianqiChen在论文[1]中章节3.4的介绍,xgboost把缺失值当做稀疏矩阵来对待,本身的在节点分裂时不考虑的缺失值的数值。缺失值数据会被分到左子树和右子树分别计层损失,选择较优的那一个。如果训练中没有数据缺失,预测时出现了数据缺失,那么默认被分类到右子树。具体的介绍可以参考[2,3]。 img

这样的处理方法固然巧妙,但也有风险:假设了训练数据和预测数据的分布相同,比如缺失值的分布也相同,不过直觉上应该影响不是很大。

3.什么样的模型对缺失值更敏感? 树模型对缺失值的敏感度低,大部分时候可以在数据缺失时时使用。 涉及到距离度量(distance measurement)时,如计算两个点之间的距离,缺失数据就变得比较重要。因为涉及到"距离离"这个概念,那么缺失值处理不当就会导致效果很差,如K近邻算法(KNN)、支持向量机(SVM)。 线性模型的代价函数(loss function)往往涉及到距离(distance)的计算,计罰筛则值和真实值之间的差别,这容易导致对缺失值敏感。 神经网络的鲁棒强,对于缺失数据不是非常敏感,但一是没有那么多数据可供使用。 贝叶斯模型对于缺失数据也比较稳定,数据量很小的时候贝叶斯模型。 总体来看,对于有缺失值的数据在经过缺失处理后:

数据量很小,朴素贝叶斯 数据量适中或者较大,用树横型,优先xgboost 数据量较大,也可以用神经网络 避免使用距离度量相关的模型,如KNN和SVM

4.xgboost 判断特征重要程度的三种指标 get_fscore 有三种种评判特征重要程度的方法:

‘weight’ - the number of times a feature is used to split the data across all trees. ‘gain’ - the average gain of the feature when it is used in trees. ‘cover’ - the average coverage of the feature when it is used in trees.

weight - 该特征在所有树中被用作分割样本的特征的次数。

gain - 在所有树中的平均增益。

cover - 在树中使用该特征时的平均覆盖范围。(还不是特别明白) ————————————————



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有