核心要点
定义数据契约(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 检验衡量偏移,超阈值告警并触发复查或重训。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
🛠️ AI 工具
- Great Expectations
数据质量和验证框架,帮助团队定义、测试和文档化数据期望值,确保数据管道的可靠性。