推荐算法 DAY1(推荐算法概述,推荐系统架构,召回,粗排,精排,重排,混排)

本教程主要是针对具有机器学习基础并想找推荐算法岗位的同学。教程内容由推荐系统概述、推荐算法基础、推荐系统实战和推荐系统面经四个部分组成。本教程对于入门推荐算法的同学来说,可以从推荐算法的基础到实战再到面试,形成一个闭环。每个部分的详细内容如下:

  • 推荐系统概述。 这部分内容会从推荐系统的意义及应用,到架构及相关的技术栈做一个概述性的总结,目的是为了让初学者更加了解推荐系统。
  • 推荐系统算法基础。 这部分会介绍推荐系统中对于算法工程师来说基础并且重要的相关算法,如经典的召回、排序算法。随着项目的迭代,后续还会不断的总结其他的关键算法和技术,如重排、冷启动等。
  • 推荐系统实战。 这部分内容包含推荐系统竞赛实战和新闻推荐系统的实践。其中推荐系统竞赛实战是结合阿里天池上的新闻推荐入门赛做的相关内容。新闻推荐系统实践是实现一个具有前后端交互及整个推荐链路的项目,该项目是一个新闻推荐系统的demo没有实际的商业化价值
  • 推荐系统算法面经。 这里会将推荐算法工程师面试过程中常考的一些基础知识、热门技术等面经进行整理,方便同学在有了一定推荐算法基础之后去面试,因为对于初学者来说只有在公司实习学到的东西才是最有价值的。

推荐系统的意义

 随着移动互联网的飞速发展,人们已经处于一个信息过载的时代。在这个时代中,信息的生产者很难将信息呈现在对它们感兴趣的信息消费者面前,而对于信息消费者也很难从海量的信息中找到自己感兴趣的信息。推荐系统就是一个将信息生产者和信息消费者连接起来的桥梁。平台往往会作为推荐系统的载体,实现信息生产者和消费者之间信息的匹配。上述提到的平台方、信息生产者和消费者可以分别用平台方(如:腾讯视频、淘宝、网易云音乐等)、物品(如:视频、商品、音乐等)和用户和来指代。下面分别从这三方需求出发,介绍推荐系统的存在的意义。

平台方

 平台方一般是为信息生产者提供物品展示的位置,然后通过不同的方式吸引用户来到平台上寻找他们感兴趣的物品。平台通过商家对物品的展示以及用户的浏览、观看或下单等行为,就产生了所谓的"流量"。

对平台方而言,流量的高效利用是推荐系统存在的重要原因。以典型的电商网站一般具有如图所示的树状拓扑结构,树状结构在连通性方面有着天然的劣势,阻碍这流量的高效流通。推荐系统的出现使得原本的树状结构变成网络拓扑结构,大大增强了整个网络的连通性。推荐模块不仅使用户在当前页面有了更好的选择路径,同时也给了每个商品增加入口和展示机会,进而提高了成交概率。而推荐质量的好坏,直接决定了用户选择这条路径的可能性,进而影响着流量的利用效率。

推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户粘性、提高用户转化率的问题,从而达到平台商业目标增长的目的。不同平台的目标取决于其商业的盈利目的,例如对于YouTube,其商业目标是最大化视频被点击(点击率)以及用户观看的时长(完播率),同时也会最大化内置广告的点击率;对于淘宝等电商平台,除了最大化商品的点击率外,最关键的目标则是最大化用户的转化率,即由点击到完成商品购买的指标。推荐系统能够平台带来丰厚的商业价值 。 

 信息生产者(物品)

因为在互联网大数据时代下,物品的长尾性和二八原则是非常严重的。具体来说,对于一个平台而言80%的销售额可能是那些最畅销20%的物品。但是那20%的物品其实只能满足一小部分人的需求,对于绝大多数的用户的需求需要从那80%的长尾物品中去满足。虽然长尾物品的总销售额占比不大,但是因为长尾物品的数量及其庞大,如果可以充分挖掘长尾物品,那这些长尾物品的销售额的总量有可能会超过热门商品。

物品只是信息生产者的产物,对于信息生产者而言,例如商家、视频创作者等,他们也更希望自己生产的内容可以得到更多的曝光,尤其是对于新来的商家或者视频创作者,这样可以激发他们创作的热情,进而创作出更多的商品或者视频,让更多的用户的需求得到满足。

对于一个平台而言,无论是否靠平台上的物品直接盈利,其将平台上的内容与用户进行匹配的能力都是衡量平台的重要标准之一,推荐系统的好坏很大程度上决定了平台匹配需求和供给的能力。推荐系统匹配需求和供给的能力决定了其最终的商业价值。

