自在学

我们与你共同进步

  • 分类课程
  • 文章
  • 工作台
  • 订阅

  • 关于我们
  • 隐私政策
  • 使用条款

探索

  • 分类课程
  • 文章
  • 工作台
  • 订阅

网站信息

  • 关于我们
  • 隐私政策
  • 使用条款

加入社区

自在学学习社区微信二维码

微信扫码,交流学习

株洲市自在学教育科技有限公司© 2025 - 2026 版权所有

© 2025 - 2026 株洲市自在学教育科技有限公司 版权所有

湘公网安备43020302000292号|湘ICP备2025148919号-1
分类课程工作台文章订阅
分类课程工作台文章价格

机器学习

  1. 01机器学习导论
  2. 02线性回归:从一条直线到完整建模流程
  3. 03机器学习里的线性代数:从形状、变换到最小二乘
  4. 04多元线性回归:从一条直线走向可用的预测模型
  5. 05用 Octave / MATLAB 把机器学习公式真正跑起来
  6. 06逻辑回归:从概率模型走到可执行的分类决策
  7. 07正则化:用可验证的约束换取更稳的泛化
  8. 08神经网络表示
  9. 09神经网络学习:把预测程序变成可训练系统
  10. 10机器学习系统设计:把一次模型实验变成可持续的产品闭环
  11. 11应用机器学习的建议:从错误清单到下一轮实验
  12. 12支持向量机:从最大间隔到可靠的核分类流程
  13. 13聚类:从 K-means 原理到可解释、可复现的分群流程
  14. 14降维:从 PCA 几何直觉到可靠的工程流程
  15. 15异常检测:从低密度分数到可运营的告警系统
  16. 16推荐系统:从一次曝光到一张可上线的推荐列表
  17. 17大规模机器学习:从单机瓶颈到可恢复的训练系统
  18. 18OCR 与人工数据:把模型接成一套能交付的识别系统
正在加载课程章节内容
课程编程机器学习应用机器学习的建议:从错误清单到下一轮实验

应用机器学习的建议:从错误清单到下一轮实验

模型第一次跑出结果时,团队通常不缺想法。有人想换更大的模型,有人想补数据,有人想调阈值,还有人想把错误样本全部重新标一遍。真正稀缺的是一套能把这些想法排出先后顺序的方法。

这一章讨论的就是这个问题:当你已经拿到模型、验证结果和一批错误样本,下一步究竟做什么? 我们会把总体分数拆成可行动的错误类别,建立不平衡分类的指标语言,分清排序、阈值与概率校准,再判断应该修标签、补哪类数据、调整评估集,还是暂时停止某条实验线。

上一章讲的是机器学习系统怎样形成闭环,本章把镜头拉近到一次具体诊断。你可以把这里的方法看成一次“模型门诊”:先确认体温计可信,再辨认症状,最后才开药。顺序反过来,模型也许会变,问题却可能原封不动。

本章默认我们使用验证集做诊断和方案选择,并把测试集留到方案、阈值和报告口径全部冻结后再做最终验收。凡是看过测试结果后作出的改动,都属于新一轮开发,不能继续把同一份测试结果当作独立证据。


先冻结评估协议,错误才有可比性

“新模型的 F1 提高了 2 个点”听起来很明确,但它可能混合了许多变化:数据切分换了、标签观察窗口变了、正类定义改了、阈值重新调过,甚至同一用户的重复记录从验证集移到了训练集。只要尺子在动,分数就不能告诉我们模型本身是否进步。

一份可复查的评估协议至少要固定下面这些内容:

协议项要写清楚的问题常见失真方式
目标总体模型最终服务哪段时间、地区、设备和人群验证集方便取得,却不代表上线流量
评估单位按事件、用户、设备还是会话计数同一用户的多条记录被当成独立证据
标签定义正类是什么,观察多久才算标签成熟尚未到观察期的样本被提前记为负类
切分边界按时间、实体或随机规则怎样隔离重复样本和未来信息跨越边界
分数口径使用概率、距离还是其他连续分数不同模型输出被误当成同一种概率
决策规则阈值、Top-K、人工容量和例外规则是什么一个模型用 0.5,另一个用最优阈值
主指标本轮究竟优化什么结果出来后挑最好看的指标汇报
护栏与切片哪些整体或人群指标不得恶化总体提升掩盖关键切片倒退
不确定性是否报告样本数、区间或多次运行波动把很小切片上的偶然差异当成结论
数据权限训练、验证、校准和测试各自能做什么在测试集上选择阈值或错误类型

这里的“冻结”不是永远不能改。业务目标或数据分布确实变化时,协议当然要更新,但要生成新版本,并重新建立可比基线。最危险的做法是协议悄悄变化,而实验表里仍把新旧结果放在同一列。

一份报告同时保留分数、阈值和计数

比例指标很容易隐藏样本规模。某切片召回率从 70% 升到 80%,可能是从 7/10 变成 8/10,也可能是从 7000/10000 变成 8000/10000;两者的证据强度完全不同。因此,每份报告应同时保存:

  • 混淆矩阵的原始计数;
  • 连续预测分数和当前决策阈值;
  • 每个切片的样本量、正类数与正类率;
  • 指标的区间估计或重采样分布;
  • 数据、标签、代码、模型和阈值版本。

