1. 课程导论:离线特征巡检与PSI监控的背景、目标与整体架构
1.1 为什么需要离线特征巡检与PSI监控?
在机器学习模型的全生命周期中,特征质量是决定模型效果的上限。然而,在实际生产环境中,特征数据往往面临以下三大挑战:
- 数据延迟与缺失:离线数仓调度延迟、上游表字段变更、分区丢失导致特征表无法按时产出或出现大量空值。
- 特征分布偏移:用户行为、业务策略、外部环境变化导致特征统计分布(均值、方差、分位数)发生漂移,模型推理时输入分布与训练时不一致。
- 特征逻辑错误:ETL 代码 Bug、特征计算口径修改、特征交叉逻辑错误,导致特征值异常但未被及时发现。
典型事故案例:某推荐系统因离线特征表分区丢失,模型使用全零特征向量在线服务 3 小时,导致 CTR 下降 15%,直接经济损失超百万。事后复盘发现:特征巡检与 PSI 监控完全缺失。
离线特征巡检与 PSI(Population Stability Index)监控正是为了解决上述问题而设计的系统性工程方案。其核心目标是在模型上线前、上线后持续保障特征数据的完整性、一致性与稳定性。
1.2 核心目标
| 目标维度 | 具体描述 | 关键指标 |
|---|---|---|
| 完整性 | 特征表按时产出,无缺失分区、无关键字段空值 | 分区产出延迟 < 30min,空值率 < 1% |
| 一致性 | 离线特征与在线特征口径一致,无逻辑偏差 | 离线-在线特征值差异 < 0.1% |
| 稳定性 | 特征分布随时间保持稳定,无显著漂移 | PSI < 0.1(无变化),0.1~0.25(需关注),> 0.25(告警) |
| 时效性 | 巡检与监控结果在特征产出后 10 分钟内完成 | 端到端延迟 < 10min |
1.3 整体架构
离线特征巡检与 PSI 监控系统采用分层解耦架构,从上到下分为四层:数据接入层、巡检计算层、监控告警层、可视化与复盘层。各层职责清晰,通过消息队列与元数据中心串联。
1.4 核心流程步骤
- 元数据采集:每日凌晨从 Hive Metastore / Data Catalog 拉取特征表元数据(字段名、类型、分区信息、数据量)。
- 特征完整性巡检:检查特征表是否按时产出、分区是否完整、关键字段空值率是否在阈值内。
- 特征一致性校验:对比离线特征表与在线特征存储(Redis / Feature Store)中同一特征的取值分布,计算差异率。
- PSI 稳定性计算:以训练集特征分布为基准,计算当前批次特征的 PSI 值,判断分布漂移程度。
- 告警判定与分发:根据预设规则(PSI > 0.25、空值率 > 1% 等)触发告警,通过企业微信/钉钉/邮件通知责任人。
- 可视化与复盘:在 Grafana 中展示特征健康度仪表盘,支持按特征、按时间维度下钻分析,自动生成周/月复盘报告。
1.5 关键设计原则
| 原则 | 说明 | 实现方式 |
|---|---|---|
| 可扩展性 | 支持新增特征表、新增巡检规则无需修改核心代码 | 配置化规则引擎 + 元数据驱动 |
| 低延迟 | 巡检结果在特征产出后 10 分钟内可用 | Spark 增量计算 + 流批一体架构 |
| 可回溯 | 支持回看任意历史日期的巡检结果与特征分布 | 结果表按天分区 + 时序数据库存储 |
| 可解释性 | 告警时附带特征分布对比图、漂移贡献特征列表 | PSI 分箱贡献度分析 + 可视化 |
1.6 本课程覆盖内容
课程路线图:本课程共 30 章,从离线特征巡检的基础概念讲起,逐步深入到 PSI 计算原理、Spark/Flink 工程实现、告警规则设计、Grafana 可视化、以及大规模特征治理的最佳实践。每章均配有可运行的代码示例与架构图,帮助学员快速落地。
通过本课程的学习,你将掌握:
- 离线特征巡检的完整工程链路设计与实现
- PSI 指标的计算原理与分布式优化方法
- 基于 Spark + Flink 的流批一体巡检引擎搭建
- 告警规则引擎与多通道告警集成
- 特征健康度可视化大盘与复盘机制