我正在使用深度神经网络模型进行预测。我的问题是分类(二进制)问题。我希望计算每个预测的置信度得分。到目前为止,我使用predict_proba来sklearn获取一个类的概率并将其视为该预测的模型置信度。这是正确的方法吗?计算置信度分数的更好方法是什么?请添加相关文献以支持您的方法。
计算神经网络预测的置信度分数
数据挖掘
scikit-学习
预测建模
预言
预测
2021-10-03 01:36:37
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)))