对于比例类指标,小样本时不要只给“点估计 ± 正态近似”。召回率本质上是在实际正类中的成功比例,可以使用适合二项比例的 Wilson 区间;F1、AUPRC 这类复合指标可按独立实体做 bootstrap。若同一用户有多条样本,重采样也应按用户,而不是把每一行假装成独立观测。

冻结数据版本、切分、标签、指标、阈值和随机种子的评估协议

先固定评估尺子,后续模型迭代才真正可比较。

1
只要模型结构和训练数据没有变化,就可以在测试集上反复调阈值,因为阈值不属于模型参数。

把误差分析做成可复查的样本账本

误差分析不是随手挑几个离奇案例,也不是开会凭印象给模型找原因。它是一种带抽样规则、分类口径和计数结果的人工审查。目的不是解释每一个错误,而是回答三个更实用的问题:

  1. 错误主要集中在哪里?
  2. 哪些错误有现实可行的修复办法?
  3. 修复后最多能改善多少,以及要花多大代价?

先决定看哪些样本

二分类任务至少要分别抽取假正例和假负例,因为两类错误通常有不同原因。还可以加入:

  • 关键业务切片中的错误;
  • 高置信度却判断错误的样本;
  • 靠近决策阈值、容易翻转的样本;
  • 模型正确但人工认为理由可疑的样本;
  • 不同模型意见不一致的样本。

如果只看“最惊讶”的错误,很容易被极端案例带偏。如果只从所有错误中均匀抽样,稀有但代价很高的切片又可能一条也看不到。更稳妥的做法是预先写明分层抽样配额,并保留抽样权重。这样既能观察关键风险,也能在汇总时还原它们在整体中的真实占比。

错误类别可以重叠,原因必须标明证据

一条样本可能同时属于“图片模糊”“夜间场景”和“标签存疑”。把类别强行做成互斥选项,会丢失真实结构。误差账本可以为每条样本保留多个标签,同时增加以下字段:

字段作用
样本稳定 ID方便复核,不把展示顺序当作身份
真实标签与来源区分人工标注、规则标签和延迟结果
预测分数与阈值判断是排序问题还是阈值附近翻转
假正例 / 假负例对应实际业务代价
场景标签例如新用户、弱光、长文本、罕见设备
原因状态已证实、强怀疑、待调查,而不是都写成事实
标签是否存疑将数据问题与模型问题分开
可能动作补数据、修标注规范、改特征、改决策规则
复核意见记录分歧,避免把第一次判断当成真相

人工看到错误后说“模型不懂反讽”,通常还只是一个假设。只有在一批样本上定义了可重复识别的“反讽”口径,并发现这一类确实集中出现时,它才接近可行动的错误类别。

用上限和可修复率排优先级

假设验证集共有 NNN 个错误,其中 ncn_cnc​ 个带有错误类别 ccc。即使某个方案能完美解决这一类,它对当前错误数的理论上限也只有:

ceilingc=ncN\text{ceiling}_c = \frac{n_c}{N}ceilingc​=Nnc​​

类别之间可以重叠,所以各上限相加可能超过 100%。更现实的估计还要乘上预计可修复比例 rcr_crc​:

expected removable errorsc=nc⋅rc\text{expected removable errors}_c = n_c \cdot r_cexpected removable errorsc​=nc​⋅rc​

例如“扫描件过暗”占 35% 的错误,但现有图像增强只能解决约三分之一;“标签映射错误”只占 15%,却能通过修规则解决九成。后者可能更值得先做。优先级还要考虑开发成本、风险、是否能顺带改善多个切片,而不能只按错误占比排序。

当团队长期反复查看同一批验证样本时,也会逐渐对这批样本过拟合。验证集足够大时,可以把人工频繁查看的部分与黑盒验证部分分开;前者用于形成假设,后者用于确认改动是否能泛化。

记录真实标签、预测、置信度、切片、原因与行动的逐样本误差账本

样本账本把一个总分拆成可复核、可计数、可行动的错误模式。

2
团队准备对分类模型做误差分析。下面哪些做法能让结论更可复查?

混淆矩阵把“错了”拆成四种结果

在类别不平衡的任务里,准确率很容易给人错误安全感。假设 10000 次登录中只有 60 次是真正的账户盗用,一个始终预测“正常”的系统也有 99.4% 的准确率,但它没有拦住任何一次盗用。

我们先固定方向:下表的行是真实标签,列是模型最终决策。

预测为正类预测为负类
实际为正类真正例 TPTPTP假负例 FNFNFN
实际为负类假正例 FPFPFP真负例 TNTNTN

“正类”不是天然等于坏事或少数类,而是团队在协议中指定的关注事件。只要正类定义变化,precision、recall 和 specificity 的解释也会变化。

每个指标回答的是不同问题

准确率回答“所有决策中有多少是对的”:

