如何在某些属性可以作为输入和输出的数据集中填充缺失值?

人工智能 机器学习 数据集 数据预处理
2021-11-13 13:07:09

我有一个缺失值的数据集,我想使用机器学习方法来填充。更详细地说,有n 个人,最多提供 10 个属性,全部为数字。事实是,没有任何个人可以提供所有属性。第一行(每行包含给定个人的数据)看起来如下

[1NA3.612.1NA1.2NANA4NANA45NA7]

一般可以采用哪些方法?

我在分类器和随机森林方面有一些基本经验。模数这不是分类问题的明显区别,我最挣扎的是相同的变量(在例如 n-th 列)既是输入又是输出。说我想预测值A2,3在上面的数据集中。在这种情况下,第三列中的所有值都可以用作输入,当然排除在外A2,3 本身,这将是一个输出。

这似乎与给定一组其他属性(例如,根据教育、工作部门、资历等预测收入)的更传统的预测属性设置不同。在这种情况下,有时收入是要预测的,有时是用来预测另一个变量的。我知道给定向量的方法Xi, 可以逼近一个函数F并预测响应Yi

Yi=F(Xi)

在我描述的场景中,它看起来像一些隐式函数Φ是要找到的,所有变量的函数Zi(上面数据集中的列)

Φ(Zi)=0

什么方法可以处理这方面的问题?我知道这个问题可能太笼统了,但我找不到太多,可以做一个起点。对于我的进一步阅读,我已经对一些提示感到满意,但是任何更多的内容将不胜感激,谢谢。

1个回答

正如您在评论中提到的使用均值的可能问题,天真地使用中值类型的插补可能会导致错误的预测。在这种情况下,您需要首先检查您是否有足够的数据。

如果你有足够的数据

您可以尝试对缺失数据使用MICE(链式方程多元插补)算法。该方法基于完全条件规范,其中每个不完整变量由单独的模型估算。MICE 算法可以估算连续、二元、无序分类和有序分类数据的混合。这种方法的一个注意事项:它是一种计算量大的方法,所以如果你时间不短,它会使用它。

要记住的重要一点是,为了解决此类问题,您将需要多次迭代作为算法的一部分。您所描述的传统设置在本质上似乎不是迭代的,因此您遇到了同时输入和输出特征的问题。

如果您坚持寻找缺失值只是为了解决分类或回归等下游任务,您可以尝试 XgBoost 算法。它可以用作分类器或回归器。该算法可以固有地处理缺失值。来源:这个答案

如果您没有足够的数据

在这种情况下,您需要使用您对问题的见解或领域知识在模型中引入偏见。例如,在使用身高估计体重的可能问题中,您了解到您的数据包含更多的矮个子。因此,不要天真地使用总数据集的中值作为体重,您可以尝试根据身高对数据进行分类,例如“S”、“M”、“L”、“XL”,并估计每个分类的权重分别使用它们各自的 bin 的中值。要记住的是,当数据量少时,您需要通过使用您对问题的洞察力和领域知识来实施一些偏见,从而为模型提供知识。