我正在尝试使用包括实验室值在内的高维度临床数据来开发预测模型。数据空间稀疏,包含5k个样本和200个变量。想法是使用特征选择方法(IG,RF等)对变量进行排名,并使用排名靠前的特征来开发预测模型。
尽管使用朴素贝叶斯方法进行的特征选择进展顺利,但由于变量空间中缺少数据(NA),我现在在实现预测模型时遇到了一个问题。是否有任何机器学习算法可以仔细处理缺少数据的样本?
我正在尝试使用包括实验室值在内的高维度临床数据来开发预测模型。数据空间稀疏,包含5k个样本和200个变量。想法是使用特征选择方法(IG,RF等)对变量进行排名,并使用排名靠前的特征来开发预测模型。
尽管使用朴素贝叶斯方法进行的特征选择进展顺利,但由于变量空间中缺少数据(NA),我现在在实现预测模型时遇到了一个问题。是否有任何机器学习算法可以仔细处理缺少数据的样本?
Answers:
这取决于您使用的模型。如果使用某种生成模型,则有一种原则上的方法可以处理缺失值()。例如,在诸如朴素贝叶斯(Naive Bayes)或高斯过程(Gaussian Processes)之类的模型中,您将整合丢失的变量,然后选择带有剩余变量的最佳选项。
对于区分模型,它是比较复杂的,因为这是不可能的。有很多方法。Gharamani和Jordan提出了一种有原则的方法,其中将缺失值视为隐藏变量,并使用EM算法的一种变体来估计它们。以类似的方式,Smola等人。描述了明确解决该问题的SVM算法的一种变体。
请注意,通常建议用变量的平均值替换缺失值。如第一篇论文所述,这是有问题的。有时,我遇到过对变量进行回归以估计缺失值的论文,但是我不能说这是否适用于您的情况。
R-package randomForestSRC实现了Breiman的随机森林,可处理各种分析(回归,分类,生存,竞争风险,无监督,多元)的缺失数据。
请参阅以下帖子:
尝试使用最近的邻居进行插补以消除丢失的数据。
另外,Caret包具有与多种算法的接口,并且它们都附带了R中的预测方法,可用于预测新数据。还可以使用同一包的k倍交叉验证来评估性能指标。
lightgbm可以从框中处理NaN(http://lightgbm.readthedocs.io/en/latest/)。