Accuracy=TP+TNTP+FP+FN+TN\text{Accuracy} = \frac{TP+TN}{TP+FP+FN+TN}Accuracy=TP+FP+FN+TNTP+TN​

精确率回答“所有被模型判为正类的样本里,多少真的为正”:

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP+FP}Precision=TP+FPTP​

召回率,也叫敏感度或真正率,回答“所有真实正类里,多少被找到了”:

Recall=TPR=TPTP+FN\text{Recall} = \text{TPR} = \frac{TP}{TP+FN}Recall=TPR=TP+FNTP​

特异度回答“所有真实负类里,多少被正确放过”:

Specificity=TNR=TNTN+FP\text{Specificity} = \text{TNR} = \frac{TN}{TN+FP}Specificity=TNR=TN+FPTN​

假正率与特异度互补:

FPR=FPFP+TN=1−Specificity\text{FPR} = \frac{FP}{FP+TN} = 1-\text{Specificity}FPR=FP+TNFP​=1−Specificity

以一份验证报告为例:TP=42TP=42TP=42、FN=18FN=18FN=18、FP=188FP=188FP=188、TN=9752TN=9752TN=9752。此时:

指标结果业务读法
Accuracy97.94%总体看起来很高,主要受大量正常登录影响
Precision18.26%每 100 条告警约有 18 条是真盗用
Recall70.00%每 100 次真盗用约找到 70 次
Specificity98.11%每 100 次正常登录约有 98 次被正确放过

这个例子还说明,98.11% 的特异度不一定意味着假正例很少。负类基数为 9940,哪怕假正率只有 1.89%,也产生了 188 条假告警,远多于 42 条真正例。业务容量最终面对的是计数,不是百分比。

TP、FP、FN、TN 与精确率、召回率、特异度的关系

混淆矩阵四格是计数原点,不同指标只是从不同风险方向读取它。

3
某筛查模型得到 TP=80、FN=20、FP=120、TN=9780。下面哪项解释正确?

F1 与三种平均方式各有盲区

F1 是 precision 与 recall 的调和平均:

F1=2⋅Precision⋅RecallPrecision+RecallF_1 = 2\cdot\frac{\text{Precision}\cdot\text{Recall}}{\text{Precision}+\text{Recall}}F1​=2⋅Precision+RecallPrecision⋅Recall​

调和平均会明显惩罚其中较低的一项,因此 F1 高通常意味着 precision 和 recall 都不能太差。但它没有把 TNTNTN 放入公式,也默认 precision 与 recall 同等重要。若漏诊代价远高于误报,或假正例会造成严重伤害,只追求 F1 最大值并不等于业务最优。

可以用 FβF_\betaFβ​ 调整两者权重:

Fβ=(1+β2)Precision⋅Recallβ2⋅Precision+RecallF_\beta = (1+\beta^2) \frac{\text{Precision}\cdot\text{Recall}} {\beta^2\cdot\text{Precision}+\text{Recall}}Fβ​=(1+β2)β2⋅Precision+RecallPrecision⋅Recall​

β>1\beta>1β>1 时更重视 recall,β<1\beta<1β<1 时更重视 precision。这个参数仍然只是偏好的压缩表达;真正有明确成本或硬约束时,直接写成本和约束通常更透明。

多分类报告先看每一类,再决定怎样平均

假设一个三分类系统的结果如下:

类别样本数 supportF1
普通请求95000.99
退款争议4000.70
账户盗用1000.20

三种常见平均方式回答的是三类问题:

  • Macro:先为每个类别分别算指标,再做不加权平均。每个类别话语权相同,能暴露稀有类别很差,但一个只有极少样本、标签又很噪的类别也会被放大。
  • Weighted:先算每类指标,再按各类 support 加权。它反映当前样本构成下的平均表现,却可能被多数类主导,掩盖稀有类别失败。
  • Micro:先把各类的 TPTPTP、FPFPFP、FNFNFN 汇总,再计算指标。它让每一次样本决策权重相同;在单标签多分类中,micro-F1 常与准确率一致,因此同样可能看不见少数类。

因此,一份多分类报告不应只给“macro-F1 为多少”。至少同时给出每类 support、precision、recall、F1 和混淆矩阵,再根据业务问题选一个主汇总指标。若某类根本没有真实样本或模型从未预测该类,指标还可能出现零除;报告必须明确处理规则,不能悄悄删除这类结果。

Weighted 指标高不代表每个类别都好,Macro 指标低也不一定代表系统整体不可用。平均方式是在回答不同问题。先说明谁应当拥有相同权重,再选择平均方式,比看到结果后挑一个最好看的数字更可靠。

4
关于 F1 与多分类平均方式,下面哪些说法正确?

PR 与 ROC 要连同基线和目标区间一起看

阈值从高到低移动时,模型会产生一系列混淆矩阵。ROC 曲线和 PR 曲线都在描述这组变化,但观察角度不同。

ROC 曲线的横轴是假正率,纵轴是真正率:

ROC point(t)=(FPR(t),TPR(t))\text{ROC point}(t) = \bigl(\text{FPR}(t),\text{TPR}(t)\bigr)ROC point(t)=(FPR(t),TPR(t))

