推荐系统概述 | 《推荐系统教程》第一章笔记
- 一、推荐系统的意义
- 1.推荐系统的核心价值
- 1.1 平台方视角
- 1.2. 信息生产者(物品)视角
- 1.3. 信息消费者(用户)视角
- 2、推荐系统 vs 搜索系统
- 3、推荐系统的典型应用场景
- 1. 电商领域
- 2. 视频平台
- 3. 本地生活
- 4. 内容社区
- 5. 音乐/音频
- 二、推荐系统架构
- 1、系统架构:离线、近线、在线三层设计
- 1.1 离线层
- 1.2 近线层
- 1.3. 在线层
- 2、算法架构:从召回到混排的级联流程
- 2.1 召回层
- 2.2. 粗排层
- 2.3. 精排层
- 2.4. 重排层
- 2.5. 混排层
- 3、架构设计核心思想
- 3.1. 分层设计哲学
- 3.2. 关键权衡
- 3.3. 工业实践启示
- 三、推荐系统的技术栈
- 1、算法
- 1.1 推荐系统架构模块
- 1.2 画像层
- 1.3 召回/粗排
- 1.4 精排
- 1.5 重排序
- 2、工程
参考资料:DataWhale《推荐系统教程》第一章 课程链接
一、推荐系统的意义
1.推荐系统的核心价值
1.1 平台方视角
- 流量高效利用:
- 将树状拓扑结构转化为网络结构,增强商品/内容的连通性。
- 为商品增加展示入口,提升成交概率(如淘宝商品推荐)。
- 推荐质量直接影响用户路径选择,决定流量利用效率。
- 商业目标驱动:
- 不同平台的优化目标不同:
- 视频平台(YouTube):最大化点击率、完播率、广告收益。
- 电商平台(淘宝):提升商品点击率→转化率→成交额。
- 通过推荐实现用户留存、粘性增强,推动平台商业增长。
- 不同平台的优化目标不同:
1.2. 信息生产者(物品)视角
- 长尾经济挖掘:
- 80%的销售额来自20%的热门商品,但长尾商品(80%数量)满足多样化需求。
- 推荐系统帮助冷门商品曝光(如新商家商品),激发创作者积极性。
- 供需匹配能力:
- 推荐系统决定平台匹配用户需求与物品供给的效率。
- 直接影响平台的核心竞争力与商业价值。
1.3. 信息消费者(用户)视角
- 无明确需求场景:
- 推荐系统提供“惊喜感”,满足潜在兴趣(如抖音推荐未知内容)。
- 增强用户依赖感,提升转化率(如成交额增长)。
- 体验优化:
- 搜索满足明确需求(基础体验),推荐提升非预期需求的满足感。
- 避免用户因信息过载流失,降低决策成本。
2、推荐系统 vs 搜索系统
维度 | 推荐系统 | 搜索系统 |
---|---|---|
用户意图 | 需求不明确(被动接受) | 需求明确(主动查询) |
个性化程度 | 高度个性化(千人千面) | 标准化答案(搜索词限定结果) |
优化目标 | 多样性、停留时长、转化率 | 结果准确性(NDCG、Precision、Recall) |
马太效应 | 存在(热门更热),但需兼顾长尾挖掘 | 显著(点击集中于前几名结果) |
3、推荐系统的典型应用场景
1. 电商领域
- 案例:淘宝首页“猜你喜欢”、京东“为你推荐”
- 功能:基于用户历史行为推荐商品,提升转化率。
2. 视频平台
- 案例:抖音推荐页、B站“推荐”板块
- 功能:通过兴趣标签匹配视频,延长用户观看时长。
3. 本地生活
- 案例:美团“美食推荐”、饿了么“今日特惠”
- 功能:结合地理位置与偏好推荐餐饮/服务。
4. 内容社区
- 案例:知乎“推荐页”、豆瓣“书影音推荐”
- 功能:精准匹配用户兴趣内容,增强社区活跃度。
5. 音乐/音频
- 案例:网易云音乐“每日推荐”、喜马拉雅“猜你喜欢”
- 功能:根据听歌历史推荐新内容,提升用户留存。
二、推荐系统架构
1、系统架构:离线、近线、在线三层设计
1.1 离线层
- 核心任务:
- 数据存储与清洗(HDFS/Hive)
- 离线特征工程(Spark)
- 批量模型训练(TensorFlow/PyTorch)
- 技术栈:
- 大数据存储:HDFS、HBase
- 数据处理:Spark、Hive
- 模型训练:分布式机器学习框架
- 特点:
- 处理海量数据(TB/PB级)
- 高计算复杂度,无实时性要求
- 瓶颈:无法捕获用户实时兴趣
1.2 近线层
- 核心任务:
- 实时特征更新(用户CTR动态统计)
- 流式模型训练(在线学习)
- 准实时数据处理(分钟级延迟)
- 技术栈:
- 流处理框架:Flink、Storm、Kafka
- 实时特征存储:Redis、Doris
- 特点:
- 平衡离线与在线层能力
- 支持实时数据注入(如用户近期点击序列)
- 典型应用:DIN/DSIN模型实时兴趣建模
1.3. 在线层
- 核心任务:
- 实时推理(毫秒级响应)
- 特征快速拼接(用户/物品特征实时读取)
- 业务规则干预(去重、流量扶持)
- 技术栈:
- 微服务框架:gRPC、Spring Cloud
- 部署工具:Docker、K8S
- 特征数据库:Redis、Elasticsearch
- 特点:
- 低延迟(<100ms)
- 高并发(百万级QPS)
- 瓶颈:模型复杂度受限(无法部署大型模型)
2、算法架构:从召回到混排的级联流程
2.1 召回层
- 目标:从百万级候选池筛选千级物品
- 技术方案:
- 多路召回策略:
- 非个性化:热门推荐、地域召回
- 个性化:协同过滤(ItemCF)、Embedding召回(Faiss)
- 案例:抖音“推荐页”混合图文/视频召回
- 多路召回策略:
- 设计原则:
- 覆盖率优先:避免遗漏潜在优质内容
- 轻量级模型:双塔模型、向量检索
2.2. 粗排层
- 目标:从千级候选筛选百级物品
- 技术方案:
- 轻量模型排序:LR、GBDT
- 特征简化(仅用户/物品基础特征)
- 关键作用:
- 缓解精排压力
- 初步个性化过滤(如剔除用户已购商品)
2.3. 精排层
- 目标:精准预测用户偏好(CTR/CVR)
- 技术方案:
- 深度学习模型:Wide&Deep、DeepFM、DIN
- 多目标优化:点击率+转化率+停留时长
- 特征工程:
- 用户行为序列(Transformer建模)
- 上下文特征(时间、地理位置)
2.4. 重排层
- 目标:优化最终展示列表体验
- 技术方案:
- 多样性控制:类目打散、同图去重
- 业务规则干预:广告插槽、节日提权
- 上下文感知模型:List-wise排序(强化学习)
- 案例:淘宝“猜你喜欢”类目打散策略
2.5. 混排层
- 目标:多业务线结果融合
- 技术方案:
- 规则策略:固定广告位插播
- 强化学习:动态平衡内容与广告收益
- 挑战:多目标收益最大化(用户体验 vs 商业收益)
3、架构设计核心思想
3.1. 分层设计哲学
层级 | 数据时效性 | 计算复杂度 | 典型延迟 | 核心价值 |
---|---|---|---|---|
离线层 | 天级 | 极高 | 小时级 | 基础特征/模型构建 |
近线层 | 分钟级 | 中 | 秒级 | 实时兴趣捕捉 |
在线层 | 秒级 | 低 | <100ms | 即时响应与业务干预 |
3.2. 关键权衡
- 数据规模 vs 实时性:离线处理大数据,在线保证低延迟
- 模型精度 vs 推理速度:精排模型复杂但需快速响应
- 个性化 vs 多样性:通过多级架构平衡两者(召回重多样性,精排重精准)
3.3. 工业实践启示
- 冷启动处理:近线层实时特征缓解新用户/物品问题
- 系统容灾:多路召回避免单点故障(如协同过滤失效时用内容召回兜底)
- 迭代路径:从离线主导(天级更新)→ 实时化演进(分钟级模型更新)
三、推荐系统的技术栈
1、算法
1.1 推荐系统架构模块
推荐系统架构通常分为召回、粗排、精排、重排、混排等模块,以下是各模块的功能:
- 召回:从推荐池中快速选取大量候选item,要求轻量、快速且低延迟,分为非个性化召回和个性化召回(如content-based、behavior-based、feature-based等)。
- 粗排:对召回结果进行初步筛选,减轻精排压力,兼顾精准性和低延迟,模型不能过于复杂。
- 精排:对粗排结果进行打分和排序,是推荐系统中最复杂和研究最多的部分,涉及样本、特征、模型三部分。
- 重排:对精排结果进行微调,考虑运营策略、多样性、上下文等,如对特定类目商品提权、打散等,规则较多,也有基于模型的方案。
- 混排:对多个业务线的结果进行混排,如在推荐流中插入广告等,可基于规则策略和强化学习实现。
1.2 画像层
画像层是推荐系统的基础设施,主要涉及用户画像和商品画像的构建,以下是相关算法技术:
- 多模态内容理解:涉及CV和NLP任务,如目标检测、语义分割、情感分析、摘要抽取等,输出多模态的Embedding供推荐模型使用。
- 文本理解:包括文本分类(如RNN、TextCNN、FastText、Bert等)和关键词标签提取(如TF-IDF、Bert、LSTM-CRF等)。
- 内容理解:对视频/图片内容进行理解,提取分类信息、封面图OCR信息、视频标签信息等,典型算法有TSN、RetinaFace、PSENet等。
- 知识图谱:用于构建知识体系,实现推荐结果的可解释性,典型算法有KGAT、RippleNet等。
1.3 召回/粗排
召回阶段通过多路召回从海量信息中粗选候选集,以下是相关技术栈:
- 经典模型召回:基于Embedding的模型化召回,如FM、双塔DSSM、Multi-View DNN等。
- 序列模型召回:利用用户行为序列进行召回,如CBOW、Skip-Gram、GRU、Bert等。
- 用户序列拆分:对用户多兴趣进行细分,典型算法有Multi-Interest Network with Dynamic Routing for Recommendation at Tmall等。
- 知识图谱:利用知识图谱构建可解释性的召回通路,典型算法有KGAT、RippleNet等。
- 图模型:基于图神经网络的推荐,典型算法有GraphSAGE、PinSage等。
1.4 精排
精排层是推荐系统中技术含量最高的部分,以下是相关技术栈:
- 特征交叉模型:提升模型的特征组合和交叉能力,如DCN、DeepFM、xDeepFM等。
- 序列模型:对用户历史行为序列建模,典型研究有DIN、DSIN、DIEN、SIM等。
- 多模态信息融合:融合CV和NLP抽取的信息,典型工作有Image Matters、UMPR等。
- 多任务学习:同时优化多个目标,如ESSM、MMoE、DUPN等。
- 强化学习:灵活定义优化目标,考虑长短期收益,典型算法有DQN等。
- 跨域推荐:结合不同业务线的数据进行推荐,典型模型有DTCDR、MV-DNN、EMCDR等。
1.5 重排序
对精排结果进行重新排序,优化列表中商品的顺序,以下是相关技术:
- 优化目标:Point Wise、Pair Wise、List Wise,关注NDCG等指标。
- 业务规则:根据策略、运营规则参与排序,如强制去重、间隔排序、流量扶持等,算法排序逐渐占据主流,典型做法有基于RNN、Transformer、强化学习等。
2、工程
推荐系统的实现需要依托工程技术,以下是主要用到的工程技术:
- 编程语言:Python(必须掌握)、Java(scala)、C++、sql、shell。
- 机器学习框架:Tensorflow/Pytorch(至少掌握一个)、GraphLab/GraphCHI、LGB/Xgboost、SKLearn。
- 数据分析工具:Pandas(单机数据处理)、Numpy、Seaborn、Spark(工业界使用)。
- 数据存储:mysql、redis、mangodb、hive、kafka、es、hbase。
- 相似计算:annoy、faiss、kgraph。
- 流计算:Spark Streaming、Flink。
- 分布式计算:Hadoop、Spark。