天池新闻推荐比赛3:多路召回

具体代码过多,详情见:http://datawhale.club/t/topic/198

一、多路召回介绍

采用不同的召回策略,分别召回商品集,然后再进行排序。下图是多路召回的示意图:

7b7addc5acb434a81eae9f862fdf16c421d3c880

本次比赛采取的多路召回为5路召回,分别是:

  • Youtube DNN 召回
  • 基于文章的召回
    • 文章的协同过滤
    • 基于文章embedding的召回
  • 基于用户的召回
    • 用户的协同过滤
    • 用户embedding

二、Youtube DNN召回

由两层深度网络组成,先粗排,然后再精排。基本架构如下:

img

具体的原理见王喆的博客:

  1. 重读Youtube深度学习推荐系统论文,字字珠玑,惊为神文 4
  2. YouTube深度学习推荐系统的十大工程问题

三、基于文章的召回

​ 通过协同过滤,Embedding检索的方式分别得到文章的相似度矩阵,然后再进行召回。在召回的时候,用了关联规则的方式:

  1. 考虑相似文章与历史点击文章顺序的权重(细节看代码)
  2. 考虑文章创建时间的权重,也就是考虑相似文章与历史点击文章创建时间差的权重
  3. 考虑文章内容相似度权重(使用Embedding计算相似文章相似度,但是这里需要注意,在Embedding的时候并没有计算所有商品两两之间的相似度,所以相似的文章与历史点击文章不存在相似度,需要做特殊处理)

四、基于用户的召回

​ 同样也是基于协同过滤和embedding得到的相似度,因为这里涉及到了相似用户的历史文章,这里仍然可以加上一些关联规则来给用户可能点击的文章进行加权,这里使用的关联规则主要是考虑相似用户的历史点击文章与被推荐用户历史点击商品的关系权重,而这里的关系就可以直接借鉴基于物品的协同过滤相似的做法,只不过这里是对被推荐物品关系的一个累加的过程,下面是使用的一些关系权重,及相关的代码:

​ 计算被推荐用户历史点击文章与相似用户历史点击文章的相似度,文章创建时间差,相对位置的总和,作为各自的权重

五、冷启动

分为文章冷启动和用户冷启动

1.文章冷启动

​ 对于一个新加的文章,如何推荐给用户的问题。即日志中没有的文章如何给用户推荐。可能的解决方案为:

​ 首先基于Embedding召回一部分与用户历史相似的文章。从基于Embedding召回的文章中通过一些规则过滤掉一些文章,使得留下的文章用户更可能点击。我们这里的规则,可以是,留下那些与用户历史点击文章主题相同的文章,或者字数相差不大的文章。并且留下的文章尽量是与测试集用户最后一次点击时间更接近的文章,或者是当天的文章也行

2.用户冷启动

​ 平台的新用户,该用户没有点击日志。也可能基于embedding召回。

原文地址:https://www.cnblogs.com/zwrAI/p/14064090.html