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

server/2025/2/12 1:46:29/

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

  • 一、推荐系统的意义
    • 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/server/166909.html

相关文章

从MyBatis-Plus看Spring Boot自动配置原理

一、问题引入&#xff1a;神秘的配置生效之谜 当我们使用MyBatis-Plus时&#xff0c;只需在pom.xml中添加依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3…

RabbitMQ技术深度解析:打造高效消息传递系统

引言 在当前的分布式系统架构中&#xff0c;消息队列作为一种高效的消息传递机制&#xff0c;扮演着越来越重要的角色。RabbitMQ&#xff0c;作为广泛使用的开源消息代理&#xff0c;以其高可用性、扩展性和灵活性赢得了众多开发者的青睐。本文将深入探讨RabbitMQ的核心概念、…

Spring 中的 事务 隔离级别以及传播行为

1. 事务隔离级别&#xff08;Isolation Level&#xff09; 事务隔离级别定义了事务在并发环境下的行为&#xff0c;主要解决以下问题&#xff1a; 脏读&#xff08;Dirty Read&#xff09;&#xff1a;一个事务读取了另一个未提交事务的数据。 不可重复读&#xff08;Non-Re…

【GitHub】相关工具下载及使用

目录 背景GitHub的使用Git工具下载及安装 背景 需要在GitHub查阅相关资料&#xff0c;以下是对使用GitHub做相关记录。 GitHub的使用 参考链接: GitHub入门指南&#xff1a;一步一步教你使用GitHub Git工具下载及安装 参考链接: windows安装git&#xff08;全网最详细&…

初窥强大,AI识别技术实现图像转文字(OCR技术)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据、人工智能领域创作者。目前从事python全栈、爬虫和人工智能等相关工作&#xff0c;主要擅长领域有&#xff1a;python…

体验 DeepSeek-R1:解密 1.5B、7B、8B 版本的强大性能与应用

文章目录 &#x1f34b;引言&#x1f34b;DeepSeek 模型简介&#x1f34b;版本更新&#xff1a;1.5B、7B、8B 的区别与特点&#x1f34b;模型评估&#x1f34b;体验 DeepSeek 的过程&#x1f34b;总结 &#x1f34b;引言 随着大规模语言模型的持续发展&#xff0c;许多模型在性…

vue-vite axios bug

axios-bug http proxy error Error: write ECONNABORTED 代码写法 一般baseURL不是单写前缀就可以了吗&#xff0c;为何要写死就不会出现以上错误&#xff0c;求解。

JUnit 5 配置文件详解

JUnit 5 配置文件详解 JUnit 5 通过 junit-platform.properties 文件提供全局配置&#xff0c;允许开发者定制测试引擎、执行策略、日志行为等。以下是常用配置项及其含义&#xff0c;以及详细示例说明。 一、配置文件位置 路径&#xff1a;src/test/resources/junit-platfor…