3. 特征服务核心概念:特征定义、特征来源与计算模式
在实时风控网关中,特征(Feature)是描述用户、设备、交易或环境某一维度属性的量化指标。特征服务是整个风控决策引擎的“数据底座”,其核心设计围绕三个维度展开:特征定义、特征来源(实时/离线)与特征计算模式(预计算/实时计算)。
3.1 特征定义:从业务语义到技术元数据
特征定义是将业务风控需求转化为可计算、可存储、可追溯的元数据描述。一个完整的特征定义包含以下要素:
| 定义维度 | 说明 | 示例 |
|---|---|---|
| 特征名称 | 全局唯一的业务标识 | user_login_fail_count_1h |
| 特征类型 | 数值型、枚举型、布尔型、文本型 | 数值型(int) |
| 聚合粒度 | 按用户、设备、IP、银行卡等维度聚合 | 用户ID |
| 时间窗口 | 统计的时间范围(滑动窗口/固定窗口) | 过去1小时 |
| 计算逻辑 | SQL、UDF、规则引擎表达式 | COUNT(DISTINCT ip) WHERE event='login_fail' |
| 数据源 | 原始事件流、离线数仓、外部接口 | kafka://user_behavior |
| 版本号 | 特征变更的版本管理 | v1.2.0 |
最佳实践:特征定义应纳入元数据中心统一管理,支持版本回溯与灰度发布。每次特征逻辑变更,必须生成新版本号,确保回放对比时能精确匹配历史特征值。
3.2 特征来源:实时与离线的双轨架构
特征来源决定了数据的时效性与计算成本。实时风控网关需要同时接入实时流与离线批两类数据源,形成互补的特征供给体系。
3.2.1 实时特征来源
- 事件流:用户行为日志、交易流水、设备指纹事件,通过 Kafka/Pulsar 接入。
- 缓存状态:Redis 中存储的计数器、布隆过滤器、最近N次记录。
- 外部API:三方风控评分、黑名单查询、地理位置逆编码。
3.2.2 离线特征来源
- 数仓表:用户画像标签、历史逾期统计、设备关联图谱。
- 批量计算:Hive/Spark 产出的日级/小时级聚合特征。
- 模型打分:离线训练的机器学习模型输出的概率分。
关键对比:实时特征强调低延迟(毫秒级),但计算复杂度受限;离线特征支持复杂聚合与全量扫描,但存在分钟级到小时级的延迟。特征服务必须通过特征回放机制,在离线环境下模拟实时特征的计算结果,才能进行有效的策略对比验证。
3.3 特征计算模式:预计算 vs 实时计算
特征计算模式决定了特征值在何时、以何种方式被产出。两种模式在延迟、吞吐、一致性上存在本质差异,特征服务必须同时支持两种模式,并通过回放对比验证其等价性。
3.3.1 预计算模式(Pre-computation)
- 计算时机:在事件到达之前,按固定周期(小时/天)批量完成。
- 存储方式:结果写入离线表或在线 KV 存储,查询时直接读取。
- 适用场景:用户画像标签、历史统计特征、模型批量打分。
- 优势:查询延迟极低(微秒级),支持复杂计算逻辑。
- 劣势:数据新鲜度受限于调度周期,无法反映最新状态。
3.3.2 实时计算模式(Real-time Computation)
- 计算时机:事件到达时触发,在毫秒级窗口内完成计算。
- 计算引擎:Flink/Spark Streaming 或自研的轻量级状态计算引擎。
- 适用场景:滑动窗口计数、最近N次行为序列、设备指纹实时匹配。
- 优势:数据新鲜度高,能捕捉秒级行为变化。
- 劣势:计算复杂度受限,状态管理成本高,存在 exactly-once 语义挑战。
| 对比维度 | 预计算模式 | 实时计算模式 |
|---|---|---|
| 计算触发 | 定时调度(T+1 / T+小时) | 事件驱动(毫秒级) |
| 查询延迟 | 微秒级(直接读结果) | 毫秒级(含计算时间) |
| 数据新鲜度 | 低(分钟~小时级延迟) | 高(秒级可见) |
| 计算复杂度 | 支持高复杂度(多表JOIN、复杂UDF) | 受限(单流、轻量聚合) |
| 状态管理 | 无状态(读离线表) | 有状态(需维护窗口/计数器) |
| 回放难度 | 低(直接重跑离线任务) | 高(需模拟时间窗口与状态) |
常见误区:不要试图用预计算模式覆盖所有实时场景,也不要用实时计算模式处理全量历史聚合。特征服务应提供混合计算路由:对时效性要求高的特征走实时计算,对复杂统计特征走预计算,并通过回放对比确保两种模式下同一特征值的一致性。
3.4 特征回放:连接预计算与实时计算的桥梁
特征回放(Feature Replay)是实时风控网关中用于离线验证的核心机制。其基本思想是:将历史时间段内的原始事件,按照实时计算模式重新“回放”一遍,生成与当时实时计算完全一致的特征值,再与预计算产出的特征值进行对比。
回放对比的核心价值:
- 一致性验证:确保预计算与实时计算对同一历史时刻产出的特征值一致。
- 策略回溯:在离线环境下验证新策略在历史数据上的表现,无需影响线上。
- 问题定位:当线上实时特征值与预期不符时,通过回放复现问题现场。
- 版本回归:特征逻辑变更后,回放历史数据验证新版本是否引入偏差。
特征回放的技术实现依赖于三个关键能力:事件时间对齐(使用事件时间而非处理时间)、状态快照恢复(从历史状态中重建窗口)、确定性计算(相同的输入必须产生相同的输出)。
实战建议:在特征服务设计初期,就为每个特征定义回放标识(replayable flag)和回放参数(时间窗口、聚合粒度、状态TTL)。这能大幅降低后续回放对比的接入成本,避免在需要回放时才发现特征定义不完整。