我用一个深度神经网络模型来做预测。我的问题是一个分类(二进制)问题。我希望计算每个预测的置信度分数。到目前为止,我使用predict_proba
of sklearn
来获得类的概率,并将其作为预测的模型可信度。这是正确的做法吗?怎样才能更好地计算信心分数呢?请添加相关文献以支持您的方法。
发布于 2020-01-21 03:09:43
一种估计我们对ANN预测的置信度的方法是使用退出扰动。这一想法是在本论文中提出的:作为贝叶斯近似的退出。表示深度学习中的模型不确定性。其核心思想是将辍学作为一种扰动方法,并检查预测结果如何随辍学率的变化而变化。一旦你取样了足够数量的“扭曲预测”,你就可以估计出类似于初始模型预测的置信区间。这种技术既适用于分类器,也适用于回归器。
您可以阅读对这种方法的解释,这里。
编辑:
更确切地说:
为了实现这一技术,使用Dropout()
层,它们也可以用于预测阶段(不仅仅是在训练期间)。你可以训练你的神经网络,然后把它的权重转移到另一个具有相同架构+辍学层的神经网络中。类似于:
new_model.set_weights(original_model.get_weights())
一旦有了Dropout()
的新的ANN有了它的权重,运行它并改变它的辍学超视距,得到预测和计算顺式。我知道这很费时,所以只有当你认为它真的值得的时候,才去做。另一种可能的实现方法可以使用自定义层完成,如:
model.add(Lambda(lambda x: K.dropout(x, level=0.5)))
https://datascience.stackexchange.com/questions/66817
复制相似问题