【问题标题】:Handle missing values : When 99% of the data is missing from most columns (important ones)处理缺失值:当大多数列(重要的列)缺少 99% 的数据时
【发布时间】:2019-10-30 03:17:22
【问题描述】:

我的项目面临两难境地。很少有变量没有足够的数据,这意味着几乎 99% 的数据观察都丢失了。

我正在考虑几个选项 -

  • 用均值/knn 插补来插补缺失值

  • 用 0 填补缺失值。

我想不出这方面的任何事情。如果有人可以提供帮助,那就太好了。

附:当 99% 的数据丢失时,我对使用平均插补感到不舒服。有人对此有理由吗?请告诉我。

数据有 397576 个观察值,其中以下是缺失值 enter image description here

【问题讨论】:

    标签: python machine-learning data-science data-analysis data-cleaning


    【解决方案1】:

    99% 的数据丢失了!!!??? 好吧,如果您的数据集的示例少于 100,000 个,那么您可能希望删除这些列,而不是通过任何方法进行估算。 如果您有一个更大的数据集,那么使用均值插补或 knn 插补将是...OK。这些方法无法捕获数据的统计信息,并且会占用内存。而是使用机器学习的贝叶斯方法,例如通过数据拟合高斯过程或将变分自动编码器拟合到那些稀疏列。
    1.) 以下是学习和使用高斯过程从数据集中对缺失值进行采样的一些链接:
    What is a Random Process?
    How to handle missing values with GP?

    2.) 您还可以使用 VAE 来估算缺失值!!!
    Try reading this paper

    我希望这会有所帮助!

    【讨论】:

    • 我有 397536 个观察结果。对于大多数数据列,缺失的观测值约为 394500。因此,如果我使用任何插补方法,我将使用从 1% 的数据中收集的平均值来插补 99% 的数据。我会检查这些链接。谢谢你的帮助 Tirth。
    • 我还在原始问题中添加了缺失值的摘要供您参考。
    • 您的大部分数据都丢失了,因此无法删除列。我强烈建议使用 VAE 来估算缺失值。 Hese 是一个已实现的 VAE - colab.research.google.com/drive/…
    【解决方案2】:

    我要给出一个好的答案的第一个问题是:

    您实际上要使用已完成的数据归档什么?

    。 人们出于不同的原因估算数据,并且用例会产生很大的不同,例如您可以将估算用作:

    1. 训练机器学习模型的预处理步骤
    2. 解决方案有一个没有间隙的漂亮图形/绘图
    3. 用于评估科学或医学研究的统计推断工具

    99% 的缺失数据非常多 - 在大多数情况下,您可以预期,这不会产生任何有意义的结果。

    对于某些变量,它仍然可能有意义,并且至少会产生一些有意义的东西 - 但您必须小心处理并仔细考虑您的解决方案。

    一般而言,您可以说,插补不会凭空创建条目。现有数据中必须存在模式 - 然后将其应用于缺失的数据。 您可能必须根据变量来决定什么是有意义的。

    以您的可变电子邮件为例: 取决于您的数据方式 - 每行可能代表具有特定电子邮件地址的不同客户。所以每一行都应该是一个唯一的邮件地址。在这种情况下,插补不会有任何好处——算法应该如何猜测电子邮件。但如果数据结构不同并且客户出现在多行中——那么算法仍然可以填充一些有意义的数据。看到客户编号 4 始终具有相同的邮件地址,并将其填充到仅给出客户编号 4 并且邮件丢失的行。

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2015-12-18
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多