处理缺失值以优化多项式特征

数据挖掘 特征工程 缺失数据 数据插补
2022-02-03 14:12:57

我正在使用一些数据来练习我的 Python 和机器学习技能,并希望从我认为相关且对预测输出有很大影响的两个特征创建多项式特征。

不幸的是,我的数据缺少值(np.NaN),sklearn 的 PolynomialFeatures() 无法处理这些值。估算这些值的最佳方法是什么?

我一直在尝试用 0、1、均值和中位数替换它们,对于我的数据集,使用中位数似乎是最好的解决方案。但这可以一概而论,其背后的直觉是什么?

我还想知道像 ffill、bfill 甚至 KNN 建模这样的填充方法在这种情况下是否有用。

非常感谢!

1个回答

没有一种全球性的——甚至可以说是局部性的——处理缺失数据的理想方法。这方面表明您提供算法的数据不完整,而插补只是一种旨在填补空白的技术。

数据插补的动机是使您的集合中的特征分布尽可能接近它试图描绘的任何真实世界分布。

如果中位数对您的场景更有效,我无法在无法访问您处理的数据的情况下准确了解为什么中位数背后的直觉,但积极的结果与您的特征分布密切相关,这对于您的缺失点与您计算的所有其他指标相比,特征的中位数可以更好地表示数据。我建议阅读诸如这篇文章之类的材料,这些材料既解释了又展示了不同插补技术的实现——正如你所提到的,KNN 就是其中之一。优点之一是查看不同方法如何适用于给定分布:

时间序列数据的插补技术

正如您在问题末尾已经指出的那样,诸如 KNN 之类的方法是一些直接的插补方法,比均值/中值插补更有利于您的案例。两者之间最大的区别在于,KNN 更好地保留了数据中的方差,而均值插补(如上图所示)将缺失的数据移向单个值。

由于没有一种方法是 100% 全局最优的,我建议您尝试它们 - KNN、多重插值等 - 并进行比较。在对您的数据最有意义的技术上投入适当的时间。