处理许多缺失值

数据挖掘 r 缺失数据
2021-09-27 20:45:00

我有一个数据集,我想对其执行多元线性回归。数据集的维度为 832085 行和 11 列。数据非常混乱,考虑到规模和我缺乏经验,我对如何清理它们感到困惑。

首先,11 列中有 6 列的 NA 值超过 277000。在那种情况下,我知道我不能删除它们,因为它们是数据集的很大一部分,所以我必须对它们进行估算。通常我的意思是替换,但我读过这种方法可能会在数据中产生偏差,我不希望这样。我在 R 中尝试了 Amelia 和 mouse 包,鼠标无法正常运行,过了一段时间它给了我一个错误,Amelia 非常快并完成了 5 次插补,但它在数据集中引入了许多负值。

有这方面类似经验的人吗?

2个回答

当您有缺失值时,有许多不同的方法可以估算数据。很多人只是删除那些通常包含有用的训练数据的记录。此外,有些人主张使用简单的方法,例如在特征缺失时使用特征的均值。我不喜欢这种方法,因为它看起来太简单了。

这是一个很好的演示文稿,详细介绍了几种方法,特别是通过最大似然法引起人们对插补的注意。

但是,我最喜欢的方法是协同过滤,本文对此进行了详细介绍协同过滤的好处是它很容易从头开始编写,也很受欢迎,因此通常包含在大多数机器学习库中。

还可以考虑查看您可能正在使用的特定机器学习库中可能提供的插补技术。

最后,请注意……估算数据会增加一些线性相关性,因此您应该期望您可能必须稍微增加正则化以避免高方差情况。我会尝试(交叉验证)删除功能,删除记录,然后使用协同过滤来输入数据,看看什么会产生最好的结果。

希望这可以帮助!

这不是一个技术问题。您应该决定哪一个对您更重要:包含这些 277000 NA 值的列或行。可能列更重要。

我建议首先删除行,构建模型(从一个变量开始,逐渐添加更多变量),计算模型度量(例如调整后的 R-Squared)。在这一点上,你有一些基线。

然后恢复这些已删除的行并查看您的模型测量值如何变化。也许这 6 列不是您的响应变量的预测因子,您无需担心。没有什么神奇的方法可以说明哪种方法适用于您的数据。试一试。这正是统计学和机器学习中所做的。

在更好地了解您的数据后,您可以决定是否填充缺失值。请记住,数据分析是一个迭代过程。