核心要点

  • 定义数据契约(schema):字段、类型、取值范围、可空性、唯一性约束

  • 在管线入口(接入处)校验,尽早拦截脏数据,避免污染下游

  • 加分布检查:监控特征均值/分位数/类别占比,发现数据漂移

  • 保证训练-服务一致:同一套校验与特征逻辑用于离线训练和线上推理

标准回答

一、先给出结论和背景

  • 数据契约(Data Contract)= 把数据质量当代码来保障:ML 系统「垃圾进垃圾出」,数据问题往往比模型问题更隐蔽、危害更大,所以要在数据进入管线时就显式校验。
  • 结构与值校验:- Schema/类型:列是否存在、类型是否正确。
  • 范围:年龄 ∈ [0,120]、概率 ∈ [0,1]。
  • 空值/唯一性:关键字段非空、主键唯一、外键有效。

二、拆开关键步骤和判断点

  • 分布与漂移:- 监控数值特征的均值/方差/分位数、类别特征的取值占比。
  • 与训练期基线对比,超阈值告警,识别 data drift
  • 工具与位置:- 用 Great Expectations、Pandera 等声明式定义「期望」,在管线入口与特征产出处拦截,脏数据直接 fail-fast 而非默默通过。

三、补上落地边界和取舍

  • 训练-服务一致性:- 同一套 schema 与特征转换复用于训练和线上,避免 training-serving skew;最好通过 Feature Store 统一管理(Feature Store 架构与实践)。

常见误区

⚠️ 常见踩坑

误区一:容易答偏的地方:只在训练时校验、线上不校验,导致训练-服务特征不一致;或只查 schema 不查分布,漏掉静默的数据漂移。

追问

追问 1数据校验应该放在管线的哪个位置?

尽量靠前——在原始数据接入处先做一道(fail-fast 拦截脏数据),并在每个关键转换的产出处再做一道(验证转换正确)。越早发现成本越低,避免脏数据污染整个下游训练。

追问 2怎么检测数据漂移(data drift)?

保存训练期的特征分布作为基线,对线上/新批数据计算同样的统计量(均值、分位数、类别占比),用 PSI、KL 散度或 KS 检验衡量偏移,超阈值告警并触发复查或重训。

🔗 相似问题

同一考点的不同问法,换着练更稳

延伸学习

按主题分类的相关资源,便于系统复习