信息消费者(用户)

推荐系统对于用户而言,除了将平台上的需求和供给进行匹配外,还需要尽可能地提高用户的体验,但是对于一个平台来说,影响用户体验的因素非常多(产品设计、广告数量等)。对于一个有明确需求的用户来说,用户在平台上可以直接通过搜索来快速满足自己的需求,但这也仅仅是一个平台最基础的用户体验(平台做的好是应该的,但是做的不好可能会被喷)。对于一个没有明确需求的用户来说,用户会通过浏览平台上的推荐页来获取一些额外的惊喜需求。因为用户没有明确的需求,也就对推荐页浏览的内容没有明确的预期,但是并不说明用户没有期待。我们每天都希望自己的一天中充满惊喜,这样生活才会感觉更加的多姿多彩。推荐系统可以像为用户准备生日礼物一样,让呈现的内容给用户带来惊喜,进而增强用户对平台的依赖。此外,在给用户带来惊喜的同时,也会提高平台的转化率(例如成交额)

推荐和搜索的区别

搜索和推荐都是解决互联网大数据时代信息过载的手段,但是它们也存在着许多的不同: 

  1. 用户意图:搜索时的用户意图是非常明确的,用户通过查询的关键词主动发起搜索请求。对于推荐而言,用户的需求是不明确的,推荐系统在通过对用户历史兴趣的分析给用户推荐他们可能感兴趣的内容。
  2. 个性化程度:对于搜索而言,由于限定的了搜索词,所以展示的内容对于用户来说是有标准答案的,所以搜索的个性化程度较低。而对于推荐来说,推荐的内容本身就是没有标准答案的,每个人都有不同的兴趣,所以每个人展示的内容,个性化程度比较强。
  3. 优化目标:对于搜索系统而言,更希望可以快速地、准确地定位到标准答案,所以希望搜索结果中答案越靠前越好,通常评价指标有:归一化折损累计收益(NDCG)、精确率(Precision)和召回率(Recall)。对于推荐系统而言,因为没有标准的答案,所以优化目标可能会更宽泛。例如用户停留时长、点击、多样性,评分等。不同的优化目标又可以拆解成具体的不同的评价指标。
  4. 马太效应和长尾理论:对于搜索系统来说,用户的点击基本都集中在排列靠前的内容上,对于排列靠后的很少会被关注,这就是马太效应。而对于推荐系统来说,热门物品被用户关注更多,冷门物品不怎么被关注的现象也是存在的,所以也存在马太效应。此外,在推荐系统中,冷门物品的数量远远高于热门物品的数量,所以物品的长尾性非常明显。

推荐系统的应用

个性化推荐系统通过分析用户的行为日志,得到用户当前的甚至未来可能的兴趣,给不同的用户展示不同的(个性化)的页面,来提高网站或者app的点击率、转化率、留存率等指标。推荐系统被广泛应用在广告、电商、影视、音乐、社交、饮食、阅读等领域。下面简单的通过不同的app的推荐页来感受一下推荐系统在各个内容平台的存在形式。

  • 电商首页推荐(淘宝、京东、拼多多)
  • 视频推荐(抖音、快手、B站、爱奇艺)

  • 饮食推荐(美团、饿了么、叮咚买菜)

  • 音乐电台(网易云音乐、QQ音乐、喜马拉雅)
  • 资讯、阅读(头条、知乎、豆瓣)

 

参考资料:  

  • 《推荐系统实践》
  • 《从零开始构建企业级推荐系统》
  • 《智能搜索和推荐系统》

推荐系统架构

推荐和搜索系统核心的的任务是从海量物品中找到用户感兴趣的内容。在这个背景下,推荐系统包含的模块非常多,每个模块将会有很多专业研究的工程和研究工程师,作为刚入门的应届生或者实习生很难对每个模块都有很深的理解,实际上也大可不必,我们完全可以从学习好一个模块技术后,以点带面学习整个系统,虽然正式工作中我们放入门每个人将只会负责的也是整个系统的一部分。但是掌握推荐系统最重要的还是梳理清楚整个推荐系统的架构,知道每一个部分需要完成哪些任务,是如何做的,主要的技术栈是什么,有哪些局限和可以研究的问题,能够对我们学习推荐系统有一个提纲挈领的作用。 

