1. 实时特征生产概述

大家好,我是这次课程的主讲。做了这么多年实时计算,我最大的感触就是:实时特征这东西,看着简单,想做好真不容易。

先问个问题——你平时做推荐、做风控,是不是经常遇到这种情况?模型上线前离线跑分挺漂亮,一上线效果就崩了。我遇到过好几次,查到最后,问题都出在特征上。离线特征和实时特征对不上,模型就懵了。

所以这一章,我们先打好基础。把实时特征的定义、应用场景、和离线特征的区别,一次性讲清楚。

什么是实时特征?

说白了,实时特征就是在数据产生的瞬间,立刻计算并输出给模型使用的特征。

举个例子。你在淘宝点了一个商品,下一秒推荐系统就要根据这个点击行为,重新计算你的兴趣向量。这个兴趣向量,就是实时特征。

它的核心特点就三个:

  • 低延迟:从数据产生到特征可用,通常在秒级甚至毫秒级
  • 增量计算:不是全量重算,而是基于新到的数据做增量更新
  • 状态持续:特征值会随着时间推移不断变化

核心要点:实时特征的本质是「流式状态计算」。数据像水流一样不断涌入,我们在内存中维护状态,每来一条数据就更新一次特征值。

实时特征的应用场景

我接触过的项目里,实时特征用得最多的就两个方向:推荐系统和风控系统。这两个场景对实时性的要求完全不同,咱们分开聊。

推荐场景:用户兴趣的「实时追踪」

推荐系统里,实时特征主要用来捕捉用户短时兴趣。

你想想看,用户上午搜了「登山鞋」,下午又搜了「帐篷」。如果只用离线特征,模型可能觉得这人喜欢户外运动。但实时特征能告诉你:他正在计划一次露营,现在最需要的是睡袋和防潮垫。

常见的实时特征包括:

  • 最近N次点击的商品类目序列
  • 当前会话的停留时长
  • 最近1分钟内的搜索关键词
  • 实时统计的点击率、转化率

我记得有个项目,用户实时点击特征延迟从10秒降到1秒后,推荐点击率直接提升了8%。这就是实时特征的价值。

风控场景:风险的「秒级拦截」

风控对实时性的要求更苛刻。为什么?因为每一秒的延迟,都可能意味着真金白银的损失。

我做过一个支付风控项目。用户发起一笔转账,系统需要在100毫秒内判断这笔交易是否可疑。这时候用的特征全是实时的:

  • 当前设备在过去5分钟内的交易次数
  • 该账户最近1小时内的登录地点变化
  • 本次交易金额与历史均值的偏离度
  • 当前IP是否在黑名单中

注意:风控场景的实时特征,对准确率要求极高。误杀一个正常用户,可能比放过一笔欺诈损失更大。我见过一个案例,因为实时特征计算逻辑写错了,把正常大额交易全拦截了,用户投诉电话直接打爆。

实时特征 vs 离线特征

很多新手会问:离线特征和实时特征,不都是特征吗?有什么区别?

嗯,区别大了去了。我整理了一张对比表,你看完就明白了。

对比维度 离线特征 实时特征
计算时机 T+1 或周期性批量计算 数据到达即计算
数据范围 全量历史数据 最近窗口内的增量数据
存储介质 Hive、HDFS、数仓 Redis、内存、状态后端
延迟要求 小时级到天级 秒级到毫秒级
计算模式 全量重算 增量更新
一致性 强一致,可回溯 最终一致,可能有延迟
典型框架 Spark、Hive、MapReduce Flink、Spark Streaming、Kafka Streams

这张表里,我想特别强调两点:

第一,数据范围不同。 离线特征可以看全量数据,比如用户过去一年的购买记录。但实时特征只能看「最近一段时间」的数据,比如过去5分钟、过去1小时。为什么?因为内存有限,不可能把所有历史数据都放在状态里。

第二,一致性模型不同。 离线特征可以做到强一致,你今天跑的结果和明天跑的结果,只要数据没变,就一定一样。但实时特征不行。因为数据到达顺序、网络延迟、机器故障,都可能导致特征值出现短暂的不一致。我刚开始做实时特征时,就被这个坑过——线上特征和离线回溯特征对不上,排查了整整两天。

我的建议:做实时特征时,一定要想清楚你的业务能不能接受「最终一致」。推荐场景通常可以,用户多点一下少点一下差别不大。但风控场景就要小心了,一致性偏差可能导致误判。

实时特征生产的核心流程

说了这么多,实时特征到底是怎么生产出来的?我画了一张流程图,帮你理清整体脉络。

实时特征生产核心流程 数据源 Kafka / 日志 / 消息队列 实时计算引擎 Flink / Spark Streaming 特征计算 窗口聚合 / 状态管理 / UDF 特征存储 Redis / HBase / 内存状态 模型服务 在线推理 / 实时预估 反馈闭环 💡 关键点 实时特征生产不是单向流水线,而是一个闭环。模型服务的反馈数据(如点击、转化)会回流到数据源, 用于更新下一轮的特征计算。这个闭环做得越好,特征时效性就越强。

这张图展示了实时特征生产的完整链路。从数据源接入,到实时计算引擎处理,再到特征计算和存储,最后服务于模型推理。注意那个反馈闭环——这是很多团队容易忽略的。

我见过一个做得好的团队,他们把模型预测结果(比如是否点击)实时回流到特征计算中,用来更新用户的「历史点击率」特征。这样特征就能持续自我进化,越用越准。

小结

这一章我们聊了实时特征的核心概念。总结下来就三句话:

  • 实时特征是数据即到即算的特征,核心是低延迟和增量计算
  • 推荐和风控是两大主战场,但对实时性的要求不同
  • 和离线特征比,实时特征在数据范围、一致性、计算模式上都有本质区别

嗯,基础打好了。接下来我们会深入每个环节,看看具体怎么做。你准备好了吗?