从标题就可以看到,这本书重点在于实践,所以本书的方法都是以能否在实际系统中得到广泛的应用作为选择的依据。我们重点讲的方法都是在实际系统中得到过检验,并初步证明有效的方法。当然,为了满足广大学术圈的同学的需要,我们也会有专门的一章讨论一些现在学术界研究热点问题和方法,但这个不是这本书的重点。

推荐系统从1994年的GroupLens的文章开始,已经有了近20年的发展,其实在GroupLens之前,推荐系统的雏形就已经出现了。但推荐系统真正受到重视得益于两个公司。一个是亚马逊,该公司将个性化推荐视为他们的核心竞争力,并且将该技术深入的集成到他们所有的产品中,整个工业界,推荐系统的标杆就是亚马逊了。另一个公司是Netflix,它举办了一个一百万美元的比赛,用钱把我们这些号称搞学术的人吸引了过去,让很多研究人员把机器学习和数据挖掘的知识充分应用到这个领域,促进了学术界对这个问题的深入研究。以至于让著名的ACM专门举办了一个叫做推荐系统的国际会议。

因为推荐系统真正流行是从这几年开始的,我们几个作者接触推荐系统时间也不是特别长,远远比不上GroupLens里的那些牛人们,所以我们这本书不准备写得非常深奥,也不准备嵌入过多的我们个人的看法,而是本着转述牛人思想的出发点,整理总结推荐系统近20年来出现的著名的方法,特别是实际系统中经常使用到的方法。因此,我们这本书不是著书立说,而是整理总结,方便很多刚刚进入推荐系统的同学们作为参考。

关于整个书的架构,我个人的想法是从数据出发。因为我们知道,个性化推荐的基石在用户数据。但用户数据有很多,如何使用好每一种类型的用户数据,是推荐系统研究和设计的核心。所以,我们会从没有数据开始,逐步介绍各种用户行为数据,并介绍每一种数据如何应用到个性化推荐当中。本书讨论的数据主要包含了用户的浏览、观看、购买等行为数据,用户的评分数据,用户的标签数据,上下文数据,社会网络数据。

关于本书的写作方式。首先,我们以代码,而不是公式,作为和读者交流的媒介。这一点我们是参考了《集体智慧编程》,主要是考虑到我们的读者大部分是想从事推荐系统方面开发的软件工程师们,他们可能更容易看懂代码。在介绍每个方法前,我们会首先介绍我们准备在什么样的数据集上评测这个算法,我们如何设计离线实验,用什么指标来评测,等等。然后,在介绍每个方法时,我们会首先介绍一个大家都能想到的算法。比如,如何给用户个性化的推荐书,大家可能最经常想到的就是给用户分类,选取每个类的最热门的书。然后,我们会评测一下这个算法,看看他各方面的指标如何。接下来,我们会分析这个算法的不足,提出几种改进,并对每种改进加以评测。这样,经过很多改进,我们最终会得到一个比较好的,在实际系统中正在用的算法。

考虑到这本书讲的是实践,我们在讲算法的同时,也会对常用的系统架构进行总结,系统的架构包括了数据如何存贮,如何设计离线和在线系统,离线模型如何更新,在线系统如何实现实时推荐,在线系统的模块如何设计,各个模块之间的联系是怎样的,等等。

关于本书的目录,我们会在晚些时候给出来。最后我给出了目前这本书的几章的标题,大家可以通过这个了解这本书的大致结构。

  • 什么是推荐系统
  • 如何评测推荐系统
  • 如何解决推荐系统的冷启动
  • 如何利用用户行为数据
  • 如何利用用户标签数据和内容数据
  • 如何利用上下文信息
  • 如何利用社会网络数据
  • 如何提高推荐的多样性,新颖性
  • 实际推荐系统的架构的例子
  • 如何解决评分预测问题