PR 曲线的横轴是召回率,纵轴是精确率:

PR point(t)=(Recall(t),Precision(t))\text{PR point}(t) = \bigl(\text{Recall}(t),\text{Precision}(t)\bigr)PR point(t)=(Recall(t),Precision(t))

ROC 关注模型怎样在正类与负类之间排序;随机排序的 ROC-AUC 期望约为 0.5,对角线是直观基线。PR 更直接展示“找回多少正类时,告警里有多少是真的”。随机排序的 precision 基线约等于评估总体的正类率 π\piπ,因此解释 AUPRC 时必须同时报告 π\piπ。

类别越稀有,PR 越能暴露告警负担

假设 10000 个样本中正类率为 1%,模型在某阈值下有 80% 的 TPR 和 1% 的 FPR。100 个正类中得到 80 个 TPTPTP,9900 个负类中得到 99 个 FPFPFP,所以:

Precision=8080+99≈44.69%\text{Precision} = \frac{80}{80+99} \approx 44.69\%Precision=80+9980​≈44.69%

1% 的 FPR 在 ROC 图上看起来靠近左侧,但现实中已经产生了比真正例更多的假告警。PR 曲线把这个负担直接显示在 precision 上。

precision 还会随正类率变化。若 TPR、FPR 保持不变,目标总体正类率为 π\piπ,则:

Precision=TPR⋅πTPR⋅π+FPR⋅(1−π)\text{Precision} = \frac{\text{TPR}\cdot\pi} {\text{TPR}\cdot\pi+\text{FPR}\cdot(1-\pi)}Precision=TPR⋅π+FPR⋅(1−π)TPR⋅π​

这意味着同一模型从正类率 10% 的实验集部署到正类率 1% 的真实流量,precision 可能大幅下降。跨数据集比较 PR 曲线时,必须检查正类率和取样方案;用人为平衡过的测试集算出的 precision,不能直接当作线上告警命中率。

面积不是最终决策

ROC-AUC 可以理解为随机抽取一个正类和一个负类时,模型把正类排在更前面的概率。AUPRC 也总结了整个阈值范围。它们适合比较排序能力,却会平均掉团队根本不会使用的区间。

如果人工一天只能处理 500 条告警,真正关心的可能是“前 500 条的 precision”和对应 recall;如果制度要求召回率至少 90%,就应比较 recall 大于 90% 的局部区域。一个整体 AUC 更高的模型,在实际工作区间里仍可能更差。

PR 与 ROC 曲线、随机基线和目标运营区间的联合阅读方式

曲线必须连同正类率基线、目标区间和实际告警容量一起读。

5
随机排序模型在 PR 图上的 precision 基线大致等于评估总体的 ____。

阈值是一条决策政策,不是模型附带的 0.5

连续分数负责排序,阈值负责把分数变成动作。0.5 只是部分分类器的默认规则,并不天然对应最低成本、最高 F1 或业务容量。更何况,许多模型输出的是距离或未经校准的分数,0.5 根本没有概率含义。

三种常见的阈值选择方式

成本最小化适合每类错误能近似折算成本的场景。阈值 ttt 的经验损失可以写成:

L^(t)=CFN⋅FN(t)+CFP⋅FP(t)\widehat{L}(t) = C_{FN}\cdot FN(t) + C_{FP}\cdot FP(t)L(t)=CFN​⋅FN(t)+CFP​⋅FP(t)

实际系统还可能加入人工处理成本、延迟成本和正确拦截收益。成本数值不必假装精确到个位,但要通过范围分析说明结论是否会随成本假设改变。

约束优化适合存在硬门槛的场景,例如:

min⁡tFP(t)s.t.Recall(t)≥0.90\min_t FP(t) \quad \text{s.t.} \quad \text{Recall}(t)\geq 0.90tmin​FP(t)s.t.Recall(t)≥0.90

也可以规定 precision 不低于某值、关键切片的漏报率不得超过上限,或服务延迟必须守住护栏。

容量约束适合人工审核、客服回访和有限床位等场景。若每天最多处理 KKK 个样本,可以选择 Top-K 或使告警量不超过 KKK 的阈值。此时要监控流量与分数分布;固定 Top-K 会在风险激增时压低实际阈值,固定阈值则会让工作量波动。

阈值只能在开发数据上选

正确顺序是:

使用训练数据拟合模型,并产出连续分数。若还要校准概率,校准器也必须只使用允许参与开发的数据。

在验证集或符合实体、时间边界的交叉验证中比较阈值。主目标、约束、关键切片和并列处理规则都要提前写入协议。

将模型、预处理、校准器、阈值和后处理规则视为一个完整候选方案,一起冻结。

最后在未参与选择的测试集上评估一次。若结果促使团队更换阈值,就需要新的独立验收数据。

如果多个相邻阈值的表现差不多,通常不必迷信小数点后第四位的“最优值”。应查看 bootstrap 下阈值是否稳定,优先选择在关键约束上留有余量、对流量轻微变化不敏感的区间。

