3. Feature Store 概念:离线特征与在线特征、特征注册中心、特征服务化、特征血缘追踪
在金融图谱场景中,Feature Store(特征仓库)是连接离线开发与在线推理的核心中间层。它解决了特征重复开发、训练/推理不一致、特征口径混乱等痛点。本节围绕四个核心概念展开:离线特征与在线特征的存储与计算差异、特征注册中心的元数据管理、特征服务化的低延迟交付,以及特征血缘追踪的可观测性。
3.1 离线特征与在线特征
离线特征与在线特征在计算引擎、存储介质、时效性要求上存在本质区别。下表对比了二者的关键差异:
| 对比维度 | 离线特征 | 在线特征 |
|---|---|---|
| 计算引擎 | Spark / Hive / Flink Batch | Redis / HBase / 本地缓存 |
| 存储介质 | HDFS / 对象存储(Parquet/ORC) | KV 存储(Redis Cluster / TiKV) |
| 时效性 | T+1 / 小时级 | 毫秒级(< 10ms) |
| 数据量级 | PB 级全量历史 | TB 级热数据 |
| 典型用途 | 模型训练、批量回溯、样本拼接 | 实时推理、风控拦截、实时授信 |
| 一致性要求 | 最终一致性 | 强一致性(主键精确匹配) |
实践要点:金融风控场景中,离线特征与在线特征必须保持“同源同口径”。离线特征用于训练,在线特征用于推理,若两者计算逻辑不一致,将直接导致样本偏差(Training-Serving Skew)。Feature Store 通过统一特征定义来消除这一风险。
3.2 特征注册中心
特征注册中心是 Feature Store 的元数据中枢,负责管理特征的名称、类型、来源、版本、Owner、业务标签等信息。它确保所有特征可发现、可复用、可治理。
特征注册中心的核心能力包括:
- 特征定义管理:统一特征名称、数据类型、默认值、空值处理策略。
- 版本控制:每次特征逻辑变更自动生成新版本,支持回滚。
- 权限与审批:特征发布需经过业务负责人审批,防止随意修改。
- 标签与搜索:支持按业务域(如“反欺诈”、“信用评分”)检索特征。
下图展示了特征注册中心在 Feature Store 架构中的核心位置:
3.3 特征服务化
特征服务化是指将特征以高可用、低延迟的 API 形式暴露给在线推理服务。在金融风控场景中,一次实时风控决策通常需要在 50ms 内完成特征拼接与模型打分。
特征服务化的关键设计原则:
- 预计算 + 缓存:高频特征提前计算并写入 Redis,避免实时重复计算。
- 批量获取接口:支持一次请求获取多个实体(如多个用户 ID)的多个特征,减少网络开销。
- 降级与熔断:当特征服务不可用时,自动降级到默认值或历史快照,保证主流程不中断。
- 预热机制:模型上线前,将热数据提前加载到缓存,避免冷启动延迟。
金融风控案例:某信贷产品在实时授信环节,需要同时获取用户近 30 天逾期次数、多头借贷数、设备指纹等 20+ 特征。通过 Feature Store 服务化接口,一次 gRPC 调用即可在 8ms 内返回全部特征,支撑了每秒 5000+ 笔的实时决策。
3.4 特征血缘追踪
特征血缘追踪记录了特征从原始数据源 → 特征计算逻辑 → 特征存储 → 模型消费的完整链路。它是样本偏差排查、特征质量审计、模型可解释性的基础。
特征血缘的核心要素:
| 血缘层级 | 描述 | 示例 |
|---|---|---|
| 数据源血缘 | 特征依赖的原始表、字段、ETL 任务 | ods_loan_repay → repay_count_30d |
| 计算血缘 | 特征生成所使用的 SQL 或 PySpark 脚本 | SELECT user_id, COUNT(*) FROM repay WHERE dt >= date_sub(‘2025-01-01’, 30) |
| 存储血缘 | 特征写入的离线表或在线 KV 键 | feature_store.repay_count_30d (Parquet) / redis:user:repay_count_30d |
| 消费血缘 | 哪些模型、哪些在线服务使用了该特征 | credit_score_v3 / realtime_risk_api |
下图展示了特征血缘追踪的完整链路:
3.5 样本偏差校验中的 Feature Store 价值
在金融图谱 Feature Store 实践中,样本偏差校验依赖上述四个概念的协同:
- 离线与在线特征一致性校验:通过注册中心对比离线特征与在线特征的定义、计算逻辑、空值率分布,发现偏差。
- 特征服务化监控:实时记录在线特征返回的统计分布,与离线特征分布进行 KS 检验 / PSI 计算。
- 血缘追踪辅助定位:当偏差发生时,沿血缘链路回溯,定位是数据源、ETL 还是存储环节引入的偏差。
常见陷阱:部分团队只关注离线特征的质量,忽略在线特征服务化过程中的精度损失(如浮点数截断、默认值不一致)。Feature Store 的注册中心必须强制要求离线与在线特征使用相同的序列化协议和精度定义。