处理缺失数据的机器学习算法

机器算法验证 机器学习 缺失数据
2022-01-28 12:06:43

我正在尝试使用包括实验室值在内的高维临床数据开发预测模型。数据空间稀疏,有 5k 个样本和 200 个变量。这个想法是使用特征选择方法(IG、RF 等)对变量进行排名,并使用排名靠前的特征来开发预测模型。

虽然朴素贝叶斯方法的特征选择进展顺利,但由于变量空间中的数据缺失 (NA),我现在在实施预测模型时遇到了问题。是否有任何机器学习算法可以仔细处理缺失数据的样本?

4个回答

这取决于您使用的型号。如果您正在使用一些生成模型,那么有一种处理缺失值的原则方法()。例如,在朴素贝叶斯或高斯过程等模型中,您将整合缺失的变量,并选择剩余变量的最佳选项。

对于判别模型,它更复杂,因为这是不可能的。有多种方法。Gharamani 和 Jordan描述了一种原则性方法,其中缺失值被视为隐藏变量,并使用 EM 算法的变体来估计它们。以类似的方式,Smola 等人。描述 SVM 算法的一个变体,它明确地解决了这个问题。

请注意,通常建议用变量的平均值替换缺失值。如第一篇论文所述,这是有问题的。有时,我遇到过对变量进行回归以估计缺失值的论文,但我不能说这是否适用于您的情况。

R 包 randomForestSRC 实现了 Breiman 的随机森林,可处理大量分析(回归、分类、生存、竞争风险、无监督、多变量)的缺失数据。

请参阅以下帖子:

为什么随机森林不处理预测变量中的缺失值?

尝试使用最近邻进行插补以消除缺失数据。

此外,Caret 包具有多种算法的接口,它们都带有 R 中的预测方法,可用于预测新数据。也可以使用相同包的 k 折交叉验证来估计性能指标。

还有一些算法可以在构建预测模型时使用缺失值作为唯一且不同的值,例如分类和回归树。比如 xgboost