Sparrow RecSys:我们要实现什么样的推荐系统?
你好,我是王喆。
上节课,我们明确了推荐系统要解决的基本问题,清楚了深度学习推荐系统的技术架构,这节课我们开始走进实战。
作为程序员,我相信你肯定听过,甚至可能还很认同 Linux 之父 Linus Torvalds 的那句话“Talk is cheap.Show me the code.”。我也一样,所以只讲解理论知识不是这门课的风格,我希望你通过这门课的学习,不仅能构建出一棵深度学习推荐系统的知识树,还能动手实现出一个看得见、摸得着、能操作、能修改的推荐系统。
所以今天,你跟着我的讲解,只需要花三十分钟的时间,就能将一套完整的深度学习推荐系统,Sparrow RecSys(随着课程的进行,我们会逐渐补充新的模块),在你自己的电脑上运行起来。这也是我们这门课最终要实现的深度学习推荐系统。
目录
废话不多说,直接运行
废话不多说,我们先把 Sparrow RecSys 安装运行起来。因为我已经把项目相关的所有代码(代码还会随着课程进行持续更新)、数据都整理到 GitHub 的开源项目中,所以你不需要额外安装任何的支持软件,也不需要额外下载任何数据。
这样,整个安装过程就跟“把大象装进冰箱“一样,只需要三步,就是打开冰箱门,把大象装进去,关上冰箱门。“翻译”成咱们的过程就是,从 GitHub 中 clone 代码,在本地以 maven project 的形式安装,运行 RecSysServer 主函数启动推荐服务器。接下来,我们详细地解释一下这三个步骤。
首先,从 GitHub 中 clone 代码。这里,我直接给出了 Sparrow Recsys 开源项目的地址:https://github.com/wzhe06/SparrowRecSys。点击之后,你需要使用git clone https://github.com/wzhe06/SparrowRecSys.git命令,或者从 Web 端下载的方式,把代码下载到本地。
然后,你可以在本地以 maven project 的形式安装,也就是导入项目到 IDE。我推荐你使用 IntelliJ IDEA 为本项目的 IDE。这样,我们直接使用 IDEA,打开本地的 Sparrow Recsys 项目根目录就能导入项目。不过有一点需要注意,如果项目没有自动识别为 maven project,你还需要右键点击 pom.xml 文件,选择将该项目设置为 maven project 才能进行后面的操作。
最后,运行 RecSysServer。等到所有库文件自动下载完毕,项目编译完毕后,我们找到项目的主函数com.wzhe.sparrowrecsys.online.RecSysServer,右键点击运行。因为推荐服务器默认运行在 6010 端口,所以我们打开浏览器,输入http://localhost:6010/,就能看到整个推荐系统的前端效果了。
如果通过上面的步骤,你的浏览器显示出了由多个电影列表组成的 Sparrow Recsys 的主页,那么恭喜你,你已经拥有了这套深度学习推荐系统。
而且我相信,你把 Sparrow Recsys 这只“大象”装到自己冰箱里的时间,不会超过 30 分钟。但第一次见面的热情过后,你会不但想知其然,还想知其所以然,那接下来我就和你说说 Sparrow Recsys 的来历,以及功能和架构。而且在接下来的课程中,我会以它为例来给你讲透深度学习推荐系统。
“麻雀虽小,五脏俱全”的 Sparrow Recsys
Sparrow RecSys,全称 Sparrow Recommender System,中文名“麻雀推荐系统”,名字取自“麻雀虽小,五脏俱全”之意。
你第一眼见到它,可能认为它像个 Demo 或者玩具。虽然它不可能真正具备一个工业级深度学习推荐系统的全部功能,但我希望它是一颗能够成长为参天大树的种子,一只未来有可能大鹏展翅的雏鸟。在投入一定的精力改造、拓展之后,它甚至有可能支撑起一个规模互联网公司的推荐系统框架。这就是我设计 Sparrow RecSys 的初衷。我也希望你能够在实现 Sparrow RecSys 的过程中,快速领略深度学习推荐系统的主要模块和主流技术,并且找到乐趣、找到成就感。
那么 Sparrow Recsys 到底实现了哪些功能呢?它又包含了哪些深度学习推荐系统的关键技术呢?下面,我会为你一一讲解。
Sparrow Recsys 的功能有哪些
Sparrow RecSys 是一个电影推荐系统,视频推荐是我最熟悉的领域,这也是我以电影推荐作为切入点的原因。像所有经典的推荐系统一样,它具备“相似推荐”“猜你喜欢”等经典的推荐功能,在页面设置上,主要由“首页”“电影详情页”和“为你推荐页”组成。
首先,是 Sparrow RecSys 的首页
Sparrow RecSys 的首页由不同类型的电影列表组成,当用户首次访问首页时,系统默认以历史用户的平均打分从高到低排序,随着当前用户不断为电影打分,系统会对首页的推荐结果进行个性化的调整,比如电影类型的排名会进行个性化调整,每个类型内部的影片也会进行个性化推荐。
其次,是电影详情页
你可以看到电影详情页除了罗列出电影的一些基本信息,最关键的部分是相似影片的推荐。相似内容推荐是几乎所有推荐系统非常重要的功能,传统的推荐系统基本依赖于基于内容(Content based)的推荐方法,而我们这门课程会更多地讲解基于深度学习 Embedding 的相似内容推荐方法。
最后,是为你推荐页
这一部分也是整个推荐系统中最重要的部分,是用户的个性化推荐页面。这个页面会根据用户的点击、评价历史进行个性化推荐。这几乎是所有推荐系统最经典和最主要的应用场景。我希望在这门课程中,你能够动手完成个性化推荐中的每个关键步骤,包括但不限于特征的处理、候选集的召回、排序层主要模型等等。