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

问题描述 投票:1回答:3

我正在使用深度神经网络模型(在keras中实现)进行预测。像这样的东西:

def make_model():
 model = Sequential()       
 model.add(Conv2D(20,(5,5), activation = "relu"))
 model.add(MaxPooling2D(pool_size=(2,2)))    
 model.add(Flatten())
 model.add(Dense(20, activation = "relu"))
 model.add(Lambda(lambda x: tf.expand_dims(x, axis=1)))
 model.add(SimpleRNN(50, activation="relu"))
 model.add(Dense(1, activation="sigmoid"))    
 model.compile(loss = "binary_crossentropy", optimizer = adagrad, metrics = ["accuracy"])

 return model

model = make_model()
model.fit(x_train, y_train, validation_data = (x_validation,y_validation), epochs = 25, batch_size = 25, verbose = 1)

##Prediciton:
prediction = model.predict_classes(x)
probabilities = model.predict_proba(x) #I assume these are the probabilities of class being predictied

我的问题是分类(二进制)问题。我希望计算每个prediction的置信度得分,即,我想知道-我的模型是99%肯定是“ 0”还是58%是“ 0”。

我已经找到了一些有关如何执行此操作的观点,但是无法实现。我希望遵循的方法是:“使用分类器,当您输出时,您可以将值解释为属于每个特定类的概率。您可以使用它们的分布来粗略衡量您对某个观察属于该类的信心。“

我应该如何使用上述模型进行预测,以便对每个预测都充满信心?我会喜欢一些实际的例子(最好是在Keras中)。

tensorflow machine-learning keras confidence-interval uncertainty
3个回答
0
投票

如何使用softmax作为最后一层的激活?让我们这样说:

model.add(Dense(2, activation='softmax'))    
model.compile(loss='categorical_crossentropy', optimizer = adagrad, metrics = ["accuracy"])

这样,对于每个数据点,模型将为您提供概率似的结果,该结果表明您的数据点属于两个类别中的每个类别的可能性是多少。

例如,对于给定的X,如果模型返回(0.3,0.7),您将知道X属于类别1的可能性大于类别0。并且您知道,可能性估计为0.3大于0.7 。


0
投票

在Keras中,有一种称为predict()的方法可用于顺序模型和功能模型。如果您将binary_crossentropy用作损失函数,并使用具有S形激活函数的最终密集层,则此方法可以很好地工作。

这里是如何使用一个测试数据实例调用它。下面,mymodel.predict()将返回两个概率加起来为1.0的数组。这些值是您提到的置信度得分。您可以进一步使用np.where(),如下所示,确定两个概率(大于50%的概率)中的哪个是最终类别。

yhat_probabilities = mymodel.predict(mytestdata, batch_size=1)
yhat_classes = np.where(yhat_probabilities > 0.5, 1, 0).squeeze().item()

我已经知道,逻辑回归输出的概率可以解释为置信度。

这里有一些链接可以帮助您得出自己的结论。

https://machinelearningmastery.com/how-to-score-probability-predictions-in-python/

how to assess the confidence score of a prediction with scikit-learn

https://stats.stackexchange.com/questions/34823/can-logistic-regressions-predicted-probability-be-interpreted-as-the-confidence

https://kiwidamien.github.io/are-you-sure-thats-a-probability.html

如果发现有用,请随时提出我的答案。


0
投票

softmax是一种估计模型预测的置信度的有问题的方法。

最近有一些关于该主题的论文。

您可以寻找神经网络的“校准”以找到相关的论文。

这是一个示例,您可以以-https://arxiv.org/pdf/1706.04599.pdf开始

© www.soinside.com 2019 - 2024. All rights reserved.