分类阈值移动时告警量、漏报、误报和业务成本的联动

阈值是一条业务决策政策,需要随着成本、容量与风险重新确认。

6
一个罕见事件模型要求召回率至少 90%,并希望在满足该条件时尽量减少假告警。阈值应怎样确定?

排得准和报得准是两种能力

模型 A 把大多数真正例排在负类前面,说明它的排序能力不错。模型声称某批样本“有 80% 概率为正”,而这批样本中确实约有 80% 为正,说明它的概率校准不错。这两件事相关,却不相同。

把所有分数做一个严格单调变换,样本顺序可以完全不变,因此 ROC-AUC 也不变,但分数的概率含义会改变。反过来,一个只输出接近总体正类率的模型可能校准尚可,却几乎无法区分谁的风险更高。

可靠性图要连同样本分布一起读

校准曲线会把预测概率分箱。第 bbb 个箱中的平均预测为:

p^b=1nb∑i∈bp^i\widehat{p}_b = \frac{1}{n_b} \sum_{i\in b}\widehat{p}_ip​b​=nb​1​i∈b∑​p​i​

实际正类频率为:

f^b=1nb∑i∈byi\widehat{f}_b = \frac{1}{n_b} \sum_{i\in b}y_if​b​=nb​1​i∈b∑​yi​

若 p^b\widehat{p}_bp​b​ 与 f^b\widehat{f}_bf​b​ 接近,说明该箱较为校准。图上还应显示每个箱的样本数或分数直方图。最靠近 0 和 1 的箱往往样本很少,只看一条折线会把随机波动误当成严重偏差。

Brier loss 和 log loss 可评估概率预测,但它们同时受区分能力和校准影响。Brier 更低不一定表示可靠性图处处更贴近对角线;需要把概率损失、可靠性图和排序指标放在一起看。

校准器也会过拟合

校准映射不能用模型已经拟合过的同一批训练预测直接学习,否则训练分数通常过于乐观。可以留出独立校准集,或用交叉验证生成 out-of-fold 分数再拟合校准器。

数据分布变化后,旧校准也可能失效。正类率改变、标签延迟规则变化或目标人群改变,都会让“0.8”不再对应原来的实际频率。因此,依赖概率做成本决策、资源分配或风险沟通的系统,需要按目标时间窗和关键切片持续检查校准,而不只是上线前画一次图。

模型的排序能力与概率校准能力处在两条不同评价轴上

排序指标回答谁在前面,校准回答一个概率数值究竟意味着什么。

7
只要两个模型的 ROC-AUC 相同,它们输出的 0.8 就一定具有相同的事件概率含义。

数据动作要对准错误原因,而不是笼统地“多收数据”

“更多数据有帮助”只有在新数据能减少当前主要误差时才成立。若标签规范相互冲突,复制十倍同类数据只会复制冲突;若验证流量来自新设备,继续收集旧设备样本可能几乎没有收益;若模型连训练集都拟合不好,盲目扩充数据也未必解决容量或优化问题。

可以把常见症状与数据动作对照起来:

诊断证据更合适的数据动作验证问题
同一输入被标注者频繁给出不同标签澄清指南、双人复核、记录分歧与裁决标签一致性和关键指标是否提高
某个目标切片错误集中且样本少定向收集该切片,并保持真实构成的对照集切片提升是否泛化,整体是否受损
训练集与同分布留出集差距大增加独立同分布样本、正则化或减小方差training-dev 差距是否缩小
新事件或新设备在验证集大量出现收集更接近目标分布的近期样本分布错配是否下降
大量错误位于标签边界、专家也分歧改标签定义、允许拒答或预测分布强行二分类是否仍合理
模型对少量困难样本极不稳定重复测量、补充上下文或改采集流程输入本身是否含足够信息

标签质量不等于把所有分歧抹平

标注流程应先定义对象、观察窗口、证据来源和无法判断时怎样处理。抽取一批重叠样本让多个标注者独立作答,可以发现指南歧义。对于高风险或困难样本,再交给更有经验的裁决者。

但分歧本身可能是信息。内容是否冒犯、交易是否可疑、医学影像是否边界异常,都可能存在合理不确定性。若团队强迫每条样本得到一个看似确定的标签,会把真实模糊性藏进噪声。可以保留标注分布、置信等级或“需进一步检查”状态,并让评估协议承认这种边界。

主动学习有用,但不是“只标 0.5 附近”

主动学习让模型从未标注池中提出值得标注的样本。最简单的不确定性采样会优先选预测最不确定的样本,确实可能用较少标签改进决策边界。但实践中有几个限制:

  • 最不确定的样本可能是异常值、损坏数据或本来就无法判断;
  • 当前模型的盲区不一定表现为低置信度,它可能自信地犯错;
  • 只选边界样本会改变标注集分布,导致评估和概率估计偏移;
  • 未校准的分数不等于可靠不确定性;
  • 连续选择相似样本会浪费标注预算。

因此,实际批次常把不确定性与多样性、覆盖度和业务价值结合,并保留一部分随机抽样作为对照。标注前还要去重和做可标注性检查,标注后记录样本为什么被选中。主动学习产生的是训练候选,不应取代代表目标总体的独立验证集。

