1. 推荐系统简介
1.What
用户:推荐系统是一种帮助用户快速发现有用信息的工具
公司:推荐系统是一种增加公司产品与用户接触,购买等行为概率的工具
2.Why
用户:在用户需求并不十分明确的情况下进行信息的过滤,与搜索系统相比,推荐系统更多的利用用户的各类历史信息猜测其可能喜欢的内容
公司:解决产品能够最大限度地吸引用户,留存用户,增长用户黏性,提高用户转化率,从而达到公司商目标连续增长的目的.
本质上是一种实现将用户-商品-公司之间利益最大化的手段.
3. Who
从上面的1和2可以看出用户与公司是需要推荐系统的主要对象,那么可以在1和2的基础上展开想想什么样子的人需要推荐系统,以及什么样的公司需要推荐系统。
2. 常用评测指标
1.用户满意度
但是用户满意度这个指标无法离线计算,只能通过用户调查或者在线实验获得.这里在线实验一般是通过用户的线上行为统计得到的,比如电商场景中,用户如果购买了推荐的商品说明一定程度上他们是满意的,因此可以通过购买率度量用户的满意度,与购买率类似的点击率,用户停留时间和转化率等指标都可以用来度量用户的满意度.
2.预测准确度
1.评分预测
预测用户对物品的评分行为成为评分预测,评分预测模型通过对用户的历史物品评分记录进行建模,进而得到用户的兴趣模型,然后使用该模型预测用户未未见过商品的评分.评分预测的预测准确度一般通过均方根误差(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=∣T∣∑u,i∈T(rui−r^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=∣T∣∑u,i∈T∣rui−r^ui∣ RMSE由于存在平方项,使得使得用户真实评分与推荐系统预测评分相差较大的用户加大了惩罚,即该评测指标对系统要求更加的苛刻
2. 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=∑u∈U∣R(u)∣∑u∈U∣R(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=∑u∈U∣T(u)∣∑u∈U∣R(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=1∑np(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=n−11j=1∑n(2j−n−1)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))=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.AUC曲线
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)曲线:
3. 召回
3.1 召回层在推荐系统架构中的位置及作用
在推荐系统架构中召回层与排序层是推荐系统的核心算法层,而将推荐过程分成召回层与排序层主要是基于工程上的考虑,其中召回阶段负责将海量的候选集快速缩小为几万到几千的规模;而排序层则负责对缩小后的候选集进行精准排序。所以在召回阶段往往会利用少量的特征和简单的模型对大规模的数据集进行快速的筛选,而在排序层一般会使用更多的特征和更加复杂的模型进行精准的排序。
下面是召回层与排序层的特点
召回层: 待计算的候选集合大、计算速度快、模型简单、特征较少,尽量让用户感兴趣的物品在这个阶段能够被快速召回,即保证相关物品的召回率
排序层: 首要目标是得到精准的排序结果。需要处理的物品数量少,可以利用较多的特征,使用比较复杂的模型。
3.2 embedding是什么?
Embedding其实是一种思想,主要目的是将稀疏的向量(如one-hot编码)表示转换成稠密的向量,下图直观的显示了one-hot编码和Embedding表示的区别于联系,即Embedding相当于是对one-hot做了平滑,而onehot相当于是对Embedding做了max pooling。
目前主流的Embedding技术主要可以分为三大类。
text embedding
image embedding
graph embedding
在推荐系统领域,text embedding技术是目前使用最多的embedding技术,对于文本特征可以直接使用该技术,对于非文本的id类特征,可以先将其转化成id序列再使用text embedding的技术获取id的embedding再做召回。
常见的text Embedding的技术有:
静态向量:word2vec, fasttext, glove
动态向量:ELMO, GPT, BERT