计算神经网络预测的置信度分数

数据挖掘 scikit-学习 预测建模 预言 预测
2021-10-03 01:36:37

我正在使用深度神经网络模型进行预测。我的问题是分类(二进制)问题。我希望计算每个预测的置信度得分。到目前为止,我使用predict_probasklearn获取一个类的概率并将其视为该预测的模型置信度。这是正确的方法吗?计算置信度分数的更好方法是什么?请添加相关文献以支持您的方法。

1个回答

估计我们对 ANN 预测的置信度的一种方法是使用dropout perturbations这个想法是在这篇论文中提出的:Dropout as a Bayesian Approximation。表示深度学习中的模型不确定性核心思想是使用 dropout 作为扰动方法,并检查预测如何随着不同级别的 dropout 而变化。一旦您采样了足够数量的“失真预测”,您就可以估计类似于初始模型预测周围的置信区间的东西。该技术适用于分类器和回归器。

您可以在此处阅读此方法的说明。


编辑:

更准确地说:

为了实现这种技术,使用Dropout()层,它们也可以用于预测阶段(不仅仅是在训练期间)。您可以训练您的神经网络,然后将其权重转移到另一个具有相同架构 + dropout 层的 ANN。就像是:

new_model.set_weights(original_model.get_weights())

一旦新的 ANNDropout()具有权重,运行它并改变它的 dropout 超参数,得到预测并计算 CI。我知道这很耗时,所以只有在您认为真的值得时才这样做。另一种可能的实现方式可以使用自定义层来完成,例如:

model.add(Lambda(lambda x: K.dropout(x, level=0.5)))