在多个类的情况下如何调整分类器的概率阈值?

机器算法验证 可能性 分类 精确召回 多级
2022-03-21 05:21:10

二元概率分布

上面是一个非常简单的示例,它基于一些概率为二元类案例输出 0 或 1 的概率分类器。
此外,如何更改阈值也很简单。您将阈值设置为更高或更低的 50% 以更改精度/召回平衡,从而针对您自己的独特情况进行优化。

然而,当我们尝试对多类场景有相同的想法时,即使只有如下图所示的三个类(想象这些是概率)

三测区

你如何开始思考如何转移门槛?
默认是取概率最大的类(这里是第3类)。
如果你想取得这种平衡(影响精确度/召回率)你能做什么?
一个想法可能是让第一个最主要的类重新规范化它们并考虑在这两者之间设置一个阈值,但这听起来不是一个优雅的解决方案。
是否有可靠的方法可以遵循?

1个回答

您可以在类上使用先验分布。

让我们假设您的模型计算类别概率的向量v. 您可以定义先验概率向量π然后计算你的班级概率与vπ, 在哪里表示逐元素乘积。所以你的观察属于类的概率c正比于vcπc.

如果你想要一个正确的分布,你只需要重新规范化。

在您的示例中,如果您希望您的预测稍微偏向于第 1 类,您可以定义π=(0.4,0.3,0.3), 例如。

如果您考虑一下,在二进制情况下,这就是您在更改阈值时隐式执行的操作。假设您建立了以下规则:如果您的概率向量是v你的决策函数是f(x), 然后

f(x)={2v2θ1otherwise
对于一些θ(0,1).

那么这相当于(至少在做出决定时)计算类概率与(v11θ,v2θ),所以你会定义π=(11θ,1θ).

您还可以了解的价值π从你的数据。例如,您可以计算每个类别的比例并将其用作先验概率。

对于将这种先验假设纳入模型的更原则性方法,您可能需要查看贝叶斯推理。