WMX · 随记
·AI· 3 分钟阅读

精确率与召回率:误报和漏报需要分别看

检测系统不能只报告“准确”。抓到了多少真实目标,以及发出的告警有多少是真的,分别对应不同的业务成本。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

But what is a neural network?

视频介绍分类神经网络的基础;本文进一步讨论数据划分或评估指标,视频不是这些指标的逐项教程。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

检测系统不能只报告“准确”。抓到了多少真实目标,以及发出的告警有多少是真的,分别对应不同的业务成本。

理解核心机制

精确率是 TP/(TP+FP),召回率是 TP/(TP+FN)。下面从明确的真假标签计算,分母为零时返回 None,以保留“无定义”和数值零的区别。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python9 行 · 可横向滚动
truth = [1, 1, 0, 0, 1]
prediction = [1, 0, 1, 0, 1]
tp = sum(y == p == 1 for y, p in zip(truth, prediction))
fp = sum(y == 0 and p == 1 for y, p in zip(truth, prediction))
fn = sum(y == 1 and p == 0 for y, p in zip(truth, prediction))
precision = tp / (tp + fp) if tp + fp else None
recall = tp / (tp + fn) if tp + fn else None
assert tp == 2 and fp == fn == 1
print(precision, recall)

适用边界与常见误区

微平均、宏平均与按样本平均是不同定义。阈值应在验证集上选择,不能反复查看测试集后挑选最好看的结果。

继续练习

为每条记录补上分数,逐步改变阈值,观察误报与漏报的变化,并用业务成本说明最终选择。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档