1. 推荐基础
可以看到,我们通过不同阶段的算法将这一过程切分成了不同的阶段,这张图上我们将推荐算法分为了三个阶段
召回:待计算的候选集合大、计算速度快、模型简单、特征较少,尽量让用户感兴趣的物品在这个阶段能够被快速召回,即保证相关物品的召回率。常用的有多路召回(即多种策略进行召回),embedding向量召回
精排:首要目标是得到精准的排序结果。需要处理的物品数量少,可以利用较多的特征,使用比较复杂的模型
重排:为了避免排序阶段的结果趋于同质化,让用户有更好的体验,这里对排序的结果进行多样化考虑,提高用户的使用体验
2. 召回
召回分为三种:
1. 基于规则
通常的一些运营规则,例如召回点击次数最多的Item、召回购买次数最多的Item、召回购买金额最多的Item、召回地域最热的Item
2. 基于协同过滤
分为两种,分别为统计和MF的协同过滤
3. 向量召回
分为以下几类
I2I:计算item-item相似度,用于相似推荐、相关推荐、关联推荐
U2I:基于矩阵分解,直接给用户推荐item
U2U2I:基于用户的协同过滤,先找相似用户,再推荐相似用户喜欢的item
U2I2I:基于物品的协同过滤,先统计用户喜爱的item,再推荐他喜欢的item
U2TAG2I:基于标签偏好推荐,先统计用户偏好的tag,然后匹配所有的item;其中tag一般是item的标签、分类、关键词等。
GRU4REC
核心思想:
在GRU4REC中,用最后一个单元的输出作为整个序列的embeding,也就是说输入是item序列,最后一个单元的输出作为user的embeding。
实现代码:
def forward(self, item_seq, mask, item, train=True):
seq_emb = self.item_emb(item_seq)
seq_emb,_ = self.gru(seq_emb)
user_emb = seq_emb[:,-1,:] #取GRU输出的最后一个Hidden作为User的Embedding
网友评论