科技>计算机>网络与互联网
实用推荐系统

实用推荐系统"

作者:李源,朱罡罡,温睿
ISBN:9787121420788
定价:¥119.0
字数:487千字
页数:436
出版时间:2021-10
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

要构建一个实用的“智能”推荐系统,不仅需要有好的算法,还需要了解接收推荐的用户。本书分为两部分,第一部分侧重于基础架构,主要介绍推荐系统的工作原理,展示如何创建推荐系统,以及给应用程序增加推荐系统时,应该如何收集和应用数据 ;第二部分侧重于算法,介绍推荐系统算法,以及如何使用系统收集的数据来计算向用户推荐什么内容。作者还教授了如何使用最流行的推荐算法,并剖析它们在 Amazon 和 Netflix 等网站上的实际应用。

前言

序 当我 2003 年大学毕业时,面临着这样一个威胁 :在欧洲可能不需要计算机科学家,因为所有的开发工作都会在薪资很低的国家中进行。谢天谢地,由于各种原因这并未成为现实。我敢打赌,还有一个更大的问题是,不少公司都低估了开发人员不理解其开发的软件将会在何种文化背景下运行。软件需求虽然被实现了,但功能与客户所期望的并不相同。 如今,对机器学习和数据科学感兴趣的人也面临着类似的威胁。但现在的威胁不是低薪资,而是软件即服务(Saa),你上传数据,然后系统为你工作(不再需要人处理)。我和其他人一样担心机器不理解领域和人。机器还没有智能到可以把人完全忽略掉。世界虽然发展很快,但我敢说,任何在读本书的人都可以和推荐系统一起工作到他们退休。 我是如何“进坑”的呢?一开始我在意大利做软件工程师,后来搬到英国,我想找一份比在数据库上做 CRUD 操作更需要思考的工作。幸运的是,有一位来自RedRock 咨询公司的优秀招聘人员与我取得联系。他们给我推荐了一家做推荐系统的公司,然后我就去了那里工作。就是这样,我开始沉迷于机器学习。除了从事推荐系统的开发工作,我还开始在网络上寻找相关知识,阅读了大量关于这个学科以及相关主题的图书。 今天,你随便打一根棍子就能砸中至少 10 个试图教你一些关于机器学习知识的人。每当我看到声称仅需一张纸或一个小时就可以教会你关于机器学习的所有知识的广告时,就觉得很有趣。我也可以如法炮制一份关于如何成为战斗机飞行员的高效教程 : 起飞后用操纵杆进行飞行。如果需要射击,就按按钮。然后,要在汽油用完前着陆。 像这样的战斗机飞行员教程可能会很容易帮你入门—这也是我入门的方式。但不要自欺欺人 :理解机器学习是很复杂的事情。再加上人的因素,总是会让事情变得更不稳定。 回到我的故事,我做推荐系统的开发工作,并对此感到非常开心。后来我换了工作。在新职位上,我本应继续研究推荐系统,但那个项目被推迟了。当时我很紧张,担心不能再做与推荐系统相关的工作,但就在那时,Manning 出版社给了我一个机会,邀请我写一本关于推荐系统的书。除了接下这个任务,我还能做什么?我刚签完写作本书的合同,那个之前被推迟的推荐系统的项目就又开始了。写这本书是一次很好的学习经历,我希望你能从中受益并喜欢它。 写作本书的目的是向你介绍推荐系统—不仅包括算法,还包括推荐系统的生态系统。算法并不太复杂,但如果要理解并运行它们,你需要了解接收推荐的用户。 在写作过程中,这本书中的内容不断变化,因为我一直在努力加入更多的内容。我希望阅读这本书可以为你学习推荐系统提供所有必需的知识,并随着学习的深入,为你打下一个坚实的基础。 关于本书 看到亚马逊向用户推荐它的商品,或 Netflix 为用户做精准推荐时,你羡慕吗?接下来你有机会学习如何将这些技能添加到你的项目中。阅读本书将会使你了解什么是推荐系统,以及如何在实践中应用它们。要让推荐系统发挥作用,许多事情需要协调一致。你需要了解如何从用户那里收集数据以及如何解释这些数据,你还需要一个包含不同推荐算法的工具箱,这样才可以为特定场景选择最好的算法。最重要的是,你需要了解如何评估推荐系统。所有这些以及其他更多的内容都藏在这本书中。 本书读者对象 本书主要是写给那些对实现推荐系统感兴趣的开发人员的,采取一种实用的方法,同时尝试用通俗易懂的语言来解释一切。书中会涉及数学和统计学知识,但都会提供示例图和代码。如果将本书作为推荐算法以及启动并运行这些算法所需基础设施的介绍,那么数据科学的新手也可以从中受益。而管理者会发现这本书有助于了解推荐系统是什么以及如何在实践中使用它。 为了能从书中充分获取价值,你应该能够阅读 Python 或 Java 代码,还应该理解 SQL,并且对高等数学和统计学有基本的了解。 本书是如何组织的 本书分为两部分,一部分侧重于推荐系统的基础架构,另一部分侧重于算法。 在第 1 部分中,你将学习向应用程序中增加推荐系统时,应该如何收集以及应 用数据 : ? 第 1 章介绍了推荐系统的概况,并简要介绍了相关的关键要素。这一章对推荐系统是什么以及如何工作提供了基本认知。 ? 第 2 章介绍了如何理解用户及其行为,并介绍了从用户那里收集数据的方法。 ? 第 3 章介绍了 Web 分析,并展示了如何实现仪表盘,以便跟踪推荐系统。 ? 第 4 章讨论了如何将行为数据转换为评分。 ? 第 5 章主要讨论了非个性化推荐。 ? 第 6 章主要讨论了新用户和新商品的相关问题,并给出了简单的解决方案。 在第 2 部分中,我们介绍了推荐系统算法,以及如何使用系统收集的数据来计算向用户推荐什么内容 : ? 第 7 章讨论了计算用户或诸如电影等内容之间相似度的公式。 ? 第 8 章介绍了如何使用协同过滤做个性化推荐。 ? 第 9 章介绍了离线评估推荐系统的指标,并介绍了在线评估推荐系统的方法。 ? 第 10 章介绍了基于内容的过滤,它使用不同类型的算法,如 LDA 和 TFIDF,来发现内容的相似性。 ? 第 11 章将回到第 8 章中介绍的协同过滤,但会使用降维的方法开展讨论。 ? 第 12 章介绍了一种混合不同推荐系统的方法。 ? 第 13 章介绍了排序算法以及排序学习推荐的方法。 ? 第 14 章主要包含对未来的展望、下一步要学习的主题、有助于进一步加深理解的图书,以及对算法和背景的思考。 本书的设计思路是从头到尾顺序阅读,因为很多内容都涉及前面章节中介绍的知识,但也可以只阅读选定的章节。 下载 运行名为 MovieGEEKs 的样例网站所需的代码可以从 Manning 出版社的网站 1进行下载(下载地址参见链接 1),也可以在 github.com 上找到(网址参见链接 2)。 该网站使用 Django 平台实现。我们将用到两个数据集 :一个是自动生成的,另一个是从 MovieTweetings 上下载的。所有安装说明都可以在 GitHub 站点上找到。 代码约定 本书中包含大量源代码的例子,包括在有编号的清单以及普通文本中。在这两种情况下,源代码都使用等宽字体,以将其与普通文本进行区分。有时代码也会用粗体来突出显示,表示对本章前面的代码所做的变更,例如,将一个新功能添加到现有的代码行中。 在大部分情况下,原始的源代码都重新排过版 ;我们添加了换行符并重新安排了缩进,以便与纸质书的页面宽度匹配。在极少数情况下,即便这样做代码在一行中仍然放不下,于是便在行末使用了续行符标记( )。此外,在文本中描述代码时,通常会删除源代码中的注释。而书中许多代码清单中都伴有注释,以突出重要概念

