2、推荐系统概述:推荐系统核心目标、经典架构(召回-排序-重排)、实时推荐的价值
2.1 推荐系统的核心目标:不只是“猜你喜欢”
很多人觉得推荐系统就是“猜你喜欢”。嗯,这话没错,但太浅了。
我做了这么多年推荐,总结下来,核心目标其实就三个:
- 提升用户满意度——让用户觉得“这东西正是我想要的”。
- 提高业务转化——点击、下单、观看时长,总得有一个指标在涨。
- 保持系统健康度——别让推荐结果越来越窄,用户看啥都一个样。
说白了,推荐系统是在帮用户做决策。你想想看,信息过载的时代,用户根本翻不完所有商品或视频。系统替他筛选出最可能感兴趣的10个,这就是价值所在。
我在项目中遇到过一种情况:某个电商平台,点击率一直很高,但下单率就是上不去。后来一查,推荐出来的全是用户已经买过的东西。你说用户会再买一次吗?不会。所以,推荐系统不能只看点击,还得看转化和多样性。
核心目标总结:
- 精准度:推荐的内容用户确实喜欢
- 覆盖率:别只推热门,长尾内容也要有机会
- 新颖性:用户没看过但会喜欢的东西
- 时效性:今天的热点今天推,别等凉了才上
2.2 经典架构:召回 → 排序 → 重排
推荐系统的经典架构,我习惯叫它“漏斗模型”。
为什么需要漏斗?因为候选集太大了。一个视频平台,可能有上千万条内容。你不可能把所有内容都拿去做精细排序,计算资源扛不住。
所以,我们分三步走:
第一步:召回
召回的目标是“快”。从千万级候选集中,快速捞出几百到几千个候选。
常用的召回策略有:
- 协同过滤:用户A和用户B行为相似,A喜欢的东西也推给B。
- 向量召回:把用户和物品都映射成向量,算相似度。
- 热点召回:最近最火的内容,先拿过来再说。
我建议,召回阶段不要只用一个策略。多路召回并行跑,最后合并去重。这样能保证多样性。
避坑指南:我曾经在召回阶段只用了协同过滤,结果新用户来了,啥数据都没有,召回结果全是空的。后来加了“热门召回”和“内容属性召回”,才把冷启动问题解决掉。
第二步:排序
排序的目标是“准”。对召回回来的几百个候选,用更复杂的模型做精细打分。
排序模型通常用:
- LR(逻辑回归):简单可解释,适合做基线。
- GBDT / XGBoost:特征工程做得好,效果很稳。
- DNN(深度神经网络):现在的主流,能自动学习特征交叉。
排序阶段,特征工程是关键。用户画像、物品属性、上下文信息(时间、地点、设备),能用的都用上。
注意:排序模型不是越复杂越好。我见过一个团队,模型参数上亿,线上延迟飙到500ms,用户早跑了。实时场景下,延迟和效果要平衡。
第三步:重排
重排的目标是“稳”。排序出来的结果,直接展示给用户?不行。
为什么?因为排序模型只考虑了“单个物品的得分”,没考虑物品之间的相互影响。
重排要做的事:
- 去重:同一个作者的内容别连续出现三次。
- 打散:同类型的内容穿插开,别让用户审美疲劳。
- 多样性控制:保证推荐列表里有不同品类的内容。
- 业务规则注入:比如广告位固定、运营强插等。
重排阶段,我习惯用一些轻量级的规则或贪心算法。不需要太重的模型,但效果立竿见影。
2.3 实时推荐的价值:为什么不能等明天?
传统的推荐系统,通常是T+1更新。今天的行为,明天才生效。
但现在的用户,耐心越来越短。你想想看,用户刚搜了“iPhone 16”,结果推荐列表里还是昨天的“华为 Mate 60”。用户会怎么想?
实时推荐的价值,说白了就是“跟上用户的节奏”。
具体来说,实时推荐能解决三个问题:
- 捕捉短期兴趣:用户点了一个视频,系统立刻知道他对这个话题感兴趣,马上调整推荐。
- 应对突发热点:某个事件突然爆了,实时系统能秒级响应,把相关内容推上去。
- 提升用户体验:用户刷了5条搞笑视频,第6条还是搞笑视频,用户会觉得“这系统懂我”。
我记得有一次做直播推荐,用户进入直播间后,系统需要实时判断他是否感兴趣。如果5秒内没有互动,就立刻换一个直播间推荐。这就是实时推荐的典型场景。
实时推荐的核心指标:
| 指标 | 说明 | 典型要求 |
|---|---|---|
| 延迟 | 从用户行为发生到推荐结果更新 | < 100ms |
| 吞吐量 | 系统每秒能处理多少用户请求 | 万级 QPS |
| 准确性 | 实时模型与离线模型的效果差距 | 差距 < 5% |
当然,实时推荐不是万能的。它也有代价:
- 计算成本高:实时计算需要更多的机器资源。
- 系统复杂度高:要处理数据延迟、容错、一致性等问题。
- 模型更新频繁:模型参数需要实时更新,容易出bug。
我的建议:不要一上来就搞全量实时。先做“准实时”,比如分钟级更新。等系统稳定了,再逐步缩短到秒级。我曾经吃过这个亏,一上来就搞秒级实时,结果线上出了数据倾斜,整个推荐列表全乱了。
2.4 小结
这一章我们聊了推荐系统的核心目标、经典的三层架构,以及实时推荐的价值。
说白了,推荐系统就是一个“在正确的时间,把正确的内容,推给正确的人”的系统。而流式计算,就是让这个“正确的时间”从“明天”变成“现在”。
下一章,我们会深入流式计算的核心技术,聊聊 Kafka、Flink 这些工具到底怎么用。到时候见。