机器学习
从“召回率”到“查全率”:技术术语也需要好的中文表达
· 三面体
机器学习里有一个很常见的指标: Recall 。这个词通常被翻译为“召回率”。 但我一直觉得,这个翻译不够直观。 第一次接触“召回率”时,仅仅看到这个词,很难理解它到底在衡量什么。“召回”在中文语境里,更容易让人想到产品召回、人员召回。即便已经记住公式: $ Recall=\frac{TP}{TP+FN} $ 往往
机器学习里有一个很常见的指标:Recall。这个词通常被翻译为“召回率”。
但我一直觉得,这个翻译不够直观。
第一次接触“召回率”时,仅仅看到这个词,很难理解它到底在衡量什么。“召回”在中文语境里,更容易让人想到产品召回、人员召回。即便已经记住公式:
$ Recall=\frac{TP}{TP+FN} $
往往还是需要再经过一层解释,才能真正建立直觉。直到最近,我遇到了另外一种翻译:查全率。
看到这个词的一瞬间,很多东西突然变得清晰了。
和 Recall 对应的 Precision,也可以翻译为:查准率。 “查准率”和“查全率”放在一起,几乎不需要额外解释。
查准率:查出来的东西,到底准不准?
查全率:应该查出来的东西,到底查全了没有?
比如河面上实际存在 100 个漂浮物。
模型一共检测出了 90 个目标,其中 80 个确实是漂浮物,另外 10 个属于误检。
那么:
$ Precision=\frac{80}{90}=88.9% $
也就是说,模型查出来的目标里,有 88.9% 是正确的。
这就是查准率。
而:
$ Recall=\frac{80}{100}=80% $
也就是说,实际存在的 100 个漂浮物里,模型只找到了 80 个,还有 20 个没有被发现。
这就是查全率。
于是 Precision 和 Recall 之间那个初学时看起来有些抽象的关系,也一下变得非常自然:
一个关注“查得准不准”,一个关注“查得全不全”。
模型如果把判断标准放得很严格,只在非常有把握的时候才认为存在目标,那么通常会查得更准,但可能漏掉很多目标。
反过来,如果为了尽可能不漏掉目标而降低判断门槛,那么可以查得更全,但同时也可能带来更多误检。
所谓 Precision 和 Recall 的权衡,本质上不过是在回答两个非常朴素的问题:
我要查得更准,还是查得更全?
这也是为什么我越来越喜欢“查准率”和“查全率”这组翻译。
相比之下,“精确率”和“召回率”虽然已经成为机器学习领域非常常见的叫法,但对第一次接触这些概念的人来说,词语本身几乎没有提供多少理解上的帮助。