真实面经题目 · 原创解析

万用户数据中有 5% 标签错误,如何用算法找出错误样本并赋予正确类别?

这道题考察 label noise 场景下的数据质量诊断和训练闭环。回答时要先区分“找出疑似错标样本”和“给出可信新标签”两个目标,再用交叉验证预测、模型分歧、邻域一致性和人工或高置信规则校验构建可控流程。

出现于:拼多多 · 算法

60 秒回答模板

我会先把问题拆成两步:第一步识别疑似错标样本,第二步给这些样本重新赋予可信标签。识别阶段可以用干净验证集或 K 折 out-of-fold 预测,找出真实标签与模型高置信预测长期冲突、loss 异常高、多个模型判断不一致或与近邻样本标签不一致的样本。修正阶段不能直接全量覆盖,可以先按置信度分层:高置信样本用集成模型或邻域一致性给软标签或新标签,中低置信样本进入人工复核或暂时降权。最后用噪声发现的 precision、干净验证集效果、线上指标和回归测试验证,避免把难样本、长尾样本误当成错标。

考点 两阶段流程
难度 真实面经题
回答目标 讲清原理、实现和边界

深入解析

01

目标拆分

题目给出 10 万用户数据和 5% 标签错误率,关键不是直接训练一个分类器,而是建立错标发现与标签修正流程。错标发现追求较高 precision,避免把真实但困难的样本误删;标签修正追求新标签可信,不能只因为模型预测不同就覆盖原标签。

02

基线准备

先做数据审计和分层切分,保留一小部分人工确认或历史可信的 clean validation set。训练时使用 K 折 out-of-fold 预测,保证每个样本的预测来自没有见过它的模型,从而降低“模型记住训练标签后仍给出高置信”的偏差。

03

疑似样本识别

可把多种信号合并成风险分数:当前标签对应概率长期很低、交叉熵 loss 排名前列、模型预测类别高置信且与原标签冲突、不同模型或不同特征视角分歧大、样本在 embedding 或特征邻域中的多数标签与自身标签不一致。多个独立信号同时命中时,错标概率更高。

04

标签修正

高置信冲突样本可以用集成模型投票、校准后的类别概率、近邻标签一致性和业务规则共同给出候选新标签。对不确定样本更稳妥的做法是降权、使用软标签、进入人工复核或从训练集中暂时隔离,而不是强行赋一个模型最可能类别。

05

鲁棒训练

如果暂时无法完全清洗标签,可以在训练阶段降低噪声影响,例如样本 reweight、small-loss 选择、label smoothing、bootstrapping loss、噪声转移矩阵估计或半监督自训练。选择哪种方法要看标签噪声是否类相关、是否集中在某些用户群体或特征区域。

06

验证闭环

验收时不要只看训练集 loss 下降。应抽样复核疑似错标命中的准确率,比较修正前后的 clean validation 指标、分类别召回、长尾样本表现和稳定性。如果修正后整体指标提升但某些少数类召回下降,说明流程可能把难样本当作噪声处理了。

易错点

  • 只回答“删掉高 loss 样本”,没有说明高 loss 也可能来自 hard example、少数类或特征缺失。
  • 把模型预测不同于原标签的样本全部改掉,忽略模型自身错误会造成二次污染。
  • 没有使用 out-of-fold 或独立验证,导致模型在训练集上记住错标签后仍然给出虚假的高置信。
  • 只看整体准确率提升,不按类别、用户群体和长尾样本检查是否误伤真实样本。

面试官追问

为什么不能直接把模型预测类别当作新标签?

模型预测也会受原始噪声、样本偏差和类别不均衡影响。直接覆盖会放大模型偏见,尤其容易误伤边界样本、少数类样本和特征分布较稀疏的长尾样本。

没有干净验证集时怎么做?

可以先抽样人工复核建立小规模可信集,再用 K 折 out-of-fold、模型集成、邻域一致性和高置信阈值控制误判,同时对修正样本做分层抽检。

错标样本和 hard example 怎么区分?

hard example 通常在多个相近类别之间不稳定,但可能与邻域、业务规则或人工判断一致;错标样本往往与高置信预测、邻域多数标签和人工语义同时冲突。

如果 5% 错标集中在某个类别怎么办?

需要按类别和特征切片看噪声率,类相关噪声可估计噪声转移矩阵或做分类别阈值,不能用一个全局阈值处理所有样本。