Part1 推荐系统基础

本文详细介绍了推荐系统的基础知识,包括它的作用、构建流程和核心算法。推荐系统通过召回和排序策略,结合多路召回与Embedding技术,实现高效连接用户与内容。衡量标准涵盖用户满意度、预测准确度、覆盖率、多样性和新颖性。此外,讨论了召回与排序的划分原因及其在实际应用中的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐系统系列文章目录

Part1 推荐系统基础



前言 推荐算法的理解

如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。如果把推荐系统简单拆开来看,推荐系统主要是由数据、算法、架构三个方面组成。
传统推荐系统及深度学习推荐系统的演化关系图(图来自《深度学习推荐系统》)
在这里插入图片描述
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、推荐系统简介

如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。如果把推荐系统简单拆开来看,推荐系统主要是由数据、算法、架构三个方面组成。

1.推荐系统是什么?

  • 用户:推荐系统是一种帮助用户快速发现有用信息的工具
  • 公司:推荐系统是一种增加公司产品与用户接触,购买等行为概率的工具

2.为什么要有推荐系统?

  • 用户:在用户需求并不十分明确的情况下进行信息的过滤,与搜索系统相比,推荐系统更多的利用用户的各类历史信息猜测其可能喜欢的内容
  • 公司:解决产品能够最大限度地吸引用户,留存用户,增长用户黏性,提高用户转化率,从而达到公司商目标连续增长的目的.

3.服务对象

从上面的1和2可以看出用户与公司是需要推荐系统的主要对象,那么可以在1和2的基础上展开想想什么样子的人需要推荐系统,以及什么样的公司需要推荐系统。

二、推荐算法构建

1.构建流程

推荐算法其实本质上是一种信息处理逻辑,当获取了用户与内容的信息之后,按照一定的逻辑处理信息后,产生推荐结果。热度排行榜就是最简单的一种推荐方法,它依赖的逻辑就是当一个内容被大多数用户喜欢,那大概率其他用户也会喜欢。但是基于粗放的推荐往往会不够精确,想要挖掘用户个性化的,小众化的兴趣,需要制定复杂的规则运算逻辑,并由机器完成。推荐算法主要分为以下几步:

  • 召回:当用户以及内容量比较大的时候,往往先通过召回策略,将百万量级的内容先缩小到百量级。
  • 过滤:对于内容不可重复消费的领域,例如实时性比较强的新闻等,在用户已经曝光和点击后不会再推送到用户面前。
  • 精排:对于召回并过滤后的内容进行排序,将百量级的内容并按照顺序推送。
  • 混排:为避免内容越推越窄,将精排后的推荐结果进行一定修改,例如控制某一类型的频次。
  • 强规则:根据业务规则进行修改,例如在活动时将某些文章置顶。
    在这里插入图片描述

2.召回策略

引自:datawhalechina/fun-rec

2.1 召回层在推荐系统架构中的位置及作用

在推荐系统架构中召回层与排序层是推荐系统的核心算法层,而将推荐过程分成召回层与排序层主要是基于工程上的考虑,其中召回阶段负责将海量的候选集快速缩小为几万到几千的规模;而排序层则负责对缩小后的候选集进行精准排序。所以在召回阶段往往会利用少量的特征和简单的模型对大规模的数据集进行快速的筛选,而在排序层一般会使用更多的特征和更加复杂的模型进行精准的排序。

在设计召回层时,“计算速度”和“召回率”其实是矛盾的两个指标,为提高“计算速度”,需要使召回策略尽量简单一些;而为了提高“召回率”,要求召回策略尽量选出排序模型所需要的候选集,这也就要求召回策略不能过于简单。在权衡计算速度和召回率后,目前工业界主流的召回方法是采用多个简单策略叠加的“多路召回策略”

2.2 什么是多路召回?

所谓的“多路召回”策略,就是指采用不同的策略、特征或简单模型,分别召回一部分候选集,然后把候选集混合在一起供后续排序模型使用,可以明显的看出,“多路召回策略”是在“计算速度”和“召回率”之间进行权衡的结果。其中,各种简单策略保证候选集的快速召回,从不同角度设计的策略保证召回率接近理想的状态,不至于损伤排序效果。

