2. 金融特征工程基础:特征分类与存储计算分离原则

金融特征工程是连接原始业务数据与机器学习模型的桥梁。在批流一体架构中,特征的管理方式直接决定了模型的迭代效率与线上推理性能。本章聚焦于特征的分类体系以及存储与计算分离的核心设计原则,为后续构建高吞吐、低延迟的特征平台奠定理论基础。

2.1 特征分类体系

金融场景下的特征可按其生成方式与时间属性分为三大类:基础特征、衍生特征与时序特征。三类特征在计算逻辑、存储策略与更新频率上存在显著差异。

特征类型 定义 典型金融示例 更新频率 计算复杂度
基础特征 直接从原始数据源提取,未经聚合或变换的字段 用户年龄、交易金额、商户ID、设备指纹 实时/准实时 低
衍生特征 通过数学运算、逻辑组合或业务规则生成的复合特征 交易金额/历史均值、多头借贷平台数、设备关联账户数 分钟级/小时级 中
时序特征 基于时间窗口内的历史行为序列计算得到的统计量 近7天交易次数、近30天最大逾期天数、滑动窗口平均额度使用率 窗口滑动触发 高
实践要点:在批流一体平台中,基础特征通常由流处理节点直接透传;衍生特征依赖离线批处理进行全量回溯,再通过流计算增量更新;时序特征则需借助窗口引擎(如 Flink 滑动窗口)保证时间语义的精确性。

2.2 特征分类与计算路径

下图展示了三类特征在批流一体架构中的典型计算路径与存储流向。基础特征经数据源接入后直接写入在线特征库;衍生特征需经过批处理任务完成特征工程后同步至离线与在线存储;时序特征则依赖流处理引擎的窗口算子实时产出。

金融特征分类与计算路径 原始数据源 基础特征 衍生特征 时序特征 批处理引擎 流处理引擎 统一特征存储(在线/离线) 说明 基础特征直通存储 衍生/时序需计算

2.3 特征存储与计算分离原则

传统特征工程中,计算逻辑与存储引擎紧耦合,导致扩展性差、资源利用率低。存储与计算分离原则要求将特征的计算过程与存储系统解耦,实现独立扩缩容与异构计算。

2.3.1 核心原则

  • 计算无状态化:特征计算节点不持有持久化状态,所有中间结果写入外部存储,便于故障恢复与水平扩展。
  • 存储统一化:在线特征库(Redis/HBase)与离线特征库(Hive/Parquet)共享同一份特征定义与元数据,避免口径不一致。
  • 计算引擎可插拔:批处理(Spark/MapReduce)与流处理(Flink)共用同一套特征计算逻辑代码,通过配置切换执行模式。
架构收益:某头部消金平台实践存储计算分离后,特征上线周期从 3 天缩短至 4 小时;计算资源利用率提升 40%;特征一致性校验通过率从 82% 提升至 99.5%。

2.3.2 存储与计算分离架构

下图展示了特征平台中存储与计算分离的典型分层架构。计算层与存储层通过统一的特征访问接口(Feature API)交互,元数据服务负责管理特征定义、版本与血缘关系。

特征存储与计算分离架构 计算层 Spark Batch Flink Stream Feature SQL UDF/UDTF 统一特征访问接口(Feature API) 存储层 在线 KV 存储 离线列式存储 消息队列 对象存储 元数据服务(特征定义/版本/血缘)

2.4 批流一体中的特征一致性保障

存储与计算分离后,批处理与流处理产出的同一特征可能因时间窗口、数据延迟等原因产生偏差。需通过以下机制保障特征一致性:

  1. 特征定义唯一性:所有特征在元数据服务中注册,包含计算逻辑、窗口参数、回溯策略,批流两端引用同一份定义。
  2. 离线回溯校准:每日凌晨由批处理任务全量回溯特征值,覆盖流处理可能遗漏的数据,并写入离线特征表。
  3. 偏差监控告警:对比在线特征与离线特征在关键分位数上的差异,超过阈值(如 5%)触发告警与自动重算。
常见陷阱:流处理中使用的滑动窗口若未对齐批处理的自然天窗口,会导致特征值在每日 00:00 附近出现跳变。解决方案是统一使用事件时间(Event Time)并设置合理的 allowed lateness。

2.5 本章小结