目录

第1部分 推荐系统的准备工作 第1章 什么是推荐 ..................................................................................3 1.1 现实生活中的推荐 ............................................................................3 1.1.1 推荐系统在互联网上大显身手 .......................................................5 1.1.2 长尾 ..............................................................................................5 1.1.3 Netflix 的推荐系统 ...........................................................................6 1.1.4 推荐系统的定义 .............................................................................13 1.2 推荐系统的分类 .................................................................................15 1.2.1 域 .....................................................................................................16 1.2.2 目的 .................................................................................................16 1.2.3 上下文 .............................................................................................17 1.2.4 个性化级别 .....................................................................................17 1.2.5 专家意见 .........................................................................................19 1.2.6 隐私与可信度 .................................................................................19 1.2.7 接口 .................................................................................................20 1.2.8 算法 .................................................................................................23 1.3 机器学习与Netflix Prize .............................................................................24 1.4 MovieGEEKs网站 .......................................................................................25 1.4.1 设计与规范 .....................................................................................27 1.4.2 架构 .................................................................................................27 1.5 构建一个推荐系统 .....................................................................................29 小结 ......................................................................................................................31 第2章 用户行为以及如何收集用户行为数据 ..................................................32 2.1 在浏览网站时Netflix如何收集证据 ..........................................................33 2.1.1 Netflix 收集的证据 .........................................................................35 2.2 寻找有用的用户行为 .................................................................................37 2.2.1 捕获访客印象 .................................................................................38 2.2.2 可以从浏览者身上学到什么 .........................................................38 2.2.3 购买行为 .........................................................................................43 2.2.4 消费商品 .........................................................................................44 2.2.5 访客评分 .........................................................................................45 2.2.6 以(旧的)Netflix 方式了解你的用户 .........................................48 2.3 识别用户 .....................................................................................................49 2.4 从其他途径获取访客数据 .........................................................................50 2.5 收集器 .........................................................................................................50 2.5.1 构建项目文件 .................................................................................52 2.5.2 数据模型 .........................................................................................52 2.5.3 告密者(snitch):客户端证据收集器 ..........................................53 2.5.4 将收集器集成到 MovieGEEKs 中 .................................................54 2.6 系统中的用户是谁以及如何对其进行建模 .............................................57 小结 ......................................................................................................................60 第3章 监控系统.........................................................................................61 3.1 为什么添加仪表盘是个好主意 .................................................................62 3.1.1 回答“我们做得怎么样?” ...........................................................62 3.2 执行分析 .....................................................................................................64 3.2.1 网站分析 .........................................................................................64 3.2.2 基本统计数据 .................................................................................64 3.2.3 转化 .................................................................................................65 3.2.4 分析转化路径 .................................................................................69 3.2.5 转化路径 .........................................................................................70 3.3 角色 .............................................................................................................73 3.4 MovieGEEKs仪表盘 ...................................................................................76 3.4.1 自动生成日志数据 .........................................................................76 3.4.2 分析仪表盘的规范和设计 .............................................................77 3.4.3 分析仪表盘示意图 .........................................................................77 3.4.4 架构 .................................................................................................78 小结 ......................................................................................................................81 第4章 评分及其计算方法............................................................................82 4.1 用户-商品喜好 ...........................................................................................83 4.1.1 什么是评分 .....................................................................................83 4.1.2 用户 - 商品矩阵 .............................................................................84 4.2 显式评分和隐式评分 .................................................................................86 4.2.1 如何选择可靠的推荐来源 .............................................................87 4.3 重温显式评分 .............................................................................................88 4.4 什么是隐式评分 .........................................................................................88 4.4.1 与人相关的推荐 .............................................................................90 4.4.2 关于计算评分的思考 .....................................................................90 4.5 计算隐式评分 .............................................................................................93 4.5.1 看看行为数据 .................................................................................94 4.5.2 一个有关机器学习的问题 .............................................................98 4.6 如何计算隐式评分 .....................................................................................99 4.6.1 添加时间因素 ...............................................................................102 4.7 低频商品更有价值 ...................................................................................105 小结 ....................................................................................................................107 第5章 非个性化推荐 ................................................................................ 108 5.1 什么是非个性化推荐 ...............................................................................109 5.1.1 什么是广告 ...................................................................................109 5.1.2 推荐有什么作用 ...........................................................................110 5.2 当没有数据的时候如何做推荐 ...............................................................111 5.2.1 商品的十大排行榜 .......................................................................113 5.3 榜单的实现以及推荐系统组件的准备工作 ...........................................114 5.3.1 推荐系统组件 ...............................................................................114 5.3.2 GitHub 上的 MovieGEEKs 网站代码 ..........................................116 5.3.3 推荐系统 .......................................................................................116 5.3.4 为 MovieGEEKs 网站添加一个榜单 ...........................................116 5.3.5 使内容看起来更具吸引力 ...........................................................117 5.4 种子推荐 ...................................................................................................119 5.4.1 频繁购买的商品与你正在查看的商品很相似 ...........................120 5.4.2 关联规则 .......................................................................................121 5.4.3 实现关联规则 ...............................................................................126 5.4.4 在数据库中存储关联规则 ...........................................................130 5.4.5 计算关联规则 ...............................................................................131 5.4.6 运用不同的事件来创建关联规则 ...............................................133 小结 ....................................................................................................................133 第6章 冷用户(冷商品).......................................................................... 135 6.1 什么是冷启动 ...........................................................................................135 6.1.1 冷商品 ...........................................................................................137 6.1.2 冷用户 ...........................................................................................137 6.1.3 灰羊 ...............................................................................................139 6.1.4 现实生活中的例子 .......................................................................139 6.1.5 面对冷启动你能做什么 ...............................................................140 6.2 追踪访客 ...................................................................................................141 6.2.1 执着于匿名用户 ...........................................................................141 6.3 用算法来解决冷启动问题 .......................................................................141 6.3.1 使用关联规则为冷用户创建推荐信息 .......................................142 6.3.2 使用领域知识和业务规则 ...........................................................143 6.3.3 使用分组 .......................................................................................144 6.3.4 使用类别来避免灰羊问题以及如何介绍冷商品 .......................146 6.4 那些不询问就很难被发现的人 ...............................................................147 6.4.1 当访客数据不够新时 ...................................................................148 6.5 使用关联规则快速进行推荐 ...................................................................148 6.5.1 收集数据项 ...................................................................................149 6.5.2 检索关联规则并根据置信度对其排序 .......................................150 6.5.3 显示推荐内容 ...............................................................................151 6.5.4 评估 ...............................................................................................154 小结 ....................................................................................................................154 第2部分 推荐算法 第7章 找出用户之间和商品之间的相似之处 ................................................ 157 7.1 什么是相似度 ...........................................................................................158 7.1.1 什么是相似度函数 .......................................................................159 7.2 基本的相似度函数 ...................................................................................160 7.2.1 Jaccard 距离 ..................................................................................161 7.2.2 使用 Lp-norm 测量距离 ................................................................162 7.2.3 Cosine 相似度 ...............................................................................165 7.2.4 通过 Pearson 相关系数查找相似度 .............................................167 7.2.5 运行 Pearson 相似度 .....................................................................169 7.2.6 Pearson 相关性系数与 Cosine 相似度类似 .................................171 7.3 k-means聚类 ..............................................................................................171 7.3.1 k-means 聚类算法 .........................................................................172 7.3.2 使用 Python 实现 k-means 聚类算法 ..........................................174 7.4 实现相似度 ...............................................................................................178 7.4.1 在 MovieGEEKs 网站上实现相似度 ...........................................181 7.4.2 在 MovieGEEKs 网站上实现聚类 ...............................................183 小结 ....................................................................................................................187 第8章 邻域协同过滤 ................................................................................ 188 8.1 协同过滤:一节历史课 ...........................................................................190 8.1.1 当信息被协同过滤时 ...................................................................190 8.1.2 互帮互助 .......................................................................................190 8.1.3 评分矩阵 .......................................................................................192 8.1.4 协同过滤管道 ...............................................................................193 8.1.5 应该使用用户 - 用户还是物品 - 物品的协同过滤 ...................194 8.1.6 数据要求 .......................................................................................195 8.2 推荐的计算 ...............................................................................................195 8.3 相似度的计算 ...........................................................................................196 8.4 Amazon预测物品相似度的算法 ..............................................................196 8.5 选择邻域的方法 .......................................................................................201 8.6 找到正确的邻域 .......................................................................................203 8.7 计算预测评分的方法 ...............................................................................204 8.8 使用基于物品的过滤进行预测 ...............................................................206 8.8.1 计算物品的预测评分 ...................................................................206 8.9 冷启动问题 ...............................................................................................207 8.10 机器学习术语简介 .................................................................................208 8.11 MovieGeeks网站上的协同过滤 .............................................................209 8.11.1 基于物品的过滤 ........................................................................209 8.12 关联规则推荐和协同推荐之间有什么区别 .........................................215 8.13 用于协同过滤的工具 .............................................................................215 8.14 协同过滤的优缺点 .................................................................................217 小结 ....................................................................................................................218 第9章 评估推荐系统 ................................................................................ 219 9.1 推荐系统的评估周期 ...............................................................................220 9.2 为什么评估很重要 ...................................................................................221 9.3 如何解释用户行为 ...................................................................................222 9.4 测量什么 ...................................................................................................223 9.4.1 了解我的喜好,尽量减少预测错误 ...........................................223 9.4.2 多样性 ...........................................................................................224 9.4.3 覆盖率 ...........................................................................................225 9.4.4 惊喜度 ...........................................................................................227 9.5 在实现推荐之前 .......................................................................................228 9.5.1 验证算法 .......................................................................................228 9.5.2 回归测试 .......................................................................................229 9.6 评估的类型 ...............................................................................................230 9.7 离线评估 ...................................................................................................231 9.7.1 当算法不产生任何推荐时该怎么办 ...........................................231 9.8 离线实验 ...................................................................................................232 9.8.1 准备实验数据 ...............................................................................237 9.9 在MovieGEEKs中实现这个实验 .............................................................244 9.9.1 待办任务清单 ...............................................................................244 9.10 评估测试集 .............................................................................................248 9.10.1 从基线预测器开始 ...................................................................248 9.10.2 找到正确的参数 .......................................................................251 9.11 在线评估 ..................................................................................................252 9.11.1 对照实验 ....................................................................................252 9.11.2 A/B 测试 ....................................................................................253 9.12 利用exploit/explore持续测试 .................................................................254 9.12.1 反馈循环 ...................................................................................255 小结 ....................................................................................................................256 第10章 基于内容的过滤 ........................................................................... 257 10.1 举例说明 .................................................................................................258 10.2 什么是基于内容的过滤 .........................................................................261 10.3 内容分析器 .............................................................................................262 10.3.1 从物品配置文件提取特征 .......................................................262 10.3.2 数量较少的分类数据 ...............................................................265 10.3.3 将年份转换为可比较的特征 ...................................................265 10.4 从描述中提取元数据 .............................................................................266 10.4.1 准备描述 ...................................................................................266 10.5 使用TF-IDF查找重要单词 .....................................................................270 10.6 使用LDA进行主题建模 .........................................................................272 10.6.1 有什么方法可以调整 LDA ......................................................279 10.7 查找相似内容 .........................................................................................282 10.8 如何创建用户配置文件 .........................................................................283 10.8.1 使用 LDA 创建用户配置文件 .................................................283 10.8.2 使用 TF-IDF 创建用户配置文件 .............................................283 10.9 MovieGEEKs中基于内容的推荐 ...........................................................286 10.9.1 加载数据 ...................................................................................286 10.9.2 训练模型 ...................................................................................287 10.9.3 创建物品配置文件 ...................................................................288 10.9.4 创建用户配置文件 ...................................................................289 10.9.5 展示推荐 ...................................................................................291 10.10 评估基于内容的推荐系统 ...................................................................292 10.11 基于内容过滤的优缺点 ........................................................................293 小结 ....................................................................................................................294 第11章 用矩阵分解法寻找隐藏特征 ........................................................... 295 11.1 有时减少数据量是好事 ..........................................................................296 11.2 你想要解决的问题的例子 ......................................................................298 11.3 谈一点线性代数 ......................................................................................301 11.3.1 矩阵 ............................................................................................301 11.3.2 什么是因子分解 ........................................................................303 11.4 使用SVD构造因子分解 ..........................................................................304 11.4.1 通过分组加入添加新用户 ........................................................310 11.4.2 如何使用 SVD 进行推荐 ..........................................................313 11.4.3 基线预测 ....................................................................................313 11.4.4 时间动态 ....................................................................................316 11.5 使用Funk SVD构造因子分解 ................................................................317 11.5.1 均方根误差 ................................................................................317 11.5.2 梯度下降 ....................................................................................318 11.5.3 随机梯度下降 ............................................................................321 11.5.4 最后是因子分解 ........................................................................322 11.5.5 增加偏差 ....................................................................................323 11.5.6 如何开始,何时结束 ................................................................324 11.6 用Funk SVD进行推荐 ............................................................................328 11.7 MovieGEEKs中的Funk SVD实现 ..........................................................331 11.7.1 如何处理异常值 ........................................................................335 11.7.2 保持模型的更新 ........................................................................336 11.7.3 更快的实施方法 ........................................................................337 11.8 显式数据与隐式数据 ..............................................................................337 11.9 评估 ..........................................................................................................337 11.10 用于Funk SVD的参数 ..........................................................................339 小结 ....................................................................................................................341 第12章 运用最佳算法来实现混合推荐 ........................................................ 342 12.1 混合推荐系统的困惑世界 .....................................................................343 12.2 单体 .........................................................................................................344 12.2.1 将基于内容的特征与行为数据混合,以改进协同过滤 推荐系统 ....................................................................................345 12.3 掺杂式混合推荐 .....................................................................................346 12.4 集成推荐 .................................................................................................347 12.4.1 可切换的集成推荐 ...................................................................348 12.4.2 加权式集成推荐 .......................................................................349 12.4.3 线性回归 ...................................................................................350 12.5 特征加权线性叠加(FWLS) ...............................................................351 12.5.1 元特征 :权重作为函数 ...........................................................352 12.5.2 算法 ...........................................................................................353 12.6 实现 .........................................................................................................360 小结 ....................................................................................................................370 第13章 排序和排序学习 ........................................................................... 371 13.1 Foursquare的排序学习例子....................................................................372 13.2 重新排序 .................................................................................................376 13.3 什么是排序学习 .....................................................................................377 13.3.1 三种类型的 LTR 算法 ..............................................................377 13.4 贝叶斯个性化排序 .................................................................................379 13.4.1 BPR 排序 ...................................................................................381 13.4.2 数学魔术(高级巫术) .............................................................383 13.4.3 BPR 算法 ...................................................................................386 13.4.4 具有矩阵分解的 BPR ...............................................................387 13.5 BPR的实现 ..............................................................................................388 13.5.1 执行推荐 ...................................................................................393 13.6 评估 .........................................................................................................394 13.7 用于BPR的参数 ......................................................................................397 小结 ....................................................................................................................398 第14章 推荐系统的未来 ........................................................................... 399 14.1 本书内容总结 .........................................................................................400 14.2 接下来要学习的主题 .............................................................................403 14.2.1 延伸阅读 ...................................................................................403 14.2.2 算法 ...........................................................................................404 14.2.3 所处环境 ...................................................................................404 14.2.4 人机交互 ...................................................................................405 14.2.5 选择一个好的架构 ...................................................................405 14.3 推荐系统的未来是什么 ...............................................................406 14.4 最后的想法 ....................................................................................411

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个