假设我们有一个包含 3 个类的多类分类任务:
{芝士蛋糕、冰淇淋、苹果派}
鉴于我们有一个训练有素的神经网络,可以对随机厨师更喜欢的三种甜点中的哪一种进行分类。另外,假设输出层由 3 个激活了 softmax 的神经元组成,每个神经元代表喜欢相应甜点的概率。
例如,这种网络的可能输出可能是:
输出(chef_1) = { P(芝士蛋糕) = 0.3; P(冰淇淋)= 0.1;P(苹果派) = 0.6; }
输出(chef_2) = { P(芝士蛋糕) = 0.2; P(冰淇淋)= 0.1;P(苹果派) = 0.7; }
输出(厨师_3)= { P(芝士蛋糕)= 0.1;P(冰淇淋)= 0.1;P(苹果派) = 0.8; }
在这种情况下,所有实例(chef_1、chef_2 和 chef_3)都可能更喜欢 Apple Pie,但信心不同(例如,chef_3 比 chef_1 更喜欢 Apple Pie,因为网络概率输出分别为 0.8 和 0.6)
假设我们有一个包含 1000 位厨师的新数据集,并且我们想要计算他们最喜欢的甜点的分布,我们只需对 1000 位厨师中的每一位进行分类,并根据最大概率的神经元确定他最喜欢的甜点。
我们还希望通过丢弃最大预测概率低于 0.6 的厨师来提高预测准确性。让我们假设 1000 人中有 200 人以这样的概率被预测,我们将它们丢弃。
在这种情况下,如果一种甜点比另一种更容易预测,我们可能会偏向 800 位厨师(预测的概率高于 0.6)的分布。
例如,如果类的平均预测概率是:
平均P(芝士蛋糕)= 0.9
平均 P(冰淇淋)= 0.5
平均P(苹果派)= 0.8
并且我们丢弃了预测概率低于 0.6 的厨师,在被丢弃的 200 位厨师中,可能有更多的厨师更喜欢冰淇淋,这将导致其他 800 位厨师的分布有偏差。
在这个很长的介绍之后(我很高兴你还在阅读),我的问题是:
我们是否需要为每个班级设置不同的阈值?(例如,在 Cheesecake 预测中丢弃概率低于 X 的实例,在 Ice Cream 预测中丢弃概率低于 Y 的实例,以及在 Apple Pie 预测中丢弃概率低于 Z 的实例)。
如果是,我如何在不影响我的 1000 个厨师数据集的整体分布的情况下校准阈值(即丢弃低概率预测以提高准确性,同时保留原始数据集的分布)。
我尝试使用每个类别的平均预测概率作为阈值,但我不能保证它不会影响分布(因为这些阈值可能会过度拟合测试集而不是 1000 名厨师数据集)。
有什么建议或相关论文吗?