先完成阈值与精确率、召回率的入门对照。本节进一步固定误报和漏报成本,检查相等边界与数据隔离,并将这些要求落实到阈值调优接口。
概率与行动规则分别验收
改变同一批固定分数的阈值,会改变预测类别、误报和漏报,但不改变分数本身。它既不是概率校准,也不是重新训练模型。0.5 是常见概率截断值,不保证符合业务成本。分类决策阈值指南
先明确正类、成本或评分目标,再选择阈值。提高召回可能增加误报;对完整任务的取舍要同时看两者及实际处理量。
练习一 用固定分数核对成本和边界
用 Java 数组保存六条人工记录:
真实标签:[1, 1, 0, 1, 0, 0]
正类分数:[0.90, 0.60, 0.55, 0.40, 0.30, 0.10]
本练习约定:score >= threshold 时判为正类
教学成本:5 × FN + FP
按该约定,手算预期为:
| 阈值 | TP | FP | FN | TN | 教学成本 |
|---|---|---|---|---|---|
| 0.50 | 2 | 1 | 1 | 2 | 6 |
| 0.35 | 3 | 1 | 0 | 2 | 1 |
检查调整阈值前后的原分数数组完全一致。另补一条分数恰好等于阈值的记录,断言本程序使用的边界;这里的“大于等于”是本练习的约定,不代表每个库都采用相同的相等处理。
成本 5 和 1 是教学设定,不是生产建议。这六条数据只能核对计算,不能证明某个真实模型的最佳阈值就是 0.35。
练习二 把阈值选择与最终测试分开
准备训练、阈值选择和最终测试的三份样本 ID 清单,任意两份存在交集就阻止本练习继续,并复用已有的近重复家族隔离规则。对已经训练好的分类器,只在阈值选择集比较规则;冻结规则之后,最终测试集只报告结果,不再用其答案反复挑阈值。
使用 TunedThresholdClassifierCV 时,核对实际安装版本和参数:默认评分为 balanced_accuracy,不能拿默认目标替代本练习的成本函数。使用 cv="prefit" 时,调阈值的数据必须区别于基础模型拟合数据,而且需要 refit=False;与 refit=True 组合会报错。多于一次分割的交叉验证又不能强制 refit=False,所以要按完整配置检查。API 参数与限制
交付记录与适用范围
记录模型与数据版本、正类标签、阈值、相等边界、评分或成本权重、三个数据集用途,以及 TP、FP、FN、TN。成本目标或数据分布改变时,旧阈值可能不再适合;阈值验收也不能代替工具授权、来源核查或安全策略。
两项练习均未运行,表中数值是手算预期。接口参数核查不等于真实模型效果验证。
来源与版本
scikit-learn 阈值指南与 TunedThresholdClassifierCV,原核查为 2026-10-25 18:11 JST,页面版本 1.9.1;本次于 2026-10-30 复核目标、独立数据及 cv/refit 限制,页面仍显示 1.9.1。该类标记自 1.5 加入,独立发布日期未标明。