Top-k Accuracy:模型优化策略不一定徒劳无功

文摘   2024-10-15 09:08   辽宁  

构建模型通常是一个迭代过程,给定数据集:

  • 训练模型

  • 评估模型

  • 改进,直到满意为止


你的改进策略不一定徒劳无功!

如何评估模型是否进步了呢?通常会使用某些性能指标来评估改进策略的有效性。

然而,在多分类问题中,当使用“Accuracy”指标评估改进策略有效性时,通常带有欺骗性。

换句话,某些改进策略其实已经提升模型性能了,但通过“Accuracy”这个指标没有反映出来。

“Accuracy”陷阱

这里的“Accuracy”其实应该是“Top-1 Accuracy”。

在多分类问题中,Accuracy由具有最高概率值的标签决定。

实际的标签虽然可能并不是模型预测概率最高的标签,但它位于模型输出的前“k”个标签之中。

如下面图,实际的标签(类别C)并不是概率最高的标签,但它至少在前2个预测概率最高的标签之中(类别B和类别C):

如果上一个版本中,类别C的输出概率是最低的,就像下面所示:

虽然在这两种情况下,最终的预测结果都是错误的(模型预测标签C不是最高概率)。

但是,在从“版本1”迭代到“版本2”的过程中,通过使用一些模型改进技术,我们确实取得了实质性的进步(从倒数第一上升到第二)。

尽管如此,准确率(Accuracy)完全忽略了这一点,因为它只关注概率最高的标签。

解决办法:top-k Accuracy

在模型迭代过程中,“top-k Accuracy”可能会持续提高,这反映了性能的提升。然而,准确率可能会在一段时间内保持不变,如下所示:

所以,top-k Accuracy常用于评估模型改进策略,模型最终性能仍然要通过top-1 Accuracy评估。

在Scikit-learn中也提供了top-k Accuracy评估指标。

在二分类问题中,因为只有两个类别,模型的输出通常只是一个概率值,用于表示正样本的概率,使用准确率、精确率、召回率就够用了。

性能指标vs损失函数

最后再说一下模型性能评估指标和损失值的区别。

损失值用于训练过程中,衡量模型预测结果与真实标签之间的差异,指导模型的参数更新。

模型性能指标主要用于评估模型的泛化能力,即模型在未见过的数据上的表现。通常衡量模型的预测准确性、精确率、召回率、F1 分数等。


人工智能大讲堂
专注人工智能数学原理和应用
 最新文章