分类的召回率和精度

机器算法验证 机器学习 公制
2022-01-21 15:15:22

我阅读了一些关于召回率和精度的定义,尽管每次都是在信息检索的背景下。我想知道是否有人可以在分类上下文中对此进行更多解释,并可能举例说明。比如说我有一个二元分类器,它给我 60% 的精度和 95% 的召回率,这是一个好的分类器吗?

也许对我的目标有所帮助,你认为最好的分类器是什么?(数据集不平衡。多数类的样本数量是少数类的两倍)

我个人会说5,因为接收器操作曲线下的面积。

(如您在此处看到的,模型 8 的精度低,召回率非常高,但 AUC_ROC 最低,这使它成为一个好模型?还是一个坏模型?)

在此处输入图像描述


编辑:

我有一个包含更多信息的 excel 文件: https ://www.dropbox.com/s/6hq7ew5qpztwbo8/comparissoninbalance.xlsx

在本文档中,可以找到接收器操作曲线下的面积和精确召回曲线下的面积。连同地块。

4个回答

分类器是否“好”真的取决于

  1. 还有什么可用于您的特定问题。显然,您希望分类器比随机或幼稚的猜测更好(例如,将所有事物分类为属于最常见的类别),但有些事物比其他事物更容易分类。
  2. 不同错误的成本(误报与误报)和基本比率。区分这两者并计算出结果非常重要,因为可能有一个准确率非常高的分类器(在某些测试样本上正确分类)在实践中完全没用(比如你正在尝试检测一种罕见的疾病或某些疾病)不常见的恶作剧行为,并计划在检测到后采取一些行动;大规模测试需要付出一些代价,而补救行动/治疗通常也涉及重大风险/成本,因此考虑到大多数命中将是误报,从成本/收益的角度来看,它最好什么都不做)。

为了理解召回率/精度和灵敏度/特异性之间的联系,回到混淆矩阵是很有用的:

                      Condition: A             Not A

  Test says “A”       True positive (TP)   |   False positive (FP)
                      ----------------------------------
  Test says “Not A”   False negative (FN)  |    True negative (TN)

召回率是 TP/(TP + FN),而精度是 TP/(TP+FP)。这反映了问题的本质:在信息检索中,您希望尽可能多地识别相关文档(即召回)并避免必须对垃圾进行分类(即精度)。

使用同一张表,传统的分类指标是 (1) 灵敏度定义为 TP/(TP + FN) 和 (2) 特异性定义为 TN/(FP + TN)。因此召回率和灵敏度只是同义词,但精度和特异性的定义不同(如召回率和灵敏度,特异性是相对于列总数定义的,而精度是指行总数)。精度有时也称为“阳性预测值”,或者很少称为“假阳性率”(但请参阅我对真阳性、假阳性、假阴性和真阴性之间的关系的回答,关于围绕假阳性定义的混淆速度)。

有趣的是,信息检索指标不涉及“真阴性”计数。这是有道理的:在信息检索中,您并不关心是否正确分类否定实例本身,您只是不希望它们中的太多污染您的结果(另请参阅为什么不回忆考虑真正的否定?)。

由于这种差异,如果没有额外的信息,即真阴性的数量,或者阳性和阴性病例的总体比例,就不可能从特异性到精确度或相反。但是,对于相同的语料库/测试集,更高的特异性总是意味着更好的精度,因此它们密切相关。

在信息检索上下文中,目标通常是从大量文档中识别少量匹配项。由于这种不对称性,实际上在保持灵敏度/召回率恒定的同时,获得良好的精确度比获得良好的特异性要困难得多。由于大多数文档是无关紧要的,因此误报的机会比真阳性多得多,即使分类器在平衡的测试集上具有令人印象深刻的准确性,这些误报也会淹没正确的结果(这实际上是在我的场景中发生的情况)在我上面的第 2 点中提到)。因此,您确实需要优化精度,而不仅仅是为了确保良好的特异性,因为即使是 99% 或更高的令人印象深刻的比率有时也不足以避免大量误报。

