使用Python和JAX构建推荐系统
使用Python和JAX构建推荐系统
Bryan Bischof, Hector Yee
余琦, 张锦程, 何婷婷 译
出版时间:2025年08月
页数:362
“对于希望构建真实世界系统,而不仅仅是训练模型的从业者来说,这是一本必读之作。”
——Jacopo Tagliabue
Bauplan联合创始人,RecList和evalRS共同创作者
“从现在起,这本书将成为我书架上该主题的标准参考书。”
——Will Kurt
AI工程师,《Bayesian Statistics the Fun Way》和《Get Programming with Haskell》作者
实现和设计向用户提供建议的系统是当前最流行且最重要的机器学习应用之一。无论是希望客户在你的在线商店中找到最具吸引力的商品、获取丰富且有趣的视频,还是获取他们需要了解的新闻,推荐系统(RecSys)都能提供解决方案。
在这本实用指南中,本书作者阐述了核心概念,并提供示例,帮助你构建适用于任何行业或规模的推荐系统。你将学习构建成功推荐系统所需的数学知识、基本理念,以及具体的实现细节。本书涵盖推荐系统平台的核心组件、MLOps相关工具,以及PySpark、SparkSQL、FastAPI和Weights & Biases中的代码示例和实用建议。
你将学习:
● 构建推荐系统所需的数据。
● 如何将你的数据和业务问题框定为推荐系统问题。
● 适用于你的系统的模型评估方法。
● 选择、实现、训练、测试和部署模型的方法。
● 需要跟踪的关键指标,以确保系统按预期运行。
● 随着对用户、产品和业务的深入了解,如何不断改进你的系统。
  1. 前言
  2. 第一部分 热身
  3. 第1章 概述
  4. 1.1 推荐系统的核心组件
  5. 1.1.1 收集器
  6. 1.1.2 排序器
  7. 1.1.3 服务器
  8. 1.2 最简单的推荐器
  9. 1.2.1 简单推荐器
  10. 1.2.2 最受欢迎的条目推荐器
  11. 1.3 JAX的简要介绍
  12. 1.3.1 基础类型,初始化和不可变性
  13. 1.3.2 索引和切片
  14. 1.3.3 广播
  15. 1.3.4 随机数
  16. 1.3.5 即时编译
  17. 1.4 总结
  18. 第2章 用户–物品项评分与问题构建
  19. 2.1 用户–物品项矩阵
  20. 2.2 用户–用户协同过滤vs物品项–物品项协同过滤
  21. 2.3 Netflix挑战
  22. 2.4 隐式评分
  23. 2.5 数据收集与用户日志记录
  24. 2.5.1 日志记录的内容
  25. 2.5.2 数据收集与事件记录
  26. 2.5.3 漏斗分析
  27. 2.6 业务洞察与用户偏好
  28. 2.7 总结
  29. 第3章 数学基础
  30. 3.1 齐夫定律与马太效应在推荐系统中的应用
  31. 3.2 稀疏性
  32. 3.3 用户相似性在协同过滤中的应用
  33. 3.3.1 皮尔逊相关系数
  34. 3.3.2 基于相似性的评分
  35. 3.4 探索–利用作为推荐系统
  36. 3.4.1 ∈-贪婪算法
  37. 3.4.2 ∈应该设为多少
  38. 3.5 自然语言处理(NLP)与推荐系统的关系
  39. 3.5.1 向量搜索
  40. 3.5.2 最近邻搜索
  41. 3.6 总结
  42. 第4章 推荐系统设计
  43. 4.1 离线vs在线
  44. 4.2 收集器
  45. 4.2.1 离线收集器
  46. 4.2.2 在线收集器
  47. 4.3 排序器
  48. 4.3.1 离线排序器
  49. 4.3.2 在线排序器
  50. 4.4 服务器
  51. 4.4.1 离线服务器
  52. 4.4.2 在线服务器
  53. 4.5 总结
  54. 第5章 综合实践:基于内容的推荐系统
  55. 5.1 版本控制软件
  56. 5.2 Python构建系统
  57. 5.3 随机物品推荐器
  58. 5.4 获取STL数据集图像
  59. 5.5 卷积神经网络定义
  60. 5.6 在JAX、Flax和Optax中训练模型
  61. 5.7 输入管道
  62. 5.8 总结
  63. 第二部分 检索
  64. 第6章 数据处理
  65. 6.1 给系统注入数据
  66. 6.1.1 PySpark
  67. 6.1.2 例子:使用PySpark构建用户相似度
  68. 6.1.3 DataLoaders
  69. 6.1.4 数据库快照
  70. 6.2 用于学习和推理的数据结构
  71. 6.2.1 向量搜索
  72. 6.2.2 近似最近邻(ANN)
  73. 6.2.3 布隆过滤器
  74. 6.2.4 有趣的分支:将布隆过滤器作为推荐系统
  75. 6.2.5 特征库
  76. 6.3 总结
  77. 第7章 服务模型和架构
  78. 7.1 推荐系统的架构设计
  79. 7.1.1 物品到用户的推荐
  80. 7.1.2 基于查询的推荐
  81. 7.1.3 基于上下文的推荐
  82. 7.1.4 基于序列的推荐
  83. 7.1.5 为什么需要额外特征
  84. 7.2 编码器架构与冷启动
  85. 7.3 部署
  86. 7.3.1 模型作为API
  87. 7.3.2 启动模型服务
  88. 7.3.3 工作流编排
  89. 7.4 警报和监控
  90. 7.4.1 模式和先验
  91. 7.4.2 集成测试
  92. 7.4.3 可观察性
  93. 7.5 生产环境中的评估
  94. 7.5.1 慢反馈
  95. 7.5.2 模型指标
  96. 7.6 持续训练和部署
  97. 7.6.1 模型漂移
  98. 7.6.2 部署拓扑
  99. 7.7 评估飞轮
  100. 7.7.1 每日热启动
  101. 7.7.2 Lamada架构和编排
  102. 7.7.3 日志记录
  103. 7.7.4 主动学习
  104. 7.8 总结
  105. 第8章 综合实践:数据处理和计数推荐器
  106. 8.1 技术栈
  107. 8.2 数据的表现形式
  108. 8.3 大数据框架
  109. 8.3.1 集群框架
  110. 8.3.2 PySpark示例
  111. 8.4 GloVE模型定义
  112. 8.4.1 在JAX和Flax中的GloVE模型规范
  113. 8.4.2 使用Optax进行GloVE模型训练
  114. 8.5 总结
  115. 第三部分 排序
  116. 第9章 基于特征和基于计数的推荐
  117. 9.1 双线性因子模型(指标学习)
  118. 9.2 基于特征的热启动
  119. 9.3 分段模型和混合模型
  120. 9.3.1 基于标签的推荐系统
  121. 9.3.2 混合模型
  122. 9.4 双线性模型的局限性
  123. 9.5 计算推荐系统数量
  124. 9.5.1 返回最热门物品的推荐器(MPIR)
  125. 9.5.2 关联挖掘
  126. 9.5.3 通过共现计算点互信息
  127. 9.5.4 基于共现的相似性度量
  128. 9.5.5 基于相似度的推荐
  129. 9.6 总结
  130. 第10章 低秩方法
  131. 10.1 潜在空间
  132. 10.2 点积相似度
  133. 10.3 共现模型
  134. 10.4 减少推荐系统排名的问题
  135. 10.4.1 利用ALS优化矩阵分解(MF)
  136. 10.4.2 矩阵分解的正则化
  137. 10.4.3 正则化的矩阵因子分解实现
  138. 10.4.4 WSABIE
  139. 10.5 降低维度
  140. 10.5.1 等距嵌入
  141. 10.5.2 非线性局部可度量化的嵌入
  142. 10.5.3 中心核对齐
  143. 10.6 亲和力和销售估计器
  144. 10.7 用于推荐系统评估的倾向性加权
  145. 10.7.1 倾向
  146. 10.7.2 辛普森悖论与降低混杂因素的影响
  147. 10.8 总结
  148. 第11章 个性化推荐度量指标
  149. 11.1 环境
  150. 11.1.1 在线与离线
  151. 11.1.2 用户vs物品度量指标
  152. 11.1.3 A/B测试
  153. 11.2 召回率和精确率
  154. 11.2.1 @k
  155. 11.2.2 在k的精准率
  156. 11.2.3 在k的召回率
  157. 11.2.4 r-精准率
  158. 11.3 mAP, MMR, NDCG
  159. 11.3.1 mAP
  160. 11.3.2 MRR
  161. 11.3.3 NDCG
  162. 11.3.4 mAP与NDCG的对比
  163. 11.3.5 相关性系数
  164. 11.4 用RMSE考虑亲和度
  165. 11.5 积分形式的指标:AUC和cAUC
  166. 11.5.1 推荐概率与AUC-ROC
  167. 11.5.2 与其他度量指标比较
  168. 11.6 BPR
  169. 11.7 总结
  170. 第12章 排名训练
  171. 12.1 排名在推荐系统中的作用是什么
  172. 12.2 排序学习
  173. 12.3 训练一个LTR模型
  174. 12.3.1 用于排名的分类
  175. 12.3.2 用于排名的回归
  176. 12.3.3 用于排名的分类和回归
  177. 12.4 加权近似排名对(WARP)
  178. 12.5 k阶统计量
  179. 12.6 最佳匹配25(BM25)
  180. 12.7 多模态检索
  181. 12.8 总结
  182. 第13章 综合实践:实验与排序
  183. 13.1 实验提示
  184. 13.1.1 保持简单
  185. 13.1.2 调试打印语句
  186. 13.1.3 推迟优化
  187. 13.1.4 记录变更
  188. 13.1.5 使用特征工程
  189. 13.1.6 理解模型指标与业务指标的区别
  190. 13.1.7 快速迭代
  191. 13.2 Spotify百万播放列表数据集
  192. 13.2.1 构建URI字典
  193. 13.2.2 构建训练数据
  194. 13.2.3 读取输入
  195. 13.2.4 建模问题
  196. 13.2.5 构建损失函数
  197. 13.3 练习
  198. 13.4 总结
  199. 第四部分 服务
  200. 第14章 业务逻辑
  201. 14.1 硬排序
  202. 14.2 学习避开项
  203. 14.3 手工调整权重
  204. 14.4 库存健康
  205. 14.5 实现避开项
  206. 14.6 基于模型的避开项
  207. 14.7 总结
  208. 第15章 推荐系统中的偏见
  209. 15.1 推荐的多样化
  210. 15.1.1 提高多样性
  211. 15.1.2 应用组合优化
  212. 15.2 多目标函数
  213. 15.3 谓词下推
  214. 15.4 公平性
  215. 15.5 总结
  216. 第16章 加速结构
  217. 16.1 分片
  218. 16.2 局部敏感哈希(LSH)
  219. 16.3 k-d树
  220. 16.4 分层k-means
  221. 16.5 更低成本的检索方法
  222. 16.6 总结
  223. 第五部分 推荐系统的未来
  224. 第17章 序列推荐系统
  225. 17.1 马尔可夫链
  226. 17.1.1 二阶马尔可夫链
  227. 17.1.2 其他马尔可夫模型
  228. 17.2 RNN和CNN架构
  229. 17.3 注意力架构
  230. 17.3.1 自注意力序列推荐
  231. 17.3.2 BERT4Rec
  232. 17.3.3 时效性采样
  233. 17.3.4 合并静态与序列数据
  234. 17.4 总结
  235. 第18章 推荐系统的下一步发展
  236. 18.1 多模态推荐
  237. 18.2 基于图的推荐系统
  238. 18.2.1 神经消息传递
  239. 18.2.2 应用
  240. 18.2.3 随机游走
  241. 18.2.4 元路径与异构性
  242. 18.3 LLM的应用
  243. 18.3.1 LLM推荐系统
  244. 18.3.2 LLM训练
  245. 18.3.3 推荐系统的指令调优
  246. 18.3.4 LLM排名器
  247. 18.3.5 推荐系统对AI的帮助
  248. 18.4 总结
