Ch.10

分类评估指标:模型的详细成绩单

学习分类人工智能模型在「考试」之后拿到的「详细成绩单」。不只看「一共对了几题」(准确率),还要搞清楚「哪些题、怎样错」,这就是混淆矩阵(Confusion Matrix)要讲的内容。在垃圾邮件过滤、癌症诊断AI等「错法」会带来致命后果的业务场景里,精确率、召回率、F1等指标如何证明模型的真实实力,我们会用直观比喻一起说明。

按章节的机器学习图示

选择章节后,下方图示会切换为该章节内容。可一览机器学习脉络。

用实际(行)与预测(列)填好2×2混淆矩阵后,计算准确率、精确率、召回率和F1。

预测 正例预测 负例实际 正例实际 负例TPFNFPTN混淆矩阵 (2×2)实际正例 · 预测正例 → TPTP: 真正例 ✓FN: 漏检(实际正例→预测负例)FP: 假正例(实际负例→预测正例)TN: 真负例 ✓

通过混淆矩阵读懂分类模型的成绩单,并选择与目标相符的指标。

分类评估指标:混淆矩阵与模型成绩单

什么是混淆矩阵?模型的详细成绩单 — 考试光看「对了几题」看不出学生是数学好还是英语好。分类模型也一样。把模型的预测(列)实际答案(行)并排做成 2×2 表,就是混淆矩阵。看这四个格子,就能一眼看出模型哪里对、哪里「混淆」、哪里踩空。
四格的秘密:TP、TN、FP、FN — 用经典的「狼来了」来理解:这里「阳性」= 喊狼来了,「阴性」= 平安无事。
* TP(真正例·True Positive): 狼真的来了
(1) ,少年也喊狼来了
(1) 。救了全村,最好结局。
* TN(真负例·True Negative): 狼没来(0),少年也没喊(0)。太平。
* FP(假正例·False Positive): 狼没来(0),少年却喊狼来了
(1) 。村民白跑一趟(误报)。
* FN(漏检·False Negative): 狼真的来了
(1) ,少年在睡觉没喊(0)。羊被吃光,最糟结局(漏检)。
* 总个数 n=TP+TN+FP+FNn = \mathrm{TP} + \mathrm{TN} + \mathrm{FP} + \mathrm{FN}
准确率(Accuracy)的坑 — 表示「全部题目里对了几成」,公式是 准确率=TP+TNn\text{准确率} = \frac{\mathrm{TP}+\mathrm{TN}}{n}。很直观,但有个可怕陷阱:假设 100 天里 99 天太平,狼只来 1 天。一个天天闭眼只会喊「没狼!」的笨机器人,准确率也有 99%。在「阳性极少」的不均衡数据下,绝不能只信准确率这一个数。
精确率(Precision)与召回率(Recall):要追的两只兔子
* 精确率(谨慎): 「我喊狼来了的时候,有几成真是狼?」即预测为正例的里,真正是正例的比例精确率=TPTP+FP\text{精确率} = \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FP}}。少误报(FP)、有把握才喊,精确率就高。
* 召回率(敏感): 「狼真的来的那些次里,我几次发现并警告了?」即实际正例里,模型命中的比例召回率=TPTP+FN\text{召回率} = \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}。一头狼都不漏(FN 少),召回率就高。
F1 分数:精确率与召回率的黄金平衡 — 精确率和召回率像跷跷板,硬抬一边另一边就掉。把两者合成一个数就是F1 分数,用的是调和平均F1=2TP2TP+FP+FN\text{F1} = \frac{2 \cdot \mathrm{TP}}{2\cdot\mathrm{TP}+\mathrm{FP}+\mathrm{FN}}。只要精确率或召回率有一边很差,F1 就会很低。想找「不偏科」的均衡模型时常用 F1。
AUC(Area Under the ROC Curve):模型的排名裁判 — 当模型不只输出「正/负」,而是输出「90% 概率是狼」这类概率时,用 AUC 评价:在 0~1 之间,看真实正例是否普遍比真实负例得到更高概率(区分能力)。1 表示排序完美,0.5 相当于闭眼瞎猜。在调阈值之前,比较模型本身的「基础体力」时非常有用。
别被 99% 准确率骗了 — 假设做信用卡欺诈检测:10 万笔交易里只有 1 笔欺诈。模型啥也不干、一律判「全部正常」,准确率也有 99.999%,但召回率是 0%,一个骗子都抓不到。只有画出混淆矩阵,拆开看精确率召回率,才能知道模型是在干活还是在糊弄。
实际业务是「哪种错更能忍」的残酷取舍 — 业务目标不同,押注的指标就不同。
* 召回率(别漏)是命: 癌症筛查。健康人多查几次(FP)可以忍,真患者漏诊(FN)耽误治疗绝不能忍。
* 精确率(少误报)是命: 垃圾邮件过滤。漏进一两封垃圾(FN)删掉就行,老板的重要邮件被误判成垃圾(FP)可能职场危机。
AI 服务的最终过审(二分类评估) — 新冠阳性/阴性判定、YouTube 有害视频拦截/放行、银行贷款通过/拒绝等,大量二选一的实际项目在上线前都会画混淆矩阵,综合看精确率、召回率、F1。
调节告警灵敏度(阈值调参) — AI 通常输出 0~1 的概率。「概率到多少%就拉响警报?」通过调节这条线(阈值)来适应业务:安全要求极高的机构会把阈值压低,稍有异常就报警(召回率最大化);反之,告警太多用户烦的 App 会把阈值调高,只有非常确定才报警(精确率最大化)。
看分类模型性能时,不要只看对了几题,用混淆矩阵把实际(行)与预测(列)分成 2×2,填好 TP、TN、FP、FN。准确率=(TP+TN)/n,精确率=TP/(TP+FP),召回率=TP/(TP+FN)。类别不平衡时单看准确率容易误解,要按目标侧重精确率(减误报)或召回率(减漏检),平衡看F1
各指标的确切含义(叙述)TP:实际为正例且预测为正例的个数(真正例)。TN:实际为负例且预测为负例的个数(真负例)。FP:实际为负例却预测为正例(假正例)。FN:实际为正例却预测为负例(漏检)。准确率:全体中预测正确的比例。精确率:预测为正例中实际为正例的比例。召回率:实际为正例中被模型预测正确的比例。F1:精确率与召回率的调和平均。AUC:正例是否普遍比负例得分高,用 0~1 概括。