从错误原因走向定向补数据、修标签与补特征的数据投资地图

“多收数据”不是行动方案,新增样本必须对准当前主要错误机制。

8
关于数据改进和主动学习,下面哪些判断合理?

用 training-dev 把方差和分布错配拆开

现实项目经常有两种数据:数量很多但不完全像线上目标的训练来源 A,以及数量较少却更接近真实使用场景的目标来源 B。若模型在训练集上好、目标验证集上差,我们不能立刻断言“过拟合”,因为差距可能来自分布错配。

一种有用的四集合设计是:

集合来源分布是否参与拟合用途
TrainA是学习模型参数
Training-devA否测量对训练来源中未见样本的泛化
DevB否选择面向目标分布的方案和阈值
TestB否冻结方案的最终独立验收

假设错误率为:

指标错误率
Train4%
Training-dev6%
Dev15%
Test尚未查看

Train 到 Training-dev 增加 2 个百分点,表示模型对来源 A 有一定泛化差距;Training-dev 到 Dev 再增加 9 个百分点,更强地指向 A 与 B 的分布错配。若没有 Training-dev,我们只能看到 4% 到 15%,很容易把所有差距都归因于方差。

发现错配后,先找具体属性

“A 和 B 不一样”还不能指导行动。应分别比较两边的错误账本、输入统计和标签流程,例如:

  • A 多为清晰录音,B 多为手机远场录音;
  • A 的正类来自人工审核,B 的正类来自 30 天后结果;
  • A 集中在老设备,B 新设备占比迅速上升;
  • A 的文本经过人工清洗,B 保留真实拼写和截断;
  • 两边同名字段的生成时间点不同。

接下来可以收集更接近 B 的训练数据、在 A 中模拟已证实的 B 属性、调整采样权重,或删除只在 A 中可用的特征。任何改动仍要在固定的目标 Dev 上验证。不能为了“让分布一致”把 Dev 样本悄悄并入训练,再继续报告同一份 Dev 分数。

Dev 与 Test 应来自团队真正关心的同一目标分布,并使用一致标签定义。如果上线目标变了,就应重建二者,而不是用训练来源 A 的测试集证明面向 B 的效果。

训练集、training-dev、开发集和测试集误差拆解分布错配

training-dev 集把同分布方差与目标分布错配拆成两段可诊断差距。

9
模型错误率为 Train 3%、Training-dev 4%、目标 Dev 14%。最有根据的首要诊断是什么?

人工上限能估计可避免偏差,但有适用前提

如果任务是从一张图片识别缺陷,而熟练人员在看到相同输入时能稳定判断,人工表现可以帮助估计还有多少可避免偏差。设参考错误率为 ErefE_{ref}Eref​,训练错误率为 EtrainE_{train}Etrain​,一个粗略诊断量是:

avoidable bias≈Etrain−Eref\text{avoidable bias} \approx E_{train}-E_{ref}avoidable bias≈Etrain​−Eref​

若专家团队错误率约 2%,模型训练错误率为 12%,说明模型连现有训练样本都远未达到可实现参考线,先提高模型对现有信息的利用通常比盲目收更多同类数据更合理。

结合上一节的四集合,还可以粗略分解:

可避免偏差≈Etrain−Eref训练来源方差≈Etraining-dev−Etrain分布错配≈Edev−Etraining-dev\begin{aligned} \text{可避免偏差} &\approx E_{train}-E_{ref} \\ \text{训练来源方差} &\approx E_{training\text{-}dev}-E_{train} \\ \text{分布错配} &\approx E_{dev}-E_{training\text{-}dev} \end{aligned}可避免偏差训练来源方差分布错配​≈Etrain​−Eref​≈Etraining-dev​−Etrain​≈Edev​−Etraining-dev​​

这些差值是行动线索,不是严格互不影响的因果分解。抽样噪声、标签流程和模型训练随机性都可能使差值不稳定,所以要结合区间和具体错误样本解释。

参考人工必须与任务条件一致

“人类准确率”不是随便找几个人做题。应说明:

  • 参考者是普通用户、受训标注员、领域专家还是多人会诊;
  • 他们看到的信息是否与模型完全相同;
  • 标签定义和观察窗口是否一致;
  • 是否允许拒答、查资料或讨论;
  • 样本是否代表目标总体;
  • 人工分歧有多大。

若模型只能看到提交当刻的字段,却拿人工查看 30 天后完整调查记录的成绩作参考,这个“上限”不公平。反过来,若高水平专家团队能在相同输入上稳定达到 2% 错误,就不应拿普通人的 15% 错误当作不可避免水平。

有些任务没有可用的人工上限

长期违约、设备未来故障、个性化排序和需求预测都可能依赖人类无法直接判断的统计规律。模型超过整体人工表现后,人工上限也不再是可靠的最优误差代理。此时可以改用:

  • 已知业务规则或旧系统基线;
  • 重复测量下的标签稳定性;
  • 延迟成熟结果形成的历史最好水平;
  • 在特定切片上仍优于模型的专家参考;
  • 合成数据或受控任务中的可恢复上限。