如下图是多路召回的一个示意图,在多路召回中,每个策略之间毫不相关,所以一般可以写并发多线程同时进行,这样可以更加高效。
在这里插入图片描述
上图只是一个多路召回的例子,也就是说可以使用多种不同的策略来获取用户排序的候选商品集合,而具体使用哪些召回策略其实是与业务强相关的,针对不同的任务就会有对于该业务真实场景下需要考虑的召回规则。例如视频推荐,召回规则可以是“热门视频”、“导演召回”、“演员召回”、“最近上映“、”流行趋势“、”类型召回“等等。
多路召回存在的问题

虽然多路召回权衡了计算速度和召回率的问题,可以使得用于排序的候选商品更加的丰富,但是实际的多路召回仍然存在一些问题。如上图所示,对于每一路召回都会从商品集合中拉回K个商品,这里的K是一个超参数,对于K的选择一般需要通过离线评估加线上的A/B测试来确定合理的K值。除此之外,对于不同的任务具体策略的选择也是人工基于经验的选择,选择的策略之间的信息是割裂的,无法总和考虑不同策略对一个物品的影响。

基于上述问题,Embedding召回是一个综合性强且计算速度也能满足需求的召回方法。

2.3 Embedding召回

在当前的主流推荐系统中,Embedding的身影已经无处不在,从一定意义上可以说,把Embedding做好了,整个推荐系统的一个难题就攻克了,下面会从什么是Embedding,常见的Embedding技术有哪些,以及如何用Embedding做召回进行一个简单的总结。
Embedding是什么?
Embedding其实是一种思想,主要目的是将稀疏的向量(如one-hot编码)表示转换成稠密的向量,下图直观的显示了one-hot编码和Embedding表示的区别于联系,即Embedding相当于是对one-hot做了平滑,而onehot相当于是对Embedding做了max pooling。
在这里插入图片描述
常见的Embedding技术有哪些?

目前主流的Embedding技术主要可以分为三大类。

  • text embedding
  • image embedding
  • graph embedding

对于image embedding其实主要是对于有图或者视频的特征,目前计算机视觉模型已经发展的比较成熟了,对于图像与视频的识别都有效果比较好的模型,大部分都是卷积模块通过各种连接技巧搭建的高效模型,可以使用现有的预训练模型提取图像或者视频的向量特征,然后用于召回。

对于社交网络相关的推荐,进行推荐的用户与用于之间或者商品之间天然的存在某种复杂的图结构的关系,如何利用图中节点与节点之间的关系对其进行向量化是非常关键的,在这种场景下基于序列的text embedding和基于卷积模型的image embedding都显得力不从心,在这样的背景下Graph Embedding逐渐在推荐系统中流行起来。经典的Graph Embedding模型有, Deep Walk, Node2Vec,LINE以及比较新的阿里巴巴2018年公布的EGES graph Embedding模型。

3.精排策略

引自:推荐系统技术演进趋势:从召回到排序再到重排

精排模型的不同类别:
在这里插入图片描述
排序环节是推荐系统最关键,也是最具有技术含量的部分,目前大多数推荐技术其实都聚焦在这块,以下是推荐排序模型的技术发展趋势。
在这里插入图片描述

三、算法衡量标准

1.用户满意度

用户是推荐系统中非常重要的参与者,他们的满意度也直接决定了推荐系统的好坏.但是用户满意度这个指标无法离线计算,只能通过用户调查或者在线实验获得.这里在线实验一般是通过用户的线上行为统计得到的,比如电商场景中,用户如果购买了推荐的商品说明一定程度上他们是满意的,因此可以通过购买率度量用户的满意度,与购买率类似的点击率,用户停留时间和转化率等指标都可以用来度量用户的满意度.

2.预测准确度

