当我的列丢失 50% 的数据时,我该怎么办?

数据挖掘 分类 熊猫 数据插补
2022-02-21 10:30:02

我有一个正在预处理的数据集。但是在我的分类列(其中 3 个)中,我有“??” 在它的位置。它们构成了数据的 50%。事实上 3 列有这个。我的问题是我应该如何估算这个?我要换吗?未知还是我用 NaN 替换它。

由于我的最终目标是分类问题,我将对其应用各种算法,例如 NB 分类器、随机森林、决策树、K 邻居。有时你是否估算并不重要,因为有些算法会为你做

2个回答

这取决于你对问题的了解。首先,你应该分类为什么它会丢失?

结构性缺失数据 结构性缺失数据是由于逻辑原因而缺失的数据。换句话说,是因为不应该存在而丢失的数据。检查这个

  • 结构性缺失数据是由于逻辑原因而缺失的数据。换句话说,是因为不应该存在而丢失的数据。

  • 完全随机缺失 (MCAR) 缺失数据中没有模式

  • 随机缺失(MAR)另一种假设,在某种程度上被称为随机缺失(MAR),它假设我们可以根据其他数据预测缺失的值。

然后根据您对问题的了解选择您的插补技术,如果您有其他情况可以尝试(来自此来源)

  • 将 NA 编码为 -1 或 -9999。这对于以正值为主的数值特征以及一般的基于树的模型来说效果相当好。在过去,当开箱即用的机器学习库和算法不太擅长处理缺失数据时,这曾经是一种更常见的方法。
  • 逐个删除缺失数据。在这里,您只需从包含缺失值的数据集中删除所有案例/行。在具有非常少缺失值的非常大的数据集的情况下,这种方法可能会非常有效。但是,如果缺失值在统计上也不同的情况下,此方法可能会严重扭曲使用此数据的预测模型。这种方法的另一个主要问题是它将无法处理任何包含缺失值的未来数据。如果您的预测模型是为生产而设计的,这可能会在部署中产生严重的问题。
  • 用它们出现的特征的平均值/中值替换缺失值。这适用于数字特征。中位数/均值的选择通常与数据的分布形式有关。对于不平衡的数据,中位数可能更合适,而对于对称和更正态分布的数据,均值可能是更好的选择。标签将 NA 编码为分类变量的另一个级别。如果可以对特征进行数字转换(单热编码、频率编码等),这适用于基于树的模型和其他模型。该技术不适用于逻辑回归。
  • 运行估算缺失数据的预测模型。这应该与某种交叉验证方案一起完成,以避免泄漏。这可能非常有效,并且可以帮助最终模型。使用给定行中缺失值的数量来创建新的工程特征。如上所述,缺失的数据通常本身就有很多有用的信号,这是对这些信息进行编码的好方法。

这取决于 :

  • 目前的数据是否应该(或证明)为您的问题提供信息?如果是,您可能希望保留该功能。如果没有,您可能会考虑扔掉它们。

  • 缺失信息的过程是否提供信息?根据该答案,您可能会估算一个值或不估算值。您可以添加一部分缺失值作为特征。

  • 您要使用的模型,有些接受 NA,有些则不接受。

真的没有普遍的答案。