说得直接一点,人工参考适合回答“模型离熟练人员能做到的水平还有多远”,不适合把所有未知任务都硬塞进“人类上限”这个框架。

10
只要能找到一些人工标注者,就可以把他们的平均错误率当作所有机器学习任务的不可避免误差。

关键切片必须同时报告风险和不确定性

总体指标会把不同人群、设备和场景混在一起。一个模型总体 recall 提高,可能只是容易样本占比变大;少数但高风险的切片反而退化。切片评估的目的不是把数据随意切成几十张表,而是检查已知风险假设。

切片应优先来自:

  • 错误后果不同的人群或业务流程;
  • 数据生成方式明显不同的设备、语言、地区和时间段;
  • 训练数据覆盖不足的群体;
  • 法规、合同或安全要求明确关注的场景;
  • 误差分析中反复出现的困难条件;
  • 多个条件交叉后可能被总体平均掩盖的群体。

每个切片至少给出六类信息

信息为什么需要
样本数与独立实体数判断证据规模,避免重复记录虚增样本
正类数与正类率理解 precision 基线和数据构成
混淆矩阵计数看见真实漏报与误报数量
主要指标与护栏对应当前决策风险
置信区间或重采样分布区分估计不稳与真实差异
与整体或旧模型的配对差异同一批样本上比较,减少构成影响

例如某关键切片只有 12 个真实正类,模型找回其中 10 个,recall 点估计为 83.3%。这个数字不能单独证明“已达到 80% 门槛”,因为区间会很宽。样本少不是忽略该群体的理由,而是说明团队目前还不知道表现是否稳定,需要更多有针对性的评估数据或更保守的决策。

公平没有一个到处通用的单指标

不同场景可能关注正例机会、误报负担、选择率、概率校准或最终资源分配。人口统计均等、机会均等、错误率均等等定义回答不同问题,在基础发生率不同的群体间甚至无法同时完美满足。

选择公平指标时,应先描述具体伤害:谁会因为假正例被额外审查,谁会因为假负例失去帮助,阈值改变会把什么负担转移给谁。然后再决定切片、指标、门槛和人工申诉路径。不能先挑一个数学定义,再假装它替团队完成了价值判断。

切片比较还要防止构成变化和多重试探。若上线后浏览上百个切片,只报告最差的几个,偶然波动会被放大。核心切片和门槛应预先登记;探索性发现可以保留,但要在新数据上确认。

关键切片的指标点估计、样本量与置信区间并列报告

点估计相同不代表证据强度相同;小切片必须同时展示不确定性。

11
某关键人群切片只有 12 个真实正类,模型找回 10 个。下面哪些处理合理?

把想法写成实验队列,并提前规定止损

误差分析结束后,白板上常会出现十几条建议。若没有统一格式,容易出现“换 Transformer”这样很具体却缺少诊断依据的任务,也容易让耗时最长的人自动获得最高优先级。

我建议每个候选实验都写成一张卡:

字段例子
症状新设备切片的假负例占全部假负例 28%
证据复核 120 条错误,training-dev 正常而目标 Dev 明显下降
假设训练数据缺少新设备产生的会话信号
唯一主改动定向补充近期新设备样本并加入可用特征
理论上限完美修复该类最多移除当前 28% 假负例
预计可修复率根据小规模试标,估计能解决其中 40%–60%
成本与依赖两周标注、一个上游字段、隐私评审
验收方式固定 Dev 上 recall、告警量与关键切片区间
止损条件三天后字段覆盖仍低于 50%,停止进入正式训练

优先级是影响、把握和成本的共同判断

可以用“预计影响 × 证据把握 ÷ 成本”帮助排序,但不要把粗估值包装成精确科学。使用高、中、低三个等级往往更诚实。安全风险或法规约束也不能简单被平均收益抵消,应设为硬门槛。

通常应先做能验证基础假设、成本低且信息增益高的实验。例如先抽查 100 条标签,可能一天内证明所谓“模型不够复杂”其实是标签映射错误;这比直接训练一个昂贵模型更有价值。

止损规则让失败也产生信息

每个实验在开始前写明:

  • 最长投入多少时间或计算预算;
  • 结果低于什么幅度就不继续扩大;
  • 哪个护栏恶化会立即停止;
  • 依赖数据覆盖达不到多少就取消;
  • 哪个新证据会推翻原假设;
  • 失败后要保留哪些样本、日志和结论。

一次实验尽量只改变一个主因素。若同时换标签、特征、模型和阈值,即使分数提高,也很难知道下一步该保留什么。确实需要组合改动时,可以先做消融,或者至少明确组合方案回答的是“整包是否可行”,而不是各部件的单独贡献。

12
错误分析发现某类问题占全部错误 30%,但修复需要三个月;另一类标签映射问题占 12%,预计两天可修复九成。最合理的下一步是什么?

用账户盗用告警走完一次诊断