所以这篇文章将会从系统架构算法架构两个角度出发解析推荐系统通用架构。系统架构设计思想是大数据背景下如何有效利用海量和实时数据,将推荐系统按照对数据利用情况和系统响应要求出发,将整个架构分为离线层、近线层、在线层三个模块。然后分析这三个模块分别承担推荐系统什么任务,有什么制约要求。这种角度不和召回、排序这种通俗我们理解算法架构,因为更多的是考虑推荐算法在工程技术实现上的问题,系统架构是如何权衡利弊,如何利用各种技术工具帮助我们达到想要的目的的,方便我们理解为什么推荐系统要这样设计。 

而算法架构是从我们比较熟悉的召回、粗排、排序、重排等算法环节角度出发的

推荐系统中的多样性(diversification)技术旨在提升推荐结果的多样性,避免推荐结果过于单一或重复,从而改善用户体验,增强系统的整体性能。多样性技术通常被应用于推荐系统序(ranking)阶段或后处理(post-processing)阶段,以平衡推荐结果的相关性和多样性。 ### 推荐系统多样性算法 多样性算法的目标是在保持推荐结果相关性的同时,引入多样化的项目(items),以覆盖用户潜在的兴趣。常见的多样性算法包括: 1. **Maximal Marginal Relevance (MMR)** MMR 是一种经典的多样性算法,通过在推荐结果中平衡相关性和多样性来优化序。MMR 的目标函数如下: ```python def mmr_selection(candidates, relevance_scores, similarity_func, lambda_param): selected = [] remaining = candidates.copy() while remaining: mmr_scores = {} for item in remaining: relevance = lambda_param * relevance_scores[item] diversity = (1 - lambda_param) * max( [similarity_func(item, s) for s in selected], default=0 ) mmr_scores[item] = relevance - diversity best_item = max(mmr_scores, key=mmr_scores.get) selected.append(best_item) remaining.remove(best_item) return selected ``` MMR 通过参数 `lambda_param` 来控制相关性和多样性之间的权衡[^1]。 2. **Determinantal Point Processes (DPPs)** DPP 是一种基于概率模型的多样性算法,能够生成具有高多样性的推荐结果。DPP 的核心思想是利用行列式来度量集合的多样性,并通过优化行列式最大化来选择推荐项。DPP 的实现通常需要构建一个核矩阵,表示项目之间的相似性。 3. **Submodular Optimization** 子模优化是一种基于集合函数的优化方法,能够有效平衡推荐结果的相关性和多样性。子模函数的性质使得其在贪婪优化中能够保证近似最优解。 4. **Re-ranking with Diversity Constraints** 在推荐系统的后处理阶段,可以通过重新序(re-ranking)来引入多样性约束。例如,基于贪心策略或动态规划的重新序方法可以在保证推荐质量的前提下,增加推荐结果的多样性。 ### 系统架构设计 在推荐系统架构设计中,多样性模块通常位于序层或后处理层。一个典型的推荐系统架构如下: 1. **召回层(Recall Layer)**:从大规模项目库中筛选出候选集。 2. **序层(Ranking Layer)**:根据用户兴趣对候选集进行序。 3. **多样性层(Diversity Layer)**:在序结果的基础上引入多样性约束,确保推荐结果的多样化。 多样性层可以采用上述提到的算法之一,例如 MMR 或 DPP,在序结果的基础上进行后处理。该层通常需要与序层进行协同优化,以平衡推荐的相关性和多样性。 ### 实现示例 以下是一个基于 MMR 的简单实现示例,用于在推荐系统中引入多样性: ```python def mmr_diversification(relevance_scores, similarity_matrix, lambda_param=0.5, top_k=10): selected = [] remaining = list(relevance_scores.keys()) for _ in range(top_k): mmr_scores = {} for item in remaining: relevance = lambda_param * relevance_scores[item] if selected: max_similarity = max(similarity_matrix[item][s] for s in selected) diversity = (1 - lambda_param) * max_similarity else: diversity = 0 mmr_scores[item] = relevance - diversity best_item = max(mmr_scores, key=mmr_scores.get) selected.append(best_item) remaining.remove(best_item) return selected ``` 在该实现中,`relevance_scores` 表示项目的相关性得分,`similarity_matrix` 表示项目之间的相似性矩阵,`lambda_param` 控制相关性与多样性之间的权衡。 ### 相关研究论文 1. **Quantum Algorithms for Deep Convolutional Neural Networks**:虽然该论文主要关注量子算法在深度卷积神经网络中的应用,但其中提到的优化方法可以借鉴到推荐系统的多样性优化中[^1]。 2. **Submodular Optimization for Effective Recommendation Diversity**:该论文探讨了如何利用子模优化方法来提升推荐系统的多样性。 3. **A Survey on Diversity in Recommender Systems**:这是一篇关于推荐系统多样性技术的综述论文,涵盖了多种多样性算法及其应用场景。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值