DATA NOTEBOOK阅读地图
7个主要章节
4张图片与图示
1组对照与手算表

先确认变量、单位与假设,再核对手算、图表和解释范围。

章节速览7 节 · 展开选择

概率校准问“报出的概率是否可信”,部署分类器还要回答“多少分才采取行动”。同一组分数可以对应不同的误报、漏报和人工复核量。默认阈值并不自动适合当前任务。

本文只讨论已获得分数的二分类:正类标签为 1,分数越大越倾向正类,分数 s≥阈值 t 时判为正类。八条记录全部是教学合成数据,不代表真实模型的效果。

先把分数、真实标签和决策分开

分数可以是概率,也可以是任意有序的实数;下面手算使用 [0,1] 内的分数,但不假定它们已经校准。scikit-learn 阈值指南将概率估计与行动决策分开,提醒读者根据目标选择阈值,并用独立数据评估。

对照真实标签,判正且确为正是 TP,判正但实际为负是 FP;判负但实际为正是 FN,判负且确为负是 TN。于是:

**精确率 P=TP/(TP+FP)**:判正的样本里有多少是真的?

**召回率 R=TP/(TP+FN)**:全部真实正例里找回了多少?

两者分母不同。精确率不是“全部样本中正确的比例”,也不能用来推断没有被判正的样本是否可靠。准确率为 (TP+TN)/N,类别很不平衡时单报准确率容易遮住正类漏检。

八条记录逐组降低阈值

按分数从高到低排列:A=(0.9,1)、B=(0.8,0)、C=(0.8,1)、D=(0.6,1)、E=(0.4,0)、F=(0.3,1)、G=(0.2,0)、H=(0.1,0)。括号内依次为分数与标签。正负各四条;B 和 C 同分,阈值必须同时纳入它们,不能用任意排序在同分组内部虚构一个操作点。

阈值 t TP FP FN TN 精确率 召回率
0.9 1 0 3 4 1 1/4
0.8 2 1 2 3 2/3 1/2
0.6 3 1 1 3 3/4 3/4
0.4 3 2 1 2 3/5 3/4
0.3 4 2 0 2 2/3 1
0.1 4 4 0 0 1/2 1

t=0.2 还有一个操作点,TP=4、FP=3、FN=0、TN=1,P=4/7、R=1;表中省略它只是为了比较主要变化,计算曲线时仍保留它。t>0.9 时无人判正,精确率分母为零,数学上未定义,不能把工具约定的端点当作实测完美精确率。

阈值从0.9降到0.8再到0.6,召回率从四分之一到二分之一再到四分之三,精确率先降后升
原创合成操作点;横向按阈值降低排列,不是等距离的概率轴。精确率并非只能下降。查看原图

为什么召回率单调,而精确率可以回升

在同一批样本上降低阈值,只会扩大判正集合,因此 TP 不会减少。真实正例总数 TP+FN 固定且大于零,所以召回率不会下降。

精确率则比较新增样本的正例比例与旧集合比例。若原有 a 个真阳性、b 个假阳性,新增 u 个正例和 v 个负例,则比较 (a+u)/(a+b+u+v) 与 a/(a+b),交叉相乘可得上升条件 ub>av。新增样本全是正例时,精确率就可能上升:本例 0.8→0.6,P 从 2/3 升到 3/4。

官方 Precision-Recall 示例也明确说明这种波动,不能把经验上的常见趋势写成定理。

自检:从 0.6 降到 0.4,为什么召回率没变?

新增的 E 是负例,只增加 FP。TP 仍是 3,真实正例总数仍是 4;召回率保持 3/4,精确率从 3/4 降到 3/5。

平均精确率不是连接各点后的梯形面积

沿阈值从高到低,使用每次召回增量所对应的精确率,非插值平均精确率为 AP=Σ ΔR·P。对本例,新增正例的四次增量均为 1/4:

AP=(1/4)×1+(1/4)×(2/3)+(1/4)×(3/4)+(1/4)×(2/3)=37/48≈0.770833。

只增加 FP 的步骤 ΔR=0,不直接增加 AP。这里采用 scikit-learn average_precision_score的非插值定义,不使用梯形积分,也不采用某些检索指标的插值包络。precision_recall_curve会附加 P=1、R=0 的绘图端点且不配阈值;不要把它误计为额外一组模型预测。

AP 汇总排序表现,没有替读者选出某个行动阈值。严格递增变换保留排序和同分关系,可以保持这些操作点与 AP,却改变分数数值;概率校准与决策阈值仍须单独检查。

正类基率改变,精确率也会改变

设目标总体正类比例为 π,固定阈值下真阳性率为 r,假阳性率为 f。在这两个条件率保持不变的假设下,由总概率可得:

**P=πr/[πr+(1−π)f]**,分母须大于零。

这只是条件概率推导,不保证换场景后 r、f 真会保持不变。假设 r=0.8、f=0.1,π=0.5 时 P=8/9;π=0.1 时 P=8/17。可见同样的条件识别率,面对更少的正例时也可能产生较低精确率。与分层和标准化一样,需要同时报告构成与组内表现。

一千条记录中,正类比例一半时真阳性400假阳性50;正类比例一成时真阳性80假阳性90
两个一千条记录的合成总体,均假定 TPR=0.8、FPR=0.1;不是迁移效果实测。查看原图

用成本选择行动,再到独立测试集核验

若只计误报成本 C_FP 和漏报成本 C_FN,总经验损失为 C_FP·FP+C_FN·FN。本例取 C_FP=1、C_FN=4,t=0.9/0.8/0.6/0.4/0.3/0.2/0.1 的损失分别为 12/9/5/6/2/3/4;在这些操作点和无人判正点中,0.3 的损失最小。它只是这批合成样本的最小值,不是通用最佳阈值。

若输入 p 是当前目标总体下的真实条件概率,只有上述两类非负错误成本且两者之和大于零、正确决策成本为零,预测正类的条件期望损失为 C_FP(1−p),预测负类为 C_FN·p。比较两者可得 p≥C_FP/(C_FP+C_FN) 时选择正类。此例理论成本阈值为 0.2,与小样本经验最优 0.3 不同并不矛盾:例中分数未被假定为真实概率,有限样本还存在波动。人工复核容量、延迟和弃权成本加入后也要重新定义目标。

不得在同一个测试集上反复调阈值后,再把该集称为未参与选择的最终证据。可参考配对 Bootstrap保留同题关系描述不确定性,但重采样不能消除已经发生的数据泄漏。

自检:AP 更高,是否保证任意成本下都更好?

不保证。AP 汇总多个阈值的排序表现,实际成本取决于选中的操作点、目标总体及行动约束。要在相同测试记录上核对冻结阈值后的 FP、FN 与成本,不能只比较一个汇总分数。

报告时保留什么

  • 写明正类定义、评估单位、样本量、正类数量和时间范围。
  • 保留阈值、同分规则及完整 TP/FP/FN/TN;无预测正例或无真实正例时,明确未定义量与软件约定。
  • 分开排序指标、概率校准和行动损失;不能用其中一项替代其余两项。
  • 选择在验证数据完成;最终测试固定模型、阈值和成本口径。新场景检查基率与条件率,不把旧精确率当作常量。

继续阅读:概率校准检查概率可信度,标注一致性核对标签生成过程,资源路线串起统计与评测。