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 监控系统采用分层解耦架构,从上到下分为四层:数据接入层、巡检计算层、监控告警层、可视化与复盘层。各层职责清晰,通过消息队列与元数据中心串联。

离线特征巡检与 PSI 监控整体架构 数据接入层 离线数仓 Hive/Spark 表 | 实时 Kafka 流 | 特征存储 Redis/Feature Store 元数据采集:表结构、分区信息、数据量、更新时间 巡检计算层 特征完整性巡检 | 特征一致性校验 | 特征稳定性计算 (PSI) Spark 批处理 + Flink 流处理 | 每日/每小时调度 结果写入:巡检结果表 + 指标时序库 监控告警层 规则引擎:阈值告警(PSI > 0.25、空值率 > 1%、延迟 > 30min) 告警通道:企业微信 / 钉钉 / 邮件 / 电话 可视化与复盘层 Grafana 仪表盘 | 特征健康度评分 | 历史趋势分析 | 复盘报告自动生成

1.4 核心流程步骤

  1. 元数据采集:每日凌晨从 Hive Metastore / Data Catalog 拉取特征表元数据(字段名、类型、分区信息、数据量)。
  2. 特征完整性巡检:检查特征表是否按时产出、分区是否完整、关键字段空值率是否在阈值内。
  3. 特征一致性校验:对比离线特征表与在线特征存储(Redis / Feature Store)中同一特征的取值分布,计算差异率。
  4. PSI 稳定性计算:以训练集特征分布为基准,计算当前批次特征的 PSI 值,判断分布漂移程度。
  5. 告警判定与分发:根据预设规则(PSI > 0.25、空值率 > 1% 等)触发告警,通过企业微信/钉钉/邮件通知责任人。
  6. 可视化与复盘:在 Grafana 中展示特征健康度仪表盘,支持按特征、按时间维度下钻分析,自动生成周/月复盘报告。

1.5 关键设计原则

原则 说明 实现方式
可扩展性 支持新增特征表、新增巡检规则无需修改核心代码 配置化规则引擎 + 元数据驱动
低延迟 巡检结果在特征产出后 10 分钟内可用 Spark 增量计算 + 流批一体架构
可回溯 支持回看任意历史日期的巡检结果与特征分布 结果表按天分区 + 时序数据库存储
可解释性 告警时附带特征分布对比图、漂移贡献特征列表 PSI 分箱贡献度分析 + 可视化

1.6 本课程覆盖内容

课程路线图:本课程共 30 章,从离线特征巡检的基础概念讲起,逐步深入到 PSI 计算原理、Spark/Flink 工程实现、告警规则设计、Grafana 可视化、以及大规模特征治理的最佳实践。每章均配有可运行的代码示例与架构图,帮助学员快速落地。

通过本课程的学习,你将掌握:

  • 离线特征巡检的完整工程链路设计与实现
  • PSI 指标的计算原理与分布式优化方法
  • 基于 Spark + Flink 的流批一体巡检引擎搭建
  • 告警规则引擎与多通道告警集成
  • 特征健康度可视化大盘与复盘机制