机器学习:量化丢失数据的不确定性

时间:2015-11-10 17:45:31

标签: machine-learning classification missing-data uncertainty quantify

我的问题是我遇到的具体分类问题。

我的训练数据已经完成,并且没有丢失数据。我可以围绕它构建任何分类模型(SVM,随机森林等)以获得良好的结果。到目前为止,猪还没有飞到对流层。

问题是我想将这些模型应用于缺少功能的数据。我对任何形式的估算都不感兴趣。我想要一个"不确定性"测量会增加缺失的特征,我仍然希望模型吐出一个结果(即使具有很高的不确定性)。例如,对于一个记录,如果10个特征中的5个是空数据,则该模型将给出一个类但具有50%的不确定性(理想情况下,我可以指定"重要"每个变量是什么)。

我还没有在网上碰到任何类似的东西,而且我一直在寻找一段时间。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

为什么是数据特定问题?

让我们从非常简单的模型开始 - 线性模型(f(x) = sign(<w,x> + b))。我们还假设我们现在给出一个缺失值为x_i=N/A的向量,并且相应的权重为非零(w_i != 0);在不失一般性的情况下,w_i>0,我们可以看到,我总是可以&#34; imput&#34; x_i如此小(非常非常负面的值,如-10e10000),模型将回答-1并且对称,如此大的值,它将输出+1。为了进行预测(并进一步 - 量化确定性),我们需要假设x_i的可能值。我希望这个简单的例子表明,没有任何假设我们就会迷失 - 我们不能做任何事情,没有预测,没有确定性 - 什么都没有。这是机器学习中一个众所周知的事实 - 如果没有模型引发的偏差,我们就无法进行预测。在这种情况下 - 我们模拟缺失值。

我们能做什么?

我们需要同意这些价值观。有很多选择:

  • 我们可以假设均匀分布,例如,如果它是具有M值的分类变量,我们在每个可能的实例上放置1 / M概率。如果它介于0和1之间,我们可以在这样的范围内使用均匀分布。在这种情况下,我们需要有界值。如果值无界限 - 则没有统一的分布。
  • 我们假设一些无限支持分布,例如简单的高斯分布,它是任意的(0-均值,1-std)或从数据中学习(经验均值+经验性std)。
  • 我们推断出一些复杂的分布,可能使用非参数估计(KDE),甚至可能是从其他维度推断的条件分布。

好的,它与数据插补有什么不同?数据插补假设填写缺失值,它会为您提供。我在这里谈到的是将缺失值视为概率分布的思考 - 更多的贝叶斯方法。现在它不再是一个数据点,它是一个无限的点,具有不同的密度。

如何将经典ML技术应用于分发?

不幸的是,这里的事情变得复杂,因为它是完全针对模型的问题。因此,根据您使用的分类器/回归器的类型,您需要采用不同的方法。最简单的情况是随机森林,所以我将专注于这一个,后来为任何模型提供效率较低但更通用的解决方案。

随机森林案例

在决策树中,每个节点都是对某个功能的决定。因此,为了预测我们的分发&#34;我们只是将重点放在决策过程中 - 如果节点询问现有功能 - 我们会正常处理它。当我们被问及缺少功能时该怎么办?我们拆分执行,并计算两个路径,但是根据out分布和节点中的阈值计算权重。例如,让我们假设我们在[0,1]上选择了均匀分布,并且阈值现在是0.75(意味着该节点询问缺失值是否<0.75或> = 0.75)。我们在两个部分中分割计算和检查预测,具有<0.75决策的那个得到权重0.75(因为它是整数INT_{0}^{0.75} pdf(x) dx,其中pdf(x)是我们的均匀分布)并且第二路径得到权重0.25 。最后,我们得到了预期的价值。我们有信心吗?您可以计算,或者对置信区间进行更复杂的分析。

一般方法

最通用的方法(可以用作任何模型作为黑盒子)是蒙特卡罗方法。我们有我们的分布pdf(x),所以我们从这个分布重复采样,分类并记录输出。最后 - 我们收集选票并获得分类和信心。伪代码遵循

function CLASSIFY_WIT_NA(x, probability_model, model, k=1000):
  pdf <- probability_model(x.missing_values)
  predictions <- empty set
  for i=1 to k
    x' ~ pdf
    prediction <- model(x')
    predictions.add(prediction)

  class <- most_common_element_of(predictions)
  confidence <- count(class, predictions) / k