前言
为什么要写这本书
最早开始规划写这本书是在2018年6月,当时的动机主要有如下3点:
首先,我希望做一些知识梳理和价值沉淀的工作。自2009年毕业开始,我一直从事的都是与大数据、算法相关的工作,对于推荐系统也有近10年的实践经验,特别是最近9年一直在同一家公司(即我现在所在的公司“电视猫”)做推荐系统相关的工作。在从事推荐系统的工作中我遇到过很多坑,积累了一些经验,拓展了解决问题的思路,也有了一些自己的想法。因此,希望通过写一本书来对自己的知识做一次全面的梳理和沉淀。
其次,给自己一定的压力,培养自己的写作习惯。我曾经看到过一句话,大致意思是说“一个人对世界的贡献,在于他输出了什么而不是吸收了什么”,这句话对我的触动比较大,平时我非常喜欢看书,但是很少输出,我是一个不太爱整理的人,所学的知识和技能大都记录在自己的脑海里,不够体系化,所以我希望通过写一本书来培养自己良好的写作习惯,做一个有输出的人。
最后,我希望给推荐系统从业者或即将从事推荐系统开发的读者提供一定的帮助。我算是从零开始自己摸索做推荐系统的,一路下来非常辛苦,走了很多弯路,但也从互联网上获得了很多的帮助,非常感谢这些无偿输出知识的人。我是一个乐于助人的人,一般别人问我问题,我都会给别人提供一些建议。对于推荐系统,经过这么多年的训练,我自己有了比较多的思考、想法和经验,所以希望能够系统地将自己所学知识分享给需要帮助的人,而通过写书分享知识算是一种最好、最系统的方式。
2018年在规划好大纲后,我尝试写了一点点,但是没有坚持下来,每次写几十个字就卡住了,因为感觉无法很好地表达自己的思想,也没有外在的激励或者压力逼迫自己写下去,屈服于个人的惰性,所以就这样放下了。
转机发生在2019年年底。当时与我关系很好的一个同事的夫人联系我,说让我带着大家一起输出,多积淀积淀,我答应了。之后她就组织我们团队几个愿意参与写作的同事开始在公众号上写文章。我写的主题就是推荐系统,最早的一篇发布于2019年1月23日。这之后每两周我都会输出一篇1万字左右的推荐系统的相关文章,一直持续到2020年4月28日,中间没有间断过。本书的内容是基于这些发布在公众号上的文章所进行的梳理、编排、修改与优化。
读者对象
本书主要讲解与企业级推荐系统相关的理论与知识,聚焦于企业如何搭建、运营、优化推荐系统。本书的适用人群很广,具体来说,适合如下人员阅读:
·推荐系统开发及推荐算法研究的相关从业者。
·未来期望从事推荐系统相关工作的学生。
·已经工作但是想转行做推荐系统相关工作的在职人员。
·从事推荐算法研究,希望对推荐系统在工业界应用有所了解的高校科研人员。
·对推荐系统感兴趣的产品、运营人员。
·期望将推荐系统引入产品体系的公司管理层。
如何阅读本书
本书篇幅较大,一共27章,分别从不同角度来介绍企业级推荐系统构建的理论、方法和策略,围绕推荐系统在企业中的实践展开,下面分别对各章内容进行简单介绍。
第一篇为推荐系统基础认知,包括第1章。这一部分介绍推荐系统相关的基本概念与知识,帮助读者了解推荐系统的基础知识。
第二篇为推荐系统基础算法,包含6章。这些章讲解最基础、可能也是最重要的企业级推荐算法。第2章介绍了企业级推荐系统的5种推荐范式及每种范式的应用场景,以及推荐排序和召回的相关知识,本篇其他章(第3~7章)则介绍了基于内容的推荐算法、协同过滤推荐算法、基于朴素机器学习思想(朴素贝叶斯、关联规则、聚类)的推荐算法、矩阵分解推荐算法和因子分解机等知识。我们不仅会讲解算法的实现原理,更会讲解怎么将这些算法应用到具体的业务场景中,同时会对算法的优缺点、适用范围、未来发展等更多读者关心的主题进行详细介绍。
第三篇为推荐系统进阶算法,包含5章。第8章讲解了推荐系统冷启动的相关知识点,包括各种冷启动问题以及解决冷启动问题的可行策略。紧接着的3章(第9~11章)分别介绍嵌入方法、深度学习方法及混合推荐算法,这些方法是目前工业界比较主流的推荐策略和方法。这一部分的最后一章(即第12章)讲解了构建可解释性推荐系统的相关知识点,这是其他推荐系统书籍中未曾涉及的主题。
第四篇为推荐系统评估与价值,包含2章。第13章讲解推荐系统的评估,这一章首先从用户维度、标的物维度、算法维度、平台方维度等4个维度讲解每个维度有哪些评估方法,让读者知道从不同的角度可以对推荐系统进行不同的评估。然后基于推荐系统产品的视角,从离线评估、在线评估、主观评估等角度(并结合前面的4个维度)来系统讲解具体的评估方法和策略。第14章讲解推荐系统的商业价值,对于企业来说,引入推荐系统的主要目标就是提升产品的商业价值。这一章的内容包括推荐系统在用户增长、用户体验提升、商业变现、资源节省这4个方面所起的价值和作用。
第五篇为推荐系统工程实现,包含6章。这一部分系统地讲解了推荐系统工程相关的知识点。其中,第15章讲解了推荐系统数据来源、收集、预处理及特征工程的相关知识点。第16章讲解了推荐系统工程实现的核心模块、架构设计、技术选型等主题,并且以笔者团队的Doraemon架构作为案例给读者提供了一个比较接地气的参考方案。第17章讲解了AB测试的相关知识,包括AB测试的价值、在什么情况下需要AB测试、AB测试的实现方案等。第18章则从将推荐作为Web服务的角度来讲解怎么让推荐服务更高效、更稳定、更快速。第19章梳理了目前业界提供推荐系统服务的两种模式:事先计算式和实时装配式,即事先将给用户的推荐结果计算好并存下来或者在用户访问推荐服务时实时为用户计算推荐结果。这一部分的最后一章(即第20章)对实时推荐系统进行了全面的讲解,包括实时推荐系统的价值、系统架构、具体业务场景及面临的挑战等。
第六篇为推荐系统产品与运营,包含4章。这一部分主要从产品和运营的角度来讲解推荐系统。第21章从多个维度来梳理推荐系统的产品形态,并讲解了推荐产品的应用场景及设计好的推荐产品的基本原则。第22章讲解了推荐系统的UI交互和视觉展示,这属于前端UI的范畴,也是用户可以直接感知的部分,这一部分设计的好坏直接影响用户的使用体验。第23章从运营的角度来讲解推荐系统,关注数据化运营、精细化运营及用户画像。推荐系统作为一种运营手段和工具,需要与产品、运营人员配合好才能最大化地发挥商业价值。第24章是这一部分的最后一章,介绍了推荐系统的人工调控策略,即产品、运营人员怎样对推荐系统进行人工调控才可以让推荐系统更好地配合公司的整体运营活动与规划。
第七篇为推荐系统案例分析,包含3章。这一部分讲解了推荐系统实践的相关知识点。第25章重点讲解了怎样从零开始搭建一个企业级的推荐系统,笔者借用5W3H思考框架来阐述如何更好、更快、更高效地构建一个可用的推荐系统。第26、27章是实际案例,基于笔者公司的业务讲解了具体怎样实现推荐系统。
另外本书还包括两个附录。附录A梳理了推荐算法工程师成长所要做的准备,对于想从事推荐算法工作的读者,笔者给出了可行的职业发展方向和定位,以及做好推荐系统需要如何准备,需要从哪些方面提升自我,以更好地适应未来对推荐算法从业者的要求。附录B介绍了在企业中推荐算法团队的日常工作、协作对象及推荐算法团队的目标与定位。
勘误和支持
由于笔者水平有限,写作时间也比较仓促,书中难免会出现一些不准确的地方甚至是错误,恳请读者批评指正。你可以将书中描述不准确的地方或错误告诉我,以便再次印刷或再版时更正,通过微信gongyouliu_01、gongyouliu_02可与我取得联系。如果你有更多的宝贵意见,也欢迎发送邮件到我的邮箱891391257@qq.com,我很期待听到你们真诚的反馈。
致谢
首先要感谢移动互联网时代,让我们可以更便捷、更高效地获取信息。只有在移动互联网时代推荐系统才有用武之地,从而才有了推荐系统的大爆发。
感谢我的公司和领导让我有一个比较好的平台可以接触推荐系统,并在这个领域一直精进。
感谢我的(前)同事连凯、程欢、祝冰鑫、杨奇珍在我写作过程中帮助阅读初稿并提供修改建议,感谢刘娜、李娟、李新、赵旭乾帮忙编辑文章,让我写的文章可以发布在公众号里,正是这些文章构成了本书的初始材料。
感谢机械工业出版社华章公司的编辑杨老师。在过去的一年中,在她的不断指导下,我对图书出版的流程有了比较好的了解,经过她的指导和一字一句的修改,本书的质量才得以保证。
感谢傅瞳在全书成稿后对本书进行校对。感谢好友金婷在过去两年来对我的鼓励、支持和帮助,让我有更多前行的勇气和动力。
最后要感谢我的父母和家人,是他们的无私付出让我有机会接受高等教育,让我可以无后顾之忧地完成本书的写作和修订工作!
谨以此书献给我最亲爱的家人,以及所有懂我、关心我、支持我的朋友们。
刘强(gongyouliu)
2021年4月
于上海