推荐系统的可能实现
推荐系统大致分为两个部分:召回(recall)和排序(sort). 其中召回是获取推荐项目的候选集合,而排序则是对这些候选集合进行排序。
对于召回的实现,可以考虑将已经推荐给用户的集合,或者是曝光次数已经很高又或者用户明显不敢兴趣的集合,在这个阶段就过滤掉。这样每次推荐出来的结果就不会出现大概率重复了。
召回的实现可以有好几种模型/实现,以新闻推荐为例:
- 文本相似度。计算出某条新闻所有相似的新闻列表。
- 协同过滤。根据用户的各种行为来计算某条新闻的相似新闻列表。要求矩阵不能太稀疏,但是效果很好。
- 标签筛选。对文本分析抽取出各种keywords出来,对这些新闻做倒排索引。之后用户的实时行为会打上各种keywords标签,之后通过这些keywords标签来做筛选。
排序的实现之前和wenjie有过一些粗略的讨论,比如说对新闻A,B 的features向量,外加user features, 通过LR模型计算出0, 1. 0表示A在B之前,1表示A在B之后,这样来确定顺序。 由于自己对这一块也不是特别熟悉,所以如果上面的实现方法不对,又或者在工程实现上并不是最优的,还希望同学多多指正。