某平台每周约有 50000 次需要评估的登录,其中最终确认的账户盗用约 200 次,正类率为 0.4%。安全团队希望尽量拦住盗用,但人工每周最多复核 800 条告警;正常用户被强制冻结也会造成明显损失。

先锁定尺子

团队把评估单位定为“账户在一次风险会话中的首次登录”,同一账户不能跨集合。标签要等待 30 天,综合用户申诉、资金损失和人工调查后才成熟。训练集使用较早时间,Dev 使用紧接其后的完整目标时间窗,Test 使用更晚且尚未查看的时间窗。

主约束是人工告警量不超过 800,主目标是在约束内最大化 recall。护栏包括正常用户冻结数、不同设备与地区切片的假正率、人工处理时延。模型输出、校准器、阈值和例外放行规则共同组成一个候选方案。

总体准确率先暴露了错误问题

旧阈值下,Dev 的混淆矩阵为:

计数数值
TPTPTP116
FNFNFN84
FPFPFP174
TNTNTN49626

准确率为 99.48%,但 recall 只有 58%,意味着 84 次真实盗用未被拦住。precision 为 40%,290 条告警中有 116 条命中。此时“99.48% 准确率”对决策几乎没有帮助,真正的问题是怎样在 800 条容量内提高召回,同时控制用户伤害。

错误账本改变了实验顺序

团队按假负例、假正例、设备和地区分层抽取样本,并由两名审核员独立复核。结果发现:

  • 约三分之一假负例来自近期出现的新设备会话模式;
  • 一部分假负例是会话接管,密码与常用地点都正常,现有输入缺少可区分信号;
  • 假正例集中在正常旅行、VPN 和家庭共享设备;
  • 14 条高损失样本的标签存在争议,旧指南没有说明“用户撤回申诉”怎样处理;
  • 若干类别重叠,因此团队保留多标签,而没有强行把比例加成 100%。

这份结果让“先换更大模型”降到了队列后面。排在前面的动作变成:修订标签裁决规则;确认新设备信号在预测时刻是否稳定可得;定向补充近期新设备的真实正负样本;为旅行与 VPN 场景建立关键切片。

排序、校准和阈值分别处理

候选模型的 PR 曲线显示,在 800 条告警以内仍有提高 recall 的空间。团队没有在 Test 上寻找阈值,而是在 Dev 上以容量为硬约束。某个候选阈值产生 TP=164TP=164TP=164、FN=36FN=36FN=36、FP=606FP=606FP=606,总告警 770,recall 提高到 82%,precision 约为 21.3%。

precision 下降并不自动表示方案变差,因为团队明确愿意用剩余人工容量换取更少漏报。但 606 个假正例是否可接受,还要看冻结动作、人工成本和关键切片。若某地区的正常用户被异常集中拦截,整体容量合规也不能直接发布。

可靠性图又显示,旧模型分数在 0.8 左右的样本实际只有约 43% 为正。它的排序尚可,但概率严重过度自信。团队用符合时间边界的 out-of-fold 分数拟合校准器,并重新检查近期 Dev 上的可靠性。校准后的概率用于成本范围分析;阈值仍按容量和 recall 约束选择。两项工作相关,却没有混成一句“把概率调准就能提高 AUC”。

数据与分布诊断决定长期动作

模型在旧来源的 Train 和 Training-dev 上差距很小,在近期目标 Dev 上却明显变差,说明新设备和新攻击路径带来了分布错配。团队补充近期目标样本,同时保留随机抽样,不让主动学习只追着模型最不确定的会话跑。

主动学习批次由四部分组成:边界不确定样本、模型间分歧样本、新设备覆盖样本和随机对照。损坏日志、重复会话和审核员无法判断的样本先单独归档。这样做既提高标注信息量,也保留了估计真实正类率和发现自信错误的入口。

人工参考只用于审核员在相同会话信息下能稳定判断的切片。对于要等 30 天结果才能确认的盗用,团队不把审核员即时判断当作“不可避免误差”。这避免了拿事后真相与实时模型做不公平比较。

最终形成一条有止损的实验队列

团队把接下来两周安排为:

  1. 两天内修订标签规则并重审争议样本;若审核一致性没有改善,暂停扩大标注。
  2. 验证新设备信号的线上覆盖与生成时点;覆盖低于预设门槛就不进入训练。
  3. 在固定 Dev 上比较“旧模型 + 新阈值”“旧模型 + 校准”“补充目标数据后的模型”,每次只改变一个主因素。
  4. 对 800 条容量、关键切片假正率和区间下界做联合检查。
  5. 方案冻结后只查看一次 Test;不达门槛就记录失败原因,等待新的独立时间窗,而不是在 Test 上继续调。

这条路径没有承诺一定换模型。它承诺的是每一步都能回答一个问题:标签是否可信,信号是否可得,错误是否来自错配,排序是否足够,概率能否支持成本解释,阈值是否符合容量,以及小切片上的提升究竟是证据还是波动。

13
根据案例,在未来五个工作日只能完成两项工作时,最应优先选择哪些?
上一章机器学习系统设计:把一次模型实验变成可持续的产品闭环下一章支持向量机:从最大间隔到可靠的核分类流程