机器学习模型 · 从概率到业务决策

分类

逻辑回归先输出“是正类的概率”。分类这一章要解决更实际的问题:概率到多少才算正类?错判的代价不同,该看哪项指标?怎样比较两个模型?

45 分钟纯学习时间4 个连续小节无测试与互动练习
概率逻辑回归输出 p
→
阈值p 与业务门槛比较
→
结果TP、FP、TN、FN
→
评估指标、曲线与取舍
学完后,你能够
  • 区分“概率模型输出”和“最终分类标签”。
  • 读懂 TP、FP、TN、FN 及其在混淆矩阵中的位置。
  • 按误报、漏报和类别不平衡选择正确指标。
  • 解释 ROC、AUC、预测偏差以及二分类、多类别、多标签的区别。
01
预计 12 分钟

阈值与混淆矩阵

二元分类不是模型直接说“是”或“否”。它先给正类概率 p,再把 p 与阈值比较。阈值是产品和业务的选择,0.5 只是常见默认值,不是自然规律。

预测为正类 ⇔ p ≥ 阈值
不同阈值会将不同数量的样本判为正类
同一批概率,阈值从 0.5 提高到 0.8 后,被判为正类的样本变少。

1.1 阈值该怎么选

模型给出的正类概率阈值为 0.50阈值为 0.95解释
0.51正类负类刚超过默认门槛,并不表示很有把握
0.99正类正类在严格门槛下仍被判为正类
0.5 为什么不是标准答案?

它只代表“模型认为正类概率刚好超过一半”。若一次漏诊比十次误报更危险,通常应降低阈值;若自动拦截一笔正常支付的伤害更大,则应提高阈值。阈值要由错误代价和处理能力决定。

漏报代价更高
  • 疾病筛查、危险物种检测、欺诈初筛。
  • 希望尽量不要错过真实正类。
  • 通常降低阈值,接受更多误报。
误报代价更高
  • 把正常邮件移入垃圾箱、拒绝正常支付。
  • 希望被报出来的正类更可靠。
  • 通常提高阈值,接受更多漏报。

类别极不平衡时尤其不能机械地选 0.5。例如正类只占 0.01% 时,阈值要结合人工审核能力、误报成本和实际正类比例制定。

1.2 四种结果组成混淆矩阵

二元分类混淆矩阵展示真正例、假正例、假负例和真负例
“真/假”描述预测是否正确,“正/负”描述模型判定的类别。
TP 真正例真实正,预测也正
FP 假正例真实负,却被误报为正
FN 假负例真实正,却被漏成负
TN 真负例真实负,预测也负
阈值提高后会发生什么?

预测为正的数量通常减少,所以 TP 和 FP 常一起减少;预测为负的数量增加,TN 和 FN 常一起增加。这就是指标之间权衡的根源。概率刚好等于阈值时应判正还是判负,取决于所用框架的实现;上线前要把这条规则写清楚并一致测试。

02
预计 15 分钟

准确率、召回率、精确率与 F1

没有一项指标在所有业务中都最好。指标只是把混淆矩阵的四格用不同方式相加或相除,重点在于它把哪类错误视为最重要。

指标公式它真正问的问题适合关注
准确率 Accuracy(TP+TN)/(TP+TN+FP+FN)总体有多少判断正确?类别大致平衡时的粗略概览
召回率 Recall / TPRTP/(TP+FN)所有真实正类,找回了多少?漏报代价高
精确率 PrecisionTP/(TP+FP)报为正的里面,有多少是真的?误报代价高
假正例率 FPRFP/(FP+TN)真实负类有多少被误报?控制误报比例
F12PR/(P+R)精确率和召回率能否同时兼顾?类别不平衡且两者都重要

2.1 只看准确率会被“高分”骗过

假设 1,000 笔交易里只有 10 笔欺诈。一个模型永远预测“正常”,会正确预测 990 笔,准确率达到 99%;但它没有识别任何欺诈,TP=0、召回率=0。这种模型在业务上几乎没有价值。

模型 A:永远预测正常

准确率 99%

召回率 = 0%

一个典型的类别不平衡陷阱
模型 B:抓到 8/10 欺诈

召回率 80%

还要看 FP 与精确率

是否更好取决于误报成本

2.2 用一个混淆矩阵手算指标

设验证集结果为 TP=40、FP=10、TN=930、FN=20:

精确率40 / (40+10) = 80%
召回率40 / (40+20) ≈ 66.7%
准确率(40+930) / 1000 = 97%
F12×0.8×0.667 / (0.8+0.667) ≈ 72.7%

这里准确率看起来很高,但它受大量 TN 的影响。若业务目标是尽量抓到欺诈,就必须重点看召回率;若人工审核成本高,也不能忽视精确率。

所有这些指标都会随着阈值变化

降低阈值通常会提高召回率,却可能降低精确率;提高阈值则常出现相反趋势。因此比较两个模型时,要么在同一个阈值下比较,要么把整条 ROC 或 PR 曲线一起看。

