我的一个项目面临两难选择。很少有变量没有足够的数据,这意味着缺少将近99%的数据观测值。
我正在考虑几种选择-
用均值/ knn插补法计算缺失值 将缺失值估算为0。
我想不出这个方向。如果有人可以帮助,那就太好了。
P.S。当缺少99%的数据时,使用均值插补让我感到不舒服。有人对此有理由吗?请告诉我。
数据包含397576观察值,其中以下是缺失值 {{3}}
答案 0 :(得分:1)
99%的数据丢失!!!!!!
好吧,如果您的数据集包含少于100,000个示例,那么您可能希望删除这些列,而不是通过任何方法进行估算。
如果您有较大的数据集,则使用均值插补或knn插补将是...确定。这些方法无法捕获数据的统计信息,并且会消耗内存。而是使用机器学习的贝叶斯方法,例如将高斯过程通过数据拟合或将变分自动编码器拟合到这些稀疏列。
1.)以下是一些链接,用于学习和使用高斯过程对数据集中的缺失值进行采样:
What is a Random Process?
How to handle missing values with GP?
2。)您还可以使用VAE估算缺失的值!!!
Try reading this paper
我希望这会有所帮助!
答案 1 :(得分:0)
我第一个给出好的答案的问题是:
您实际上试图将已完成的数据存档吗?
。 人们会以不同的原因估算数据,而用例则有很大的不同,例如,您可以将估算使用为:
99%的丢失数据很多-在大多数情况下,您都可以从中得出任何有意义的结果。
对于某些变量,它可能仍然有意义,并且至少会产生有意义的结果-但您必须谨慎处理并仔细考虑解决方案。
通常您可以说,插补并不是凭空创造条目的。现有数据中必须存在一个模式-然后将其应用于丢失的数据。 您可能需要可变地决定什么才有意义。
以可变电子邮件为例: 根据您的数据方式-每行可能代表具有特定电子邮件地址的不同客户。这样每一行都应该是一个唯一的邮件地址。在这种情况下,归因将没有任何好处-算法应如何猜测电子邮件。但是,如果数据的结构不同且客户出现在多行中-那么算法仍然可以填充一些有意义的数据。看到客户编号4始终具有相同的邮件地址,并在仅给出客户编号4且邮件丢失的行中填充它。