推荐系统概述 | 《推荐系统教程》第一章笔记

ops/2025/2/12 6:25:35/

推荐系统概述 | 《推荐系统教程》第一章笔记

  • 一、推荐系统的意义
    • 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。

http://www.ppmy.cn/ops/157709.html

相关文章

2024美团春招硬件开发笔试真题及答案解析

目录 一、选择题 1、在 Linux,有一个名为 file 的文件,内容如下所示: 2、在 Linux 中,关于虚拟内存相关的说法正确的是() 3、AT89S52单片机中,在外部中断响应的期间,中断请求标志位查询占用了()。 4、下列关于8051单片机的结构与功能,说法不正确的是()? 5、…

python-leetcode 26.环形链表II

题目&#xff1a; 给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表五环&#xff0c;则返回null 如果链表中有某个节点&#xff0c;可以通过连续跟踪next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…

VUE 解决若依出现Error: Cannot find module ‘@/views/xxx‘问题

VUE 解决若依出现Error: Cannot find module ‘/views/xxx‘问题 Error: Cannot find module ‘/views/xxx‘问题 Error: Cannot find module ‘/views/xxx‘问题 vue 版菜单点不开&#xff0c;报错&#xff1a;Error: Cannot find module ‘/views/xxx’ 。后台、vue前端启动…

数据结构与算法

目录 一、数据结构概述 1.数据结构分为:数据的逻辑结构、数据的物理结构 🧠 ⑴.逻辑结构:数据关系的抽象模型 ①. 集合结构 ②. 线性结构 ③. 树形结构 ④. 图状结构 💾 ⑵.物理结构:数据存储的实体实现 ①. 顺序存储 ②. 链式存储 ③. 散列存储 🔍2.逻辑…

redis底层数据结构——链表

文章目录 定义内部实现总结 定义 链表提供了高效的节点重排能力&#xff0c;以及顺序性的节点访间方式&#xff0c;并且可以通过增删节点来灵活地调整链表的长度。 作为一种常用数据结构&#xff0c;链表内置在很多高级的编程语言里面&#xff0c;因为Redis使用的C语言并没有…

Rust 测试组织指南:单元测试与集成测试

一、为什么要同时使用单元测试与集成测试 单元测试&#xff1a;更为精细、聚焦某一逻辑单元&#xff1b;可以调用到私有函数&#xff0c;快速定位错误根源。集成测试&#xff1a;作为“外部代码”来使用库的公开接口&#xff0c;测试多个模块间的交互&#xff0c;确保整体功能…

ffmpeg -hwaccels

1. ffmpeg -hwaccels -loglevel quiet 显示ffmpeg支持的硬件设备 2. 输出 Hardware acceleration methods: vdpau cuda vaapi qsv drm opencl 3. 说明 输出中的cuda表示ffmpeg支持Nvidia 硬件设备。编译ffmpeg增加相关硬件设备的配置&#xff0c;输出会显示相应的信…

pycharm ai插件

PyCharm中的AI插件为开发者提供了强大的智能辅助功能,这些插件能够显著提升编码效率、优化代码质量,并提供实时的编程建议和帮助。以下是一些主要的PyCharm AI插件及其功能介绍: 一、CodeMoss(ChatGPT Free) 简介:CodeMoss是一款集成在PyCharm内的顶级AI插件,全称“Cha…