如何计算分类器输出的置信度?

人工智能 分类
2021-10-31 14:36:50

我正在训练一个分类器,我想收集不正确的输出供人类仔细检查。

分类器的输出是对应类别的概率向量。例如,[0.9,0.05,0.05]

这意味着当前对象为 A 类的概率为 0.9,而 B 类的概率仅为 0.05,C 类的概率也为 0.05。

在这种情况下,我认为结果具有很高的信心。因为 A 的概率高于 B 和 C。

在另一种情况下,[0.4,0.45,0.15],置信度应该很低,因为 A 和 B 很接近。

用于计算这种置信度的最佳公式是什么?

3个回答

二进制(2 类)分类的明显答案是 0.5。除此之外,前面的评论是正确的。我看到的其中一件事是在测试集上运行你的模型并保存预测概率结果。然后创建一个阈值变量,称为 thresh。然后在循环中将 thresh 从 0 增加到 1。在每次迭代中,将 thresh 与最高预测概率预测进行比较,称为 P。如果 P>thresh 将其声明为所选预测,则将其与真实预测进行比较。跟踪每个 thresh 值的错误。最后选择错误最少的 thresh 值。还有一些更复杂的方法,例如“top 2 accuracy” 其中 thresh 是根据在预测中具有最高概率或第二高概率的真实类来选择的。您可以构造加权误差函数并选择在测试集上具有最小净误差的 thresh 值。例如,错误函数可能如下所示。如果 P(最高)或 P(第二高)都不 = True 类,则错误 = 1。如果 P(second high) = true class,error=.5。如果 p(highest)=true 类错误=0。我自己从未尝试过,所以我不确定它的效果如何。当我有时间时,我会在一个有 100 个类的模型上尝试它,看看它的效果如何。我知道在 Imagenet 比赛中,他们不仅评估最高准确度,还评估“前 3 名”和“前 5 名”准确度。在那场比赛中有 1000 个类。

在您的人类策展人标记输出样本后,您可以使用https://scikit-learn.org/stable/modules/calibration.html

我假设您想要一个使用Softmax作为输出层的模型。

基本上,Softmax 将产生一组总和为 1 的概率。因此,如果您的数据中有三个类,Softmax 将默认产生这些置信度值,即使这并不是它的主要功能。

Softmax 通常用于多类数据。