推荐系统实践

搜索和推荐,都是为了解决信息过载的问题

搜索依赖query,但是推荐依赖用户的行为数据

推荐系统评价指标包括很多,可以通过离线计算,在线计算,用户问卷获取。

利用用户行为数据;主要是显性反馈行为(如打分,明确)和隐性反馈行为(不明确,数据量大)

实验评估指标:召回率,准确率,覆盖率

基于邻域的算法:

usercf,用户a 相似的top N  个用户喜欢的物品,推荐给 a

度量用户之间的相似性;优化方案,优化相似性度量,惩罚热门物品

适合于用户固定且不是很多的场景(因为要计算用户相似度矩阵),难以解释

itemcf,不适合物品更新很快的场景。

度量物品之间的相似性;优化方案,优化相似性度量,惩罚热门用户(或者直接忽略)

归一化相似度,提高覆盖率。可解释性好。适合物品相对固定,用户量很大的场景。

UserCF 更加社会化,ItemCF 更加个性化

隐语义模型 LFM:通过隐含特征联系用户和物品

对于某个用户,找到他的兴趣分类,然后从分类中找到他喜欢的物品。隐语义模型采取基于用户行为统计的自动聚类。

ps:隐性反馈数据集上,如何生成负样本:1,保证正负样本的均衡,2,对每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品

计算方法:

难以实时推荐,经典LFM 模型每次训练都需要扫描所有的用户行为记录,才能计算用户隐类向量和物品隐类向量。而且需要在用户行为记录上反复迭代才能获得较好的性能。训练比较耗时,一般一天训练一次,并且计算出所有用户的推荐结果。从而不能因为用户行为的变化,实时调整推荐结果来满足用户最近的行为。

新闻推荐中,冷启动问题明显,大量的新闻生命周期很短,因此需要改进。

和 基于邻域的方法比较:

理论基础:LFM 拥有比较好的理论基础,是一种机器学习方法,通过优化一个设定的指标来计算模型参数。基于邻域的方法,更多的是基于统计。

离线计算的空间复杂度:基于邻的方法,需要维护一张离线的相关表,占据很大内存(O(N * N ) 或者 O(M * M)),但是 LFM, 如果是 F 个隐类,那么需要的存储空间是 O(F * (M + N)), 可以很大的节省内存。

离线计算的时间复杂度:没有质的差别

在线实时推荐:LFM在给用户生成推荐列表时,需要计算用户对所有物品的兴趣权重,然后排序,返回权重最大的n 个物品。在物品数较多时,时间复杂度非常高,可达 O (M * N * F) 。因此,LFM 不适合物品数特别大的系统,可以先给用户计算一个比较小的候选列表,然后使用 LFM rerank。而且,lfm 生成用户推荐列表太慢,不能在线实时计算,需要离线计算用户的推荐结果。无法实时。需要修改。

推荐解释:LFM 不具有好的解释性。

基于图的模型:


推荐系统冷启动问题:

利用用户标签数据

用户给物品打标签,这个标签一方面描述了用户的兴趣,另一方面表示的物品的语义。从而将物品和用户联系起来。

上下文信息:时间,地点上下文

利用社交网络数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容