公式出现 NaN 时,不要把它当成 1

如果模型没有预测任何正类,精确率的分母 TP+FP 等于 0,结果会是未定义(NaN)。这表示当前阈值或模型让“预测为正”这件事根本没有发生,应该回看样本数、阈值和混淆矩阵。

指标选择的简洁规则

漏掉正类更严重,优先召回率;误报正类更严重,优先精确率或 FPR;正负类相近时可参考准确率;两者都重要且类别不平衡时看 F1 和 PR 曲线。

03
预计 10 分钟

ROC、AUC 与模型排序

前面的指标都固定在一个阈值上。如果想知道模型在所有阈值下的表现,就可以画 ROC 曲线:横轴是假正例率 FPR,纵轴是真正例率 TPR,也就是召回率。

ROC 曲线对比两种模型的 AUC
曲线越靠近左上角越好;对角线代表随机猜测。AUC 是整条 ROC 曲线下的面积。
ROC

所有阈值的取舍图

每个点对应一个阈值下的 FPR 与 TPR。

AUC = 1

完美排序

随机拿一个正类和负类,正类总被排在前面。

AUC = 0.5

接近随机

正负类的排序没有有效信息。

3.1 AUC 衡量排序能力,不会替你决定阈值

AUC=0.93 表示模型整体上很擅长把正类排在负类前;但最终选阈值仍要看代价。如果误报很严重,可以从 ROC 上选择 FPR 很低的点;如果漏报更严重,则选择 TPR 更高的点。

误报很昂贵
  • 先设定可接受的最大 FPR。
  • 在这个约束下选 TPR 尽量高的阈值。
  • 例如自动拒付前通常会更保守。
漏报很昂贵
  • 先设定最低可接受 TPR(召回率)。
  • 在这个约束下控制 FPR。
  • 例如疾病初筛通常会更宽松。
AUC 小于 0.5 意味着什么?

它比随机排序还差。先检查正负类定义、标签和分数方向是否写反;若只是分数方向完全反了,把排序反过来理论上会得到超过 0.5 的 AUC,但这不是跳过数据排查的理由。

类别极不平衡时补看 PR 曲线

ROC/AUC 在类别大致平衡时便于比较。正类非常少时,精确率–召回率曲线通常更能看出“报出来的正类到底准不准”。

04
预计 8 分钟

预测偏差与多类别分类

4.1 预测偏差:快速检查整体校准

预测偏差比较一批预测的平均值与对应标签的平均值:

预测偏差 = 平均预测概率 − 平均真实标签

例如评估集里 5% 是垃圾邮件,模型在同分布数据上的平均预测概率也应接近 5%。如果平均预测为 50%,说明整体明显高估了正类。这并不能直接定位原因,但能快速发出信号:训练数据可能有偏或带噪声、训练与线上分布可能漂移、正则化可能过强、特征可能不足,或者数据处理流水线存在错误。

偏差为 0 不等于模型很好

模型可能在每个样本上都给出 0.05,平均值恰好正确,却无法区分哪封邮件真是垃圾邮件。预测偏差适合做早期健康检查,还要和 AUC、召回率等一起看。

4.2 类别超过两个时,先问“能否同时属于多个类”

多类别(互斥)
  • 一张手写图片只能是 0~9 中的一个数字。
  • 输出各类别概率,通常总和为 1。
  • 可用 Softmax 或多个二分类器处理。
多标签(不互斥)
  • 一张照片可以同时有“海滩”“日落”“人物”。
  • 每个标签需要单独的概率和阈值。
  • 各标签概率不要求相加为 1。
一个三类问题如何拆开理解?

若类别 A、B、C 互斥,可以先判断“属于 A 或 B”还是“属于 C”;只有落入前者时,再判断“A 还是 B”。这是一种层级拆分思路。它适合类别之间本来就有清晰层级的场景;若没有这种结构,也可以直接训练一个一次输出 A、B、C 概率的多类别模型。

一句话串起来

分类先把概率按阈值转成标签,再用混淆矩阵记录四种结果。精确率、召回率、F1、ROC/AUC 只是从不同角度衡量错误;该选哪一个,取决于误报、漏报和类别分布。

本模块术语速查

阈值
把概率转为正负类别的业务门槛。
TP / FP / TN / FN
四种预测结果,构成混淆矩阵。
精确率
预测为正的样本中,真正为正的比例。
召回率
全部真实正类中,被模型找回的比例。
FPR
全部真实负类中,被误报为正的比例。
F1
精确率与召回率的调和平均。
ROC / AUC
所有阈值的表现曲线及其排序能力摘要。
预测偏差
平均预测概率与平均标签的差。
多类别
一个样本只属于多个类别中的一个。
多标签
一个样本可同时属于多个标签。
参考资料与素材说明

课程内容参考 Google Machine Learning Crash Course 的分类、阈值和混淆矩阵、分类指标、ROC 和 AUC、预测偏差与多类别分类小节。文字重新组织并扩写;本页 3 张图均为项目原创 SVG。