准确率(Precision)和召回率(Recall)
准确率(Precision)和召回率(Recall)是评估分类模型性能的两个重要指标,它们通常用于机器学习和数据挖掘领域,尤其是在分类任务中。 有时一起使用,以“准召”为一词。
准确率(Precision)
准确率是指模型正确预测为正例的数量占所有预测为正例的比例。换句话说,它衡量了模型预测为正例的结果中有多少是正确的。
公式:准确率 = 真阳性 / (真阳性 + 假阳性)
- 真阳性(True Positive, TP):模型正确地将正例预测为正例。
- 假阳性(False Positive, FP):模型错误地将负例预测为正例。
召回率(Recall)
召回率是指模型正确预测为正例的数量占所有实际正例的比例。换句话说,它衡量了模型捕捉到的实际正例的能力。
公式:召回率 = 真阳性 / (真阳性 + 假阴性)
- 假阴性(False Negative, FN):模型错误地将正例预测为负例。
示例
假设在一个自动驾驶系统的行人检测任务中,系统需要识别出图像中的行人(正例)和非行人(负例)。
- 假设实际有100个行人(正例),系统检测到了其中的80个行人。
- 系统还错误地将20个非行人(比如树或路标)识别为行人。
在这个例子中:
- **真阳性(TP)**是系统正确识别的80个行人。
- **假阳性(FP)**是错误识别的20个非行人。
- **假阴性(FN)**是漏掉的20个行人(100-80)。
因此,准确率是80/(80+20) = 80%,表示系统识别为行人的80%是正确的。召回率是80/(80+20) = 80%,表示系统捕捉到了80%的实际行人。
区别
- 准确率关注的是预测为正例的结果中正确的比例。
- 召回率关注的是所有实际正例中被正确识别的比例。
在实际应用中,通常需要在准确率和召回率之间找到平衡点,因为过分关注其中一个往往会以牺牲另一个为代价。例如,过于注重提高召回率可能会导致很多错误的正例预测(假阳性增加),从而降低准确率。
(举例)为何需要平衡准确率和召回率?
让我们用一个简单的例子来说明过分强调提高召回率可能导致准确率降低的情况。
示例背景
假设有一个电子邮件分类系统,其任务是识别并标记垃圾邮件(正例)和非垃圾邮件(负例)。
原始情况
- 系统收到100封电子邮件。
- 其中有20封是垃圾邮件(实际正例),80封是非垃圾邮件(实际负例)。
- 系统正确识别了15封垃圾邮件(真阳性),但漏掉了5封(假阴性)。
- 系统错误地将10封非垃圾邮件标记为垃圾邮件(假阳性)。
在这种情况下:
- 准确率 = 真阳性 / (真阳性 + 假阳性) = 15 / (15 + 10) = 60%
- 召回率 = 真阳性 / (真阳性 + 假阴性) = 15 / (15 + 5) = 75%
提高召回率的情况
现在假设为了减少漏掉的垃圾邮件(提高召回率),系统的标准被调整得更宽松,更多的邮件被标记为垃圾邮件。
- 系统现在识别了18封垃圾邮件(真阳性),只漏掉了2封(假阴性)。
- 但由于标准放宽,系统错误地将30封非垃圾邮件标记为垃圾邮件(假阳性)。
在这种情况下:
- 准确率 = 真阳性 / (真阳性 + 假阳性) = 18 / (18 + 30) = 37.5%
- 召回率 = 真阳性 / (真阳性 + 假阴性) = 18 / (18 + 2) = 90%
结果分析
在这个例子中,为了提高召回率(从75%提高到90%),系统更积极地标记邮件为垃圾邮件。虽然这减少了漏掉的垃圾邮件数量,但同时导致了更多的非垃圾邮件被错误地标记为垃圾邮件(假阳性增加)。这个过程导致准确率从60%下降到了37.5%。
因此,我们可以看到,过分追求提高召回率可能会以牺牲准确率为代价。在实际应用中,找到准确率和召回率之间的最佳平衡点是非常重要的。