通常在灵敏度和特异性(或召回率和精度)之间进行权衡。直观地说,如果你撒得更广,你会发现更多相关的文档/阳性案例(更高的敏感度/召回率),但你也会得到更多的误报(更低的特异性和更低的精度)。如果你把所有东西都归为正类,你就有 100% 的召回率/敏感度,一个糟糕的精度和一个几乎没用的分类器(“大部分”是因为如果你没有任何其他信息,那么假设它不会是完全合理的)在沙漠中下雨并采取相应的行动,所以也许输出毕竟不是无用的;当然,你不需要一个复杂的模型)。

考虑到这一切,60% 的准确率和 95% 的召回率听起来并不算太糟糕,但同样,这实际上取决于领域以及您打算用这个分类器做什么。


有关最新评论/编辑的一些附加信息:

同样,您可以期待的表现取决于具体情况(在这种情况下,这将是训练集中存在的确切情绪集、图片/视频的质量、亮度、遮挡、头部运动、表演或自发视频,个人相关或个人无关模型等),但 F1 超过 0.7 对这类应用程序来说听起来不错,即使最好的模型可以在某些数据集上做得更好 [参见 Valstar,MF,Mehu,M.,Jiang, B., Pantic, M., & Scherer, K. (2012)。第一个面部表情识别挑战的元分析。IEEE Transactions on Systems, Man, and Cyber​​netics, Part B: Cyber​​netics, 42 (4), 966-979.]

这种模型在实践中是否有用是一个完全不同的问题,显然取决于应用程序。请注意,面部“表情”本身就是一个复杂的话题,从典型的训练集(姿势表情)到任何现实生活情况都不容易。这在这个论坛上是相当离题的,但它会对您可能考虑的任何实际应用产生严重后果。

最后,模型之间的直接比较是另一个问题。我对您提供的数字的看法是模型之间没有任何显着差异(如果您参考我上面引用的论文,该领域知名模型的 F1 分数范围要广泛得多)。在实践中,技术方面(标准库的简单性/可用性、不同技术的速度等)可能会决定实施哪种模型,除非成本/收益和总体速率使您非常喜欢精确度或召回率。

在二元分类的上下文中,示例要么是正面的,要么是负面的。

  • 召回解决了这个问题:“给定一个正面的例子,分类器会检测到它吗?”
  • 精度解决了这个问题:“给定分类器的积极预测,它正确的可能性有多大?”

因此,这取决于重点是放在积极的例子上还是积极的预测上。

可以说“在至少 90% 的召回率下,具有最高精度的分类器是 4”。但如果重要的是预测的质量,那么在精度至少为 70% 的分类器中,召回率最高的分类器是 6。

从用于计算 ROC 区域(一致性概率;c-index)的连续预测转变为不连续的不正确评分规则(强制选择分类准确性)会导致各种异常,并会误导分析师选择错误的预测变量和/或错误的型号。根据适当的评分规则(例如,对数似然/偏差/对数概率评分规则;Brier 评分(二次概率准确性评分))做出决策要好得多。这种方法的众多优点之一是可以识别由于中等概率引起的不确定性而分类对您的健康有害的观察结果。

准确率和召回率都不能说明全部情况,并且很难将具有 90% 召回率和 60% 准确率的预测器与具有 85% 准确率和 65% 召回率的预测器进行比较 - 当然,除非您有与混淆矩阵中的 4 个单元 (tp/fp/tn/fn) 中的每一个相关的成本/收益

获得描述分类器性能的单个数字(熟练度,又称不确定系数)的一种有趣方法是使用信息论

proficiency = I(predicted,actual) / H(actual)

即,它告诉您分类器恢复了实际数据中存在的信息的哪一部分。如果精度或召回率为 0,则为 0,如果(且仅当)精度和召回率均为 100%,则为 100%。因为它类似于F1 分数,但熟练度具有明确的信息理论含义,而 F1 只是两个具有含义的数字的调和平均值。

您可以在此处找到计算熟练度指标的论文、演示文稿和代码 (Python):https ://github.com/Magnetic/proficiency-metric