序 二

项亮的书写完了。开始写作这本书时,我的身份是作者,但交稿时,我变成了审稿人。这让我想起了多年前流传的一个“四大傻”的段子:炒房炒成房东,炒股炒成股东,……写书写成审稿人,我看也可以并肩成为一景。

去年五六月份,图灵公司的杨海玲老师通过朋友问我有没有兴趣参与写一本推荐系统方面的书,我欣然答应。近几年推荐技术在互联网领域的应用越来越广泛,但对相关技术做系统介绍的书却非常少,相关的外文书倒是见过两三本。但一方面,对国内读者来说语言障碍或多或少会是个问题,另一方面,这些书大多以研究人员为目标读者,并不完全适合推荐技术的普及。能参与填补这项空白,何乐而不为?书开写后的最初一两个月,我的确贡献过不到万把字的内容,但随着各种不足为外人道的事务纷至沓来,能花在写作上的时间越来越少,每次答应项亮要去填补内容,最后都不了了之,一直到项亮自己把这本书写完。我最初贡献的内容,也因为写作目标和本书整体风格的逐步调整没法添加进来了。这种情况下,我实在不好意思呆在作者列表里了,所以有机会写了这篇序。

提到项亮,就不能不提Netflix推荐算法竞赛,虽然项亮自己不见得喜欢把自己定格在过去时。这项赛事,非常罕见地召集了数以万计的技术人员共同解决同一个技术问题,并且把解决方案公布出来。这为这个领域的工程人员和研究人员不同创意的碰撞提供了条件,因而产生了很多有价值的新方法,使很多以前只被少数专家掌握的技术细节能够被更广泛地传播开来,使专家们解读数据的方法、解构算法模型的思路能够被巨细无遗地发表出来。项亮在Netflix竞赛中有非常出色的表现,书中总结了很多他在Netflix竞赛以及相关研究和工程工作中学到或悟到的分析数据与设计算法的思路。虽然我一直在追踪推荐技术的发展,在书中仍然能看到很多本不了解的方法,相信其他读者读过本书也不会失望。

在大家一起讨论的过程中,项亮经常提到另外一本非常流行的书,即《集体智慧编程》。项亮非常希望他写的书能像《集体智慧编程》那样简明实用,帮助那些对推荐技术或数据挖掘原理完全不了解的读者快速实现自己的推荐系统。出于这个目的,本书尽可能地用代码和图表与读者交流,尽可能地用直观的讨论代替数学公式,这对于大多数工程技术人员来说应该是更为喜闻乐见的形式。另一方面,可能是因为数据资源的限制,大多数学术论文都把推荐问题看做评分预测问题,而实际应用中最常见的是TopN推荐,虽然TopN推荐问题可以归纳成评分问题,但并不是每种评分预测算法都能直接用来解决TopN推荐问题。本书大部分篇幅都在讨论TopN推荐问题,这样的安排对实际应用的实现应该帮助会更大一点。最后,本书比较系统地讨论了把推荐技术应用到真实应用场景时最常遇到的问题,希望可以帮助那些有机器学习经验的技术人员快速了解推荐技术。

最近一两年,国内大型互联网公司对个性化服务越来越重视,以个性化技术做支撑的创业公司也在不断涌现,个性化的浪潮方兴未艾,相信本书能帮助更多的技术人员投身于这一技术浪潮。能看到本书的诞生,我深感荣幸,虽然我的贡献,其实只有这篇序。

陈义

豆瓣资深算法工程师

目录