推荐系统Sparrow Recsys如何实现电影相似功能推荐

Sparrow Recsys技术架构图

在这里插入图片描述

数据和模型部分

  • 选用 Item2Vec、Deep Walk等不同的 Embedding 方法,来生成物品Embedding向量。考虑到大数据条件下,数据处理与训练的一致性,在Sparrow Recsys中,我们会采用 Spark 进行数据处理,同时选择Spark MLlib进行Embedding的训练。
  • 对于一些比较复杂的Embedding方案,比如特征种类很多,网络结构也更多样化的Embedding模型,业界也多采用Spark进行原始数据处理,生成训练样本后交由TensorFlow或PyTorch训练。
  • 为了方便线上服务使用,我们还需要在生成Embedding后,把它们存入某个高可用的数据库。Sparrow Recsys选择了最主流的内存数据库Redis作为实现方案,这一部分的具体实现。同样业界也会使用Cassandra、RocksDB等不同的存储方案来实现 Embedding 向量的高效读取。

线上服务部分

  • 物品库的建立
    这里项目中的movieLens数据集直接载入到内存的,对于业界比较复杂的推荐业务来说,候选集的选取往往是有很多条件的。例如物品过期、下架、不可用或有没有其他过滤条件。工业级推荐系统往往会通过比较复杂的SQL查询,或者API查询来获取候选集。

  • 召回层实现
    物品的 Embedding 向量已经在离线生成,所以我们可以自然而然的使用Embedding召回的方法来完成召回层的实现。同时Sparrow Recsys也实现了基于物品metadata(元信息)的多路召回方法。

  • 排序层实现

  • 根据Embedding相似度进行推荐,是深度学习推荐系统最主流的解决方案,所以在Sparrow Recsys中,也是先根据召回层过滤出候选集,再从Redis中取出相应的Embedding向量,然后计算目标物品和候选物品之间的相似度,最后进行排序就可以了。因为Word2Vec定义的是内积相似度,所以这里选用的是内积相似度。

前端展示

  • Sparrow Recsys的前端部分采用了最简单的HTML+AJAX(异步 JavaScript和XML请求)请求的方式。
  • AJAX指的是不刷新整体页面,用JavaScript异步请求服务器端,更新页面中部分元素的技术。当前流行的JavaScript前端框架 React、Vue 等等也大多是基于AJAX来进行数据交互的。
  • 输入http://localhost:6010/movie.html?movieId=1连接就可以看到玩具总动员这部电影的推荐页面了,如下图:
    在这里插入图片描述

相似似电影推荐的结果和初步分析

常见推荐结果评估方法:

  • 方法一:人肉测试(SpotCheck):
    在一种Embedding结果出现之后,第一时间做一个抽样测试,看一看基于Embedding的相似推荐结果是不是符合你自己的常识。

  • 方法二:指定Ground truth(可以理解为标准答案):
    虽然相似影片的Ground truth因人而异。但如果只是为了进行初步评估,也可以指定一些比较权威的验证集。例如,用IMDB的more like this的结果进行验证。

  • 方法三:利用商业指标进行评估:
    对于一个商业网站来说,无非是提高点击率,播放量等等。因此,完全可以跃过评估相似度这样一个过程,直接去评估它的终极商业指标。例如,通过上线一个新的相似电影模型,让相似电影这个功能模块的点击率提高,假设提高了 5%,那就是一个成功的模型改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值