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)交互,元数据服务负责管理特征定义、版本与血缘关系。
2.4 批流一体中的特征一致性保障
存储与计算分离后,批处理与流处理产出的同一特征可能因时间窗口、数据延迟等原因产生偏差。需通过以下机制保障特征一致性:
- 特征定义唯一性:所有特征在元数据服务中注册,包含计算逻辑、窗口参数、回溯策略,批流两端引用同一份定义。
- 离线回溯校准:每日凌晨由批处理任务全量回溯特征值,覆盖流处理可能遗漏的数据,并写入离线特征表。
- 偏差监控告警:对比在线特征与离线特征在关键分位数上的差异,超过阈值(如 5%)触发告警与自动重算。
常见陷阱:流处理中使用的滑动窗口若未对齐批处理的自然天窗口,会导致特征值在每日 00:00 附近出现跳变。解决方案是统一使用事件时间(Event Time)并设置合理的 allowed lateness。