精度和召回率说明
精度和召回率是衡量机器学习模型性能的基本指标,对于这些训练模型来说,在尝试评估自己的模型性能之前了解它们非常重要。
那么,这些措施意味着什么?
精度是指所有预测中实际正确的比例。
召回率是指已识别的所有可能的真值所占的比例。
以下是一些实际示例,说明了精度和召回率的工作原理。
示例 1 – 场景 1
如果您拥有电子护照,则在抵达该国家/地区时,您可能会在边界管制处熟悉电子门 (e-gate)。 他们安装了图像识别摄像头,旨在分析您的面容,并检查其是否与护照上的数字版本匹配。 本质上,这是他们试图解决的分类问题,即此人是否是他们所说的那个人。
假设一个机场决定要实施这些电子门。 但是,他们希望在公开使用这些摄像头之前,检查这些摄像头在匹配人脸和护照图像方面的效果如何。 在此示例中,目标是使用仅识别(或预测)与护照上图像匹配的面容的相机。 这些摄像头希望让尽可能多的人通过,但会捕获所有可能使用他人护照或图像不匹配的假护照的人。
精度
精度用于衡量摄像头在让正确的人员通过门方面的准确性。 本质上,在它放行的所有人中,护照匹配的人所占比例。
在第一个测试中,您将吸引 100 人使用新相机。 结果显示,摄像头允许 70 个人通过,拒绝 30 个人,然后这些人必须前往有人值守的传统办公桌前。
事实证明,在放行的 70 人中,实际上有 4 人不应该放行(我们事先已经知道他们的护照有误)。 要计算精度,我们将执行以下操作:
精度 = 正确识别的人数 / 允许通过的总人数(正确和错误)= 66/(66+4) = 94%
召回
但这里有一个小问题。 假设我们知道实际上总共有 95 人持有正确的护照,而其中只有 66 人被正确放行(如上所述),这意味着 29 人 (95-66) 人被错误地拒绝,不得不加入手动队列。 我们怎样才能更好地正确识别所有应该允许通过的人?
这就是我们的另一个衡量标准“召回率”发挥作用的地方。 “召回率”衡量的是系统在摄像头本应识别为正确并允许通过的所有人中,选取了多少个人。 在此示例中,我们知道在 95 名持有正确护照的人中,只有 66 人通过,因此可以通过以下方式计算召回率:
召回率 = 识别出的正确护照数量 / 拥有正确护照的总人数 = 66/95 = 69%
示例 1 - 场景 2
我们再举一个场景来说明精度和召回率可能会如何变化。 我们使用相同的设置,但这次相机已经过训练,可以处理更广泛的图像,我们想测试这对相机的性能有多大改进。
就像场景 1 一样,这 100 个人再次通过护照检查门,我们知道其中 95 人的护照正确无误。
不过,这一次允许 85 个通过,其中 15 个被拒绝,无法转到有人值守的传统办公桌前。 在这 85 人的放行机中,正确允许 82 人通过,3 人由于护照错误而不应通过。
此处的精度为 = 82/(82+3) = 96%
现在,我们来看看召回率受到的影响:
召回率 = 82/95 = 86%
在这种情况下,我们有类似的精度分数,但召回率有很大提高。 这意味着,虽然我们的预测仍然准确(94% 对 96%),但我们能够识别更多本应让某人通过的案例,因为他们拥有正确的护照(69% 对 86%)。 这表明与场景 1 相比,额外的训练显着提高了相机的召回率。
示例 2
另一个简单的示例显示了相同的度量在不同情况下的不同。
火警铃旨在检测何时发生火警。 在某种程度上,他们必须预测何时发生火警,但有时他们也会出错并导致误报。 在这种情况下,更重要的是要确保 100% 都能检测到起火情况。 我们可以接受奇数的误报,只要在发生火警时能够检测到火警即可。 在此示例中,更高的召回率更为重要,因为要确保检测到每次起火!
假设一年中检测到 10 起失火,但其中只有 1 起是真实的。 警报/探测器共 10 次预测起火,其中 1 次正确,9 次错误。 在本例中,精度仅为 10% (1/10),但召回率为 100% (1/1)。 在所有已存在的火警中,火警警报器均检测到火警。 因此,虽然精确度很差,并且存在很多误报,但召回率却很高,我们发现了一次着火的情况。
该问题有两个正确答案:
- 同时添加
- 视情况而定
上面的示例显示了两个指标之间的权衡,以及每个指标如何根据使用情况而变得更加重要。
以火警为例,更重要的是接收所有火警案例,否则后果将十分危险。 如果发生火警且探测器不起作用,则可能会造成人员生命危险。 在这些场景中,我们希望针对高召回率进行优化,以确保所有案例都得到识别,即使以错误的火警为代价
相比之下,对于护照检查口的示例,更重要的是只让护照上的图像与摄像头检测到的图像匹配的人员通过检查口。 您不想让持有假护照或错误护照的人通过。 在此示例中,您希望针对高精度进行优化,并且不介意将本应允许通过的零散人员发送到服务台进行手动检查。 在这种情况下,召回率会较低,但精度(在这里更重要)会很高。