首页 > 解决方案 > 如何在 Kaggle 上的 Sberbank 俄罗斯住房市场数据集中估算缺失的“build_year”列?

问题描述

我正在从事一个学术项目,该项目涉及根据Sberbank 俄罗斯住房市场数据集预测房价。但是,我被困在data cleaning一个特定列的过程中,该列指示该属性的建造日期。我不能只impute用平均值或中位数替换缺失值。我一直在寻找所有可能的方法来估算有意义的数据,而不仅仅是随机数。此外,该项目的范围只允许我使用linear regression modelsinR所以我不希望模型喜欢XGBoost自动处理插补。

标签: rlinear-regressionmissing-datadata-cleaningimputation

解决方案


你的问题非常广泛。实际上有多个 R 包可以在这里为您提供帮助:

  • missForest
  • imputeR
  • mice
  • VIM
  • simputation

还有更多,有一个完整的官方TaskView专门用于列出 R 中的插补包。主要寻找 Single Imputation 包,因为它们非常适合您的任务。

无法告诉您,哪种方法最适合您的特定任务。这取决于您的数据和之后使用的线性回归模型。

因此,您必须测试,使用哪种插补算法+回归模型的组合可以获得最佳的整体性能。

因此,总体而言,您正在测试使用哪种特征工程/预处理 + 插补算法 + 回归模型来归档最佳结果。

请注意测试中的泄漏(意外地在测试和训练数据集之间共享信息)。通常你可以结合训练+测试数据并对完整的数据集进行插补。但重要的是,从测试数据集中删除目标变量。(因为你不会有这个真实的数据)

大多数提到的包都很容易使用,这里是missForest的一个例子:

library("missForest")

# create example dataset with missing values
missing_data_iris <- prodNA(iris, noNA = 0.1)  

# Impute the dataset
missForest(missing_data_iris)  

其他软件包同样易于使用。通常对于所有这些单一的插补包,它只是一个函数,您可以在其中提供不完整的数据集,然后在没有 NA 的情况下取回数据。


推荐阅读