书名:使用Python和JAX构建推荐系统
作者:Bryan Bischof, Hector Yee
译者:余琦, 张锦程, 何婷婷 译
国内出版社:中国电力出版社
出版时间:2025年08月
页数:362
书号:978-7-5239-0052-9
原版书书名:Building Recommendation Systems in Python and JAX
原版书出版商:O'Reilly Media
Bryan Bischof
 
Bryan Bischof在Hex负责人工智能相关的工作,他同时是罗格斯大学商业与分析硕士项目的兼职教授,教授数据科学课程。此前,他曾担任Weights & Biases的数据科学主管,期间组建了数据科学、机器学习和数据工程团队。
 
 
Hector Yee
 
Hector Yee是谷歌的高级软件工程师,曾参与多个项目,包括图像搜索领域中的首个基于内容的排序系统,以及自动驾驶汽车的感知系统。
 
 
本书封面上的动物是一只欧洲金翅雀(学名:Carduelis carduelis)。这种雀形目鸟类以其多彩的羽毛而闻名,主要栖息在欧洲、北非、西亚和中亚的开阔森林低地中。多年来,它们被引入到许多其他国家,包括美国、加拿大、墨西哥、秘鲁、阿根廷、澳大利亚和新西兰。特别是在美国,它们在西部五大湖地区建立了栖息地。
欧洲金翅雀的平均体长约为4.7~5.1英寸(12~13厘米),翼展8.3~9.8英寸
(21~25厘米);体重约为0.5~0.67盎司。雄性和雌性欧洲金翅雀外观相似,均具有红色的脸部、黑白相间的头部、黑色和黄色的翅膀、白色的腹部和中棕色的上部。不过,仔细观察下,雄性欧洲金翅雀可以通过脸上较大、较深的红色斑块和肩部的黑色羽毛(雌性肩部为棕色羽毛)来区分。繁殖季节后,欧洲金翅雀会脱去旧羽毛以迎接新羽毛的生长;新羽毛初生时颜色较淡,但在完全长出后会恢复原有的艳丽色彩。
在饮食方面,欧洲金翅雀偏爱蓟、矢车菊和菊苣的种子;昆虫主要供给幼鸟食用。这些鸟类还经常光顾欧洲和北美的居民花园,被装有种子的喂鸟器所吸引。由于它们悦耳的鸣叫声,欧洲金翅雀常被捕捉并在笼中饲养;为了保护欧洲金翅雀,已有野生动物保护尝试以限制捕鸟和破坏开放空间栖息地的行为。
购买选项
定价:128.00元
书号:978-7-5239-0052-9
出版社:中国电力出版社