核心要点

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

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

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

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

标准回答

数据契约(Data Contract)= 把数据质量当代码来保障

ML 系统「垃圾进垃圾出」,数据问题往往比模型问题更隐蔽、危害更大,所以要在数据进入管线时就显式校验。

1. 结构与值校验

  • Schema/类型:列是否存在、类型是否正确。
  • 范围:年龄 ∈ [0,120]、概率 ∈ [0,1]。
  • 空值/唯一性:关键字段非空、主键唯一、外键有效。

2. 分布与漂移

  • 监控数值特征的均值/方差/分位数、类别特征的取值占比。
  • 与训练期基线对比,超阈值告警,识别 data drift

3. 工具与位置

  • Great Expectations、Pandera 等声明式定义「期望」,在管线入口与特征产出处拦截,脏数据直接 fail-fast 而非默默通过。

4. 训练-服务一致性

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

常见误区

⚠️ 常见踩坑

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

追问

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

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

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

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

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。