预测准确度是用来度量用户的实际行为与推荐系统预测结果的准确度,该指标是最重要的离线评价指标,因为可以通过离线计算得到.下面是预测准确度最常用的两个指标.

  • 评分预测
    预测用户对物品的评分行为成为评分预测,评分预测模型通过对用户的历史物品评分记录进行建模,进而得到用户的兴趣模型,然后使用该模型预测用户未未见过商品的评分.评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算.对于测试集中的一个用户 u u u和物品 i i i,令 r u i r_{ui} rui是用户 u u u对物品 i i i的实际评分,而 r u i ^ \hat{r_{ui}} rui^是推荐模型预测出的评分,那么RMSE可以定义为: R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ RMSE = \sqrt{\frac{\sum_{u,i \in T}(r_{ui} - \hat{r}{ui})^2}{|T|}} RMSE=Tu,iT(ruir^ui)2 MAE定义为: M A E = ∑ u , i ∈ T ∣ r u i − r ^ u i ∣ ∣ T ∣ MAE = \frac{\sum{u,i \in T}|r_{ui} - \hat{r}_{ui}|}{|T|} MAE=Tu,iTruir^ui RMSE由于存在平方项,使得使得用户真实评分与推荐系统预测评分相差较大的用户加大了惩罚,即该评测指标对系统要求更加的苛刻

  • TopN推荐

    推荐系统在给用户推荐物品的时候,往往会给用户一个列表的推荐物品,这种场景下的推荐成为是TopN推荐,该推荐方式最常用的预测准确率指标一般是精确率(precision)和召回率(recall),令 R ( u ) R(u) R(u)为通过推荐模型得到的推荐列表, T ( u ) T(u) T(u)为用户在实际场景中(测试集)的行为列表.
    精确率(precision): 分类正确的正样本个数占分类器判定为正样本的样本个数比例(这里 R ( u ) R(u) R(u)相当于是模型判定的正样本) P r e c i s i o n = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ R ( u ) ∣ Precision= \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|R(u)|} Precision=uUR(u)uUR(u)T(u)
    召回率(recall): 分类正确的正样本个数占真正的正样本个数的比例(这里的 T ( u ) T(u) T(u)相当于真正的正样本集合)
    R e c a l l = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ T ( u ) ∣ Recall= \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|T(u)|} Recall=uUT(u)uUR(u)T(u)
    有时候为了更加全面的评估TopN推荐,通常会选取不同的推荐列表长度计算多组精确率与召回率然后分别绘制出精确率曲线和召回率曲线,需要注意的是这里并不是PR曲线,感兴趣的可以了解一下PR曲线相关的知识.

3.覆盖率

覆盖率是用来描述一个推荐系统对物品长尾的发掘能力,一个简单的定义可以是:推荐系统所有推荐出来的商品集合数占总物品集合数的比例.但是对于相同的覆盖率,不同物品的数量分布,或者说是物品的流行度分布是可以不一样的.为了更好的描述推荐系统挖掘长尾的能力,需要统计不同物品出现次数的分布.如果所有的物品都出现在推荐列表中,并且出现的次数都差不多,那么推荐系统发掘长尾的能力就很好.所以可以通过研究物品在推荐列表中出现的次数分布来描述推荐系统挖掘长尾的能力,如果这个分布比较平缓说明推荐系统的覆盖率比较高,而如果分布比较陡说明推荐系统的覆盖率比较低.下面分别使用信息熵和基尼系数定义覆盖率: 其中 p ( i ) p(i) p(i)是物品 i i i的流行度除以所有物品流行度之和 H = − ∑ i = 1 n p ( i ) l o g p ( i ) H = -\sum_{i=1}^n p(i) logp(i) H=i=1np(i)logp(i) 基尼系数定义覆盖率: 其中 i j i_j ij是按照物品流行度p从小到大排序的物品列表中第 j j j个物品 G = 1 n − 1 ∑ j = 1 n ( 2 j − n − 1 ) p ( i j ) G=\frac{1}{n-1} \sum_{j=1}^{n}(2j-n-1)p(i_{j}) G=n11j=1n(2jn1)p(ij)

