Skip to content

如何可靠地改进概率型多分类模型

How to Reliably Improve Probabilistic Multiclass-classification Models

ML 建模通常是一个迭代过程。给定某个数据集:

  • 我们训练一个模型。
  • 我们评估它。
  • 然后不断改进,直到我们对性能感到满意。
  • 这里,任何模型改进策略(比如引入一个新特征)的效果,都是用某种性能指标来衡量的。
  • 然而,我常常观察到,在改进概率型多分类模型时,如果用“准确率(Accuracy)”来衡量效果,这种做法可能会有点误导。

ds p116 1

ds p116 2

传统做法评估整体准确率,但这一指标在整个模型改进过程中往往只会非常缓慢地反映出来。

ds p117 1

换句话说,我们有可能在改进模型这件事上其实进展不错,但“准确率”却(暂时)没有反映出来。我们来理解一下。

在概率型多分类模型中,准确率是根据输出概率最高的那个标签来判定的:

ds p117 2

现在,有可能真实标签并不是模型给出最高概率的那个标签,但它排在前“k”个输出标签之内。

比如在下图中,真实标签(Class C)并不是概率最高的标签,但至少它排在前 2 个预测概率之内(Class B 和 Class C):

ds p118 1

那如果在我们模型的更早版本中,Class C 的输出概率是最低的,就像下图所示呢:

ds p118 2

当然,在两种情况下最终预测都是错的。不过,在使用某些模型改进技术从“版本 1”迭代到“版本 2”的过程中,我们确实取得了不错的进展。

尽管如此,准确率完全无视了这一点,因为它只关心概率最高的那个标签。

ds p119 1

希望你理解了这里的问题。

每当我在构建并迭代改进任何概率型多分类模型时,我都会使用 top-k 准确率(top-k accuracy score)。顾名思义,它判断的是真实标签是否落在模型预测概率最高的前 k 个标签之内。你大概也猜到了,top-1 准确率就是传统的准确率。这是一个好得多的指标,用来判断我改进模型的努力是否真的转化为预测性能上有意义的提升。比如,如果 top-3 准确率从 75% 升到 90%,这就充分说明我们为改进模型所做的一切是有效的:

  • 之前,正确预测只有 75% 的时候落在前 3 个标签之内。
  • 而现在,正确预测有 90% 的时候落在前 3 个标签之内。

因此,人们可以有效地把工程精力重新引导到正确的方向。当然,我所说的只应当用来评估模型改进的努力。这是因为真正的预测能力最终还是要靠传统的模型准确率来判定。所以也要确保你在准确率方面在逐步前进。理想情况下,我们期望“Top-k 准确率”在模型迭代过程中持续上升,这反映了性能的提升。而准确率可能会在一段时间内保持不变,如下图所示:

ds p120 1

Top-k 准确率在 Sklearn 中也可用:

ds p120 2

本站内容仅供学习交流,版权归原作者所有。