推荐系统之概述
文章目录
一、简介
1. What
- 用户:推荐系统是一种帮助用户快速发现有用信息的工具;
- 公司:推荐系统是一种增加公司产品与用户接触,购买等行为概率的工具。
2. Why
- 用户:更多地利用用户的各类历史信息猜测其可能喜欢的内容;
- 公司:最大限度吸引、留存用户,增长用户粘性,提高用户转化率,从而使商业目标连续增长。
实现将用户-商品-公司之间利益最大化。
3. Who
从上面的1和2可以看出用户与公司是需要推荐系统的主要对象,那么可以在1和2的基础上展开想想什么样子的人需要推荐系统,以及什么样的公司需要推荐系统。
二、 常用评测指标
1. 用户满意度
用户满意度直接决定推荐系统的好坏,但是用户满意度这个指标无法离线计算,只能通过用户调查或者在线实验获得。
这里在线实验一般是通过用户的线上行为统计得到的,比如电商场景中,用户如果购买了推荐的商品说明一定程度上他们是满意的,因此可以通过购买率度量用户的满意度,与购买率类似的点击率,用户停留时间和转化率等指标都可以用来度量用户的满意度。
2. 预测准确度
用来度量用户的实际行为与推荐系统预测结果的准确度,该指标是最重要的离线评价指标,因为可以通过离线计算得到.下面是预测准确度最常用的两个指标.
1. 评分预测
(1)概念
预测用户对物品的评分行为称为评分预测。
(2)方法
通过对用户的历史物品评分记录进行建模,进而得到用户的兴趣模型,然后使用该模型预测用户对未见过商品的评分.评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算.对于测试集中的一个用户
u
u
u和物品
i
i
i,令
r
u
i
r_{ui}
rui是用户u对物品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=∣T∣∑u,i∈T(rui−rui^)2
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=∣T∣∑u,i∈T∣rui−rui^∣
RMSE由于存在平方项,使得使得用户真实评分与推荐系统预测评分相差较大的用户加大了惩罚,即该评测指标对系统要求更加的苛刻。
2. TopN推荐
使用场景:给出用户一个推荐列表
该方法最常用的预测准确率指标:
- 精确率(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)\bigcap T(u)|}{\sum_{u \in U}|R(u)|} Precision=∑u∈U∣R(u)∣∑u∈U∣R(u)⋂T(u)∣ - 召回率:分类正确的正样本个数占真正的正样本个数的比例(这里的
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) \bigcap T(u)|}{\sum_{u \in U}|T(u)|} Recall=∑u∈U∣T(u)∣∑u∈U∣R(u)⋂T(u)∣
有时候为了更加全面的评估TopN推荐,通常会选取不同的推荐列表长度计算多组精确率与召回率然后分别绘制出精确率曲线和召回率曲线,需要注意的是这里并不是PR曲线.
3. 覆盖率
(1)定义
覆盖率是用来描述一个推荐系统对物品长尾的发掘能力,一个简单的定义可以是:推荐系统所有推荐出来的商品集合数占总物品集合数的比例.
但是对于相同的覆盖率,不同物品的数量分布,或者说是物品的流行度分布是可以不一样的.为了更好的描述推荐系统挖掘长尾的能力,需要统计不同物品出现次数的分布.
如果所有的物品都出现在推荐列表中,并且出现的次数都差不多,那么推荐系统发掘长尾的能力就很好.所以可以通过研究物品在推荐列表中出现的次数分布来描述推荐系统挖掘长尾的能力,如果这个分布比较平缓说明推荐系统的覆盖率比较高,而如果分布比较陡说明推荐系统的覆盖率比较低.下面分别使用信息熵和基尼系数来定义覆盖率.
信息熵定义覆盖率
H
=
−
∑
i
=
1
n
p
(
i
)
l
o
g
p
(
i
)
H = -\sum_{i=1}^n p(i)logp(i)
H=−i=1∑np(i)logp(i)
其中
p
(
i
)
p(i)
p(i)是物品i的流行度除以所有物品流行度之和。
基尼系数定义覆盖率
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=n−11j=1∑n(2j−n−1)p(ij)
其中
i
j
i_j
ij是按照物品流行度p从小到大排序的物品列表中第j个物品.
4. 多样性
可以通过不同的相似性函数来度量推荐列表中商品的相似性,比如商品基于内容的相似,基于协同过滤的相似,这样就可以得到不同角度的多样性.令函数
s
(
i
.
j
)
s(i.j)
s(i.j)为物品 i和物品 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))=1−21∣R(u)∣(∣R(u)−1∣)∑i,j∈R(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=U1u∈U∑Diversity(R(u))
5. 新颖性
最简单的方法就是给用户推荐他们之前没有看过的物品,流行度越低的物品越有可能让用户觉得新颖,因此,如果推荐结果中的物品平均热门程度比较低说明推荐的结果就可能比较新颖.
6. AUC曲线
AUC,ROC曲线下与坐标轴围成的面积。
三、召回
1. 召回层在推荐系统架构中的位置及作用
召回阶段负责将海量的候选集快速缩小为几万到几千的规模;而排序层则负责对缩小后的候选集进行精准排序。
下面是召回层与排序层的特点
-
召回层: 待计算的候选集合大、计算速度快、模型简单、特征较少,尽量让用户感兴趣的物品在这个阶段能够被快速召回,即保证相关物品的召回率
-
排序层: 首要目标是得到精准的排序结果。需要处理的物品数量少,可以利用较多的特征,使用比较复杂的模型。
2. 多路召回策略
所谓的“多路召回”策略,就是指采用不同的策略、特征或简单模型,分别召回一部分候选集,然后把候选集混合在一起供后续排序模型使用,可以明显的看出,“多路召回策略”是在“计算速度”和“召回率”之间进行权衡的结果。其中,各种简单策略保证候选集的快速召回,从不同角度设计的策略保证召回率接近理想的状态,不至于损伤排序效果。
如下图是多路召回的一个示意图,在多路召回中,每个策略之间毫不相关,所以一般可以写并发多线程同时进行,这样可以更加高效。
具体使用哪些召回策略其实是与业务强相关的,针对不同的任务就会有对于该业务真实场景下需要考虑的召回规则。例如视频推荐,召回规则可以是“热门视频”、“导演召回”、“演员召回”、“最近上映“、”流行趋势“、”类型召回“等等。
多路召回问题
虽然多路召回权衡了计算速度和召回率的问题,可以使得用于排序的候选商品更加的丰富,但是实际的多路召回仍然存在一些问题。如上图所示,对于每一路召回都会从商品集合中拉回K个商品,这里的K是一个超参数,对于K的选择一般需要通过离线评估加线上的A/B测试来确定合理的K值。除此之外,对于不同的任务具体策略的选择也是人工基于经验的选择,选择的策略之间的信息是割裂的,无法总和考虑不同策略对一个物品的影响。
基于上述问题,Embedding召回是一个综合性强且计算速度也能满足需求的召回方法。
3. Embedding召回
在当前的主流推荐系统中,Embedding的身影已经无处不在,从一定意义上可以说,把Embedding做好了,整个推荐系统的一个难题就攻克了,下面会从什么是Embedding,常见的Embedding技术有哪些,以及如何用Embedding做召回进行一个简单的总结。
- What?
Embedding其实是一种思想,主要目的是将稀疏的向量(如one-hot编码)表示转换成稠密的向量,下图直观的显示了one-hot编码和Embedding表示的区别于联系,即Embedding相当于是对one-hot做了平滑,而onehot相当于是对Embedding做了max pooling。
- How?
- text embedding
- image embedding
- graph embedding
在推荐系统领域,text embedding技术是目前使用最多的embedding技术,对于文本特征可以直接使用该技术,对于非文本的id类特征,可以先将其转化成id序列再使用text embedding的技术获取id的embedding再做召回。
常见的text Embedding的技术有:
- 静态向量:word2vec, fasttext, glove
- 动态向量:ELMO, GPT, BERT
四、课后思考
- 为什么使用AUC
例如0.7的AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分支则无关紧要
【多高的AUC才算高】:
参考文章 https://zhuanlan.zhihu.com/p/24217322
- 如何使用Embedding做召回?
参考腾讯的 推荐系统 embedding 技术实践总结
- 参考资料
王喆-《深度学习推荐系统》
推荐系统召回策略之多路召回与Embedding召回:https://blog.csdn.net/luanfenlian0992/article/details/107416438
推荐系统 embedding 技术实践总结:https://zhuanlan.zhihu.com/p/143763320