4.多样性

人的兴趣爱好通常是比较广泛的,所以一个好的推荐系统得到的推荐列表中应该尽可能多的包含用户的兴趣,只有这样才能增加用户找到感兴趣物品的概率.度量推荐列表中物品的多样性换句话说就是度量推荐列表中所有物品之间的不相似性,可以通过不同的相似性函数来度量推荐列表中商品的相似性,比如商品基于内容的相似,基于协同过滤的相似,这样就可以得到不同角度的多样性.令函数 s ( i , j ) s(i,j) s(i,j)为物品 i i i和物品 j j j的相似性,那么用户推荐列表的多样性可以定义为: D i v e r s i t y ( R ( u ) ) = 1 − ∑ i , j ∈ R ( u ) s ( i , j ) 1 2 ∣ R ( u ) ∣ ( ∣ R ( u ) ∣ − 1 ) Diversity(R(u))=1-\frac{\sum_{i,j \in R(u)}s(i,j)}{\frac{1}{2}|R(u)|(|R(u)|-1)} Diversity(R(u))=121R(u)(R(u)1)i,jR(u)s(i,j) 推荐系统整体的多样性可以定义为所有用户推荐列表多样性的平均值: D i v e r s i t y = 1 U ∑ u ∈ U D i v e r s i t y ( R ( u ) ) Diversity = \frac{1}{U} \sum_{u\in U}Diversity(R(u)) Diversity=U1uUDiversity(R(u))

5.新颖性

满足推荐的新颖性最简单的方法就是给用户推荐他们之前没有看过的物品,但是每个用户没见过的物品数量是非常庞大的,所以一般会计算推荐物品的平均流行度,流行度越低的物品越有可能让用户觉得新颖,因此,如果推荐结果中的物品平均热门程度比较低说明推荐的结果就可能比较新颖.

6.AUC曲线

AUC(Area Under Curve),ROC曲线下与坐标轴围成的面积

在讲AUC前需要理解混淆矩阵,召回率,精确率,ROC曲线等概念
在这里插入图片描述
TP:真的真了(真实值是真的,预测也是真)

FN:真的假了(真实值是真的,预测为假了)

FP:假的真了(真实值是假的,预测为真了)

TN:假的假了(真实值是假的,预测也是假)

召回率与准确率(上述已经进行了说明),下面是另一种形势的定义,本质上都是一样的: R e c a l l = T P T P + F N   P r e c i s e = T P T P + F P Recall = \frac{TP}{TP+FN}\ Precise=\frac{TP}{TP+FP} Recall=TP+FNTP Precise=TP+FPTP ROC(Receiver Operating Characteristic Curve)曲线:
在这里插入图片描述
ROC曲线的横坐标为假阳性率(False Positive Rate, FPR),N是真实负样本的个数, FP是N个负样本中被分类器预测为正样本的个数。

纵坐标为真阳性率(True Positive Rate, TPR),P是真实正样本的个数,TP是P个正样本中被分类器预测为正样本的个数。

注:还有其他的评价指标具体可以参考项亮的《推荐系统实践》

四、问题与思考

1.推荐系统与常见的结构化问题的区别是什么?

2.如何评价推荐系统「推荐」的准不准?

可以从以下几个角度来评价推荐系统准不准

  • 用户满意度
  • 预测准确度
  • 覆盖率
  • 多样性
  • 新颖性
  • AUC曲线

3.推荐系统一般分为召回 & 排序,为什么这样划分?

在这里插入图片描述
实际的工业推荐系统,如果粗分的化,经常讲的有两个阶段。首先是召回,主要根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品,然后交给排序环节,排序环节可以融入较多特征,使用复杂模型,来精准地做个性化推荐。召回强调快,排序强调准。当然,这是传统角度看推荐这个事情。

五、参考

推荐系统整体架构及算法流程详解

推荐系统技术演进趋势:从召回到排序再到重排

datawhalechina/fun-rec

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值