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

类别不平衡:高准确率可能来自什么都不做

当一百个样本只有两个正例时,始终预测负类也能得到很高准确率。这个基线揭示了总体指标可能遮蔽的失败。

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

But what is a neural network?

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

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

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

问题从哪里出现

当一百个样本只有两个正例时,始终预测负类也能得到很高准确率。这个基线揭示了总体指标可能遮蔽的失败。

理解核心机制

评估应先建立简单基线,再分别报告各类别表现。下面的常量分类器准确率为 98%,但正例召回为零,因此对发现正例的任务没有帮助。

动手做一个小实验

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

Python7 行 · 可横向滚动
truth = [0] * 98 + [1] * 2
prediction = [0] * len(truth)
accuracy = sum(y == p for y, p in zip(truth, prediction)) / len(truth)
tp = sum(y == p == 1 for y, p in zip(truth, prediction))
recall = tp / sum(truth)
assert accuracy == 0.98 and recall == 0
print(accuracy, recall)

适用边界与常见误区

这是合成数据示例,不代表实际模型表现。重采样和类别权重也有代价,应在训练集内实施,并用真实部署分布评估。

继续练习

把正例比例改为 1%、10% 和 50%,比较常量基线;再讨论同样召回率下,告警数量会怎样变化。

参考资料

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

← 返回文章归档