我们尝试了 5 种缺失数据插补方法:最简单的方法获胜(排序)

我们通过适当的交叉验证和统计测试测试了五种插补方法。平均插补赢得了预测,但破坏了特征关系。

来源:KDnuggets

设置

当您发现 20% 的值缺失时,您正要训练模型。你会删除这些行吗?用平均值填充它们?使用更奇特的东西?答案比你想象的更重要。

如果你用谷歌搜索,你会发现几十种插补方法,从极其简单的(只需使用平均值)到复杂的(迭代机器学习模型)。您可能认为奇特的方法更好。KNN 考虑相似的行。MICE 构建预测模型。他们的表现一定比平均水平要好,对吧?

我们也是这么想的。我们错了。

实验

我们从 StrataScratch 项目中获取了作物推荐数据集 - 22 种作物类型的 2,200 个土壤样本,具有氮水平、温度、湿度和降雨量等特征。随机森林在这方面的准确率达到 99.6%。它几乎干净得令人怀疑。

此分析扩展了我们的农业数据分析项目,该项目通过 EDA 和统计测试探索相同的数据集。在这里,我们要问:当干净的数据遇到现实世界的问题——缺失值时会发生什么?

非常适合我们的实验。

我们引入了 20% 的缺失值(完全随机,模拟传感器故障),然后测试了五种插补方法:

我们的测试非常彻底;我们在五个随机种子中使用了 10 倍交叉验证(每种方法总共运行 50 次)。为了确保测试集中的信息不会泄漏到训练集中,我们的插补模型仅在训练集上进行训练。对于我们的统计测试,我们应用了 Bonferroni 校正。我们还对 KNN 和 MICE 的输入特征进行了归一化,就好像我们没有对它们进行归一化一样,在为这些方法执行距离计算时,值范围在 0 到 300(降雨量)之间的输入将比输入范围在 3 到 10(pH 值)之间产生更大的影响。我们的笔记本中提供了完整的代码和可重现的结果。

然后我们运行它并观察结果。

惊喜

这是我们得到的:

等等,什么?

没那么快。

情节转折