如何在多类分类任务中校准神经网络输出层的阈值?

时间:2017-11-29 13:03:58

标签: neural-network probability distribution softmax probability-distribution

假设我们有一个多类分类任务,包含3个类

{芝士蛋糕,冰淇淋,苹果派}

鉴于我们有一个训练有素的神经网络,可以对随机厨师更喜欢的三种甜点中的哪一种进行分类。此外,假设输出层由3个具有softmax激活的神经元组成,这样每个神经元代表喜欢相应甜点的概率

例如,此类网络的可能输出可能是:

输出(chef_1)= {P(芝士蛋糕)= 0.3; P(冰淇淋)= 0.1; P(Apple Pie)= 0.6; }

输出(chef_2)= {P(芝士蛋糕)= 0.2; P(冰淇淋)= 0.1; P(Apple Pie)= 0.7; }

输出(chef_3)= {P(芝士蛋糕)= 0.1; P(冰淇淋)= 0.1; P(Apple Pie)= 0.8; }

在这种情况下,所有实例(chef_1,chef_2和chef_3)都可能更喜欢Apple Pie,但信心不同(例如,chef_3更可能更喜欢Apple Pie而不是chef_1,因为网络概率输出为0.8和0.6分别地)

鉴于我们有一个新的 1000名厨师的数据集,我们想要计算他们最喜欢的甜点的分布,我们只需要对1000名厨师中的每一位进行分类,并根据他们确定他最喜欢的甜点。最大概率的神经元。

我们还希望通过丢弃最大预测概率低于0.6的厨师来提高预测准确性。让我们假设1000个中有200个是以这种概率预测的,我们放弃了它们。

在这种情况下,如果一个甜点比另一个甜点更容易预测,我们可能会偏向800名厨师(预计概率高于0.6)的分布。

例如,如果类的平均预测概率是:

AverageP(芝士蛋糕)= 0.9

AverageP(冰淇淋)= 0.5

AverageP(Apple Pie)= 0.8

我们丢弃那些被预测概率低于0.6的厨师,在被丢弃的200名厨师中,可能会有更多喜欢冰淇淋的厨师,这将导致他们之间产生偏差。其他800。

经过这么长时间的介绍(我很高兴您还在阅读),我的问题是:

  1. 每个班级都需要不同的门槛吗? (例如,在Cheesecake预测中丢弃概率低于X的实例,在Ice Cream预测中丢弃概率低于Y的实例,并且在Apple Pie预测中丢弃概率低于Z的实例)。

  2. 如果是,如何在不影响我的1000名厨师数据集的整体分布的情况下校准阈值(即丢弃预测的概率很低,以提高准确性,同时保留分布在原始数据集上。)

  3. 我试图将每个类别的平均预测概率用作阈值,但我不能保证它不会影响分布(因为这些阈值可能会过度适应测试集而不是1000厨师数据集)。

    有任何建议或相关文件吗?

1 个答案:

答案 0 :(得分:0)

我有类似的多标签问题。我已经将每个级别的F1分数绘制到阈值,以查看每个级别的最大F1分数在哪里。每个班级都有所不同。对于某些人来说,精确度与召回率在阈值> 1时更高。 0.8虽然对某些人来说甚至低至0.4。我选择了不同的门槛来将班级称为班级。 但我想如果你不想偏向一个高精度或高召回的类,你可以根据测试集选择不同的阈值(你可以优化测试集集合)