我有两个数据集,即训练和测试集。 如果我在训练集中有NA值,但在测试集中没有NA值,我通常会删除训练集中的行(如果很少),仅此而已。
但是现在,我在这两个集合中都有很多NA值,因此我放弃了具有大部分NA值的功能,我想知道现在该怎么做。
我是否应该在测试集中删除相同的功能,并估算其余缺失的值?
还有其他可以用来预处理数据的技术吗?
诸如Logistic回归,决策树或神经网络等机器学习算法可以处理缺失值吗?
数据集来自Kaggle竞赛,因此我无法在拆分数据之前进行预处理
预先感谢
答案 0 :(得分:2)
这个问题不是那么容易回答,因为它取决于NA值的类型。
NA值是否由于某种随机原因?还是有他们遗漏的原因(调查中没有匹配的多项选择答案,或者人们不愿回答的问题)
首先,可以使用简单的插补策略,这样您就可以在数据上拟合模型。因此,我的意思是类似均值插补或估计概率分布中的采样。甚至随机采样值。请注意,如果仅取现有值的平均值,就可以更改数据集的统计信息,即减少标准偏差。选择模型时,请牢记这一点。
第二步,您将不得不应用领域知识来找到良好的填充值。
关于最后一个问题:如果要使用机器学习模型填充值,则可以使用数据集的其他功能,并隐式假定缺失的功能与其他功能之间存在依赖关系。根据稍后将用于预测的模型,您可能无法从中间估算中受益。
我希望这会有所帮助,但是正确答案的确取决于数据。
答案 1 :(得分:1)
通常,机器学习算法不能很好地应对缺失值(由于大部分很好的原因,因为不知道为什么会缺失它们或意味着缺失是什么,对于不同的观察结果甚至可能有所不同)。 / p>
优良作法是在训练集和测试集分开之前进行预处理(训练和测试数据是否确实是数据的随机子集,应该如此?),并确保对这两个集进行相同的处理。
有很多方法可以处理丢失的数据,这在很大程度上取决于数据以及目标,这是更好的方法。如果您需要更多具体建议,请随时与我们联系。