推荐系统开发实战
作者:高阳团
出版时间: 2019年版
内容简介
本书是一本关于推荐系统从入门到进阶的读物,采用“理论+实践”的形式展开,不仅对各种推荐算法进行了介绍,还对算法所涉及的基础理论知识进行了补充。 全书共分为3篇: – 第1篇是“推荐系统的背景介绍和入门”,包括走进推荐系统、搭建你的一个推荐系统和推荐系统常用数据集介绍; – 第2篇是“推荐系统涉及的算法介绍、冷启动和效果评估”,包括数据挖掘——让推荐系统更懂你、基于用户行为特征的推荐、基于标签的推荐、基于上下文的推荐、基于点击率预估的推荐、推荐系统中的冷启动和推荐系统中的效果评估; – 第3篇是“推荐系统实例”,包括搭建一个新闻推荐系统、搭建一个音乐推荐系统、搭建一个图书推荐系统和业界推荐系统架构介绍。 书中的实例开发几乎都是基于公开的数据集进行的,当然也涉及一些网络中获取的数据,其最终目的都是让读者能够更好地理解推荐算法,更直观地认识推荐系统。 书中所涉及的数据集和实例代码都会提供给读者,这不仅在一定程度上方便读者学习,而且为以后的工作提供了便利。 本书非常适合有一定编程基础、对推荐系统感兴趣的读者,希望用推荐算法完成设计的高等院校计算机或电子信息专业的学生,准备开设推荐系统实践课的授课老师,学习过Python、希望进一步提升编程水平的开发者,初学数据挖掘、机器学习的算法工程师或数据分析师阅读使用。
目录
==第1篇 推荐系统的背景介绍和入门
=
第1章 走进推荐系统2
1.1 从“啤酒与尿布”到推荐系统的前世今生2
∣1.1.1 “啤酒与尿布”2
∣1.1.2 推荐系统的前世今生2
1.2 推荐系统可以做什么4
∣1.2.1 什么是推荐系统4
∣1.2.2 在电商类产品中的应用5
∣1.2.3 在社交类产品中的应用6
∣1.2.4 在音乐类产品中的应用8
∣1.2.5 在视频类产品中的应用9
∣1.2.6 在阅读类产品中的应用10
∣1.2.7 在服务类产品中的应用11
1.3 学习本书需要的技能12
∣1.3.1 Python基础12
∣1.3.2 数据结构14
∣1.3.3 工程能力15
1.4 如何学习本书17
1.5 知识导图17
=
第2章 搭建你的第一个推荐系统19
2.1 实例1:搭建电影推荐系统19
∣2.1.1 利用Netflix数据集准备数据19
∣2.1.2 使用Python表示数据21
∣2.1.3 选择相似用户23
∣2.1.4 为用户推荐相似用户喜欢的电影24
∣2.1.5 分析效果25
2.2 总结:搭建推荐系统的一般步骤26
∣2.2.1 准备数据26
∣2.2.2 选择算法27
∣2.2.3 模型训练28
∣2.2.4 效果评估28
2.3 知识导图28
=
第3章 推荐系统常用数据集介绍29
3.1 MovieLens数据集29
∣3.1.1 README29
∣3.1.2 ratings.dat29
∣3.1.3 movies.dat31
∣3.1.4 users.dat34
3.2 Book-Crossings数据集36
∣3.2.1 BX-Book-Ratings.csv37
∣3.2.2 BX-Books.csv39
∣3.2.3 BX-Users.csv39
3.3 Last.fm数据集41
∣3.3.1 README41
∣3.3.2 artists.dat41
∣3.3.3 tags.dat41
∣3.3.4 user_artists.dat42
∣3.3.5 user_friends.dat42
∣3.3.6 uses_taggedartists.dat42
∣3.3.7 user_taggedartists-timestamps.dat42
3.4 FourSquare数据集43
∣3.4.1 users.dat43
∣3.4.2 venues.dat44
∣3.4.3 checkins.dat44
∣3.4.4 socialgraph.dat44
∣3.4.5 ratings.dat45
3.5 Kaggle比赛之retailrocket 数据集46
∣3.5.1 events.csv47
∣3.5.2 category_tree.csv49
∣3.5.3 item_properties.csv49
3.6 场景分析49
3.7 知识导图50
=
==第2篇 推荐系统涉及的算法介绍、冷启动和效果评估
=
第4章 数据挖掘——让推荐系统更懂你52
4.1 数据预处理52
∣4.1.1 数据标准化52
∣4.1.2 实例2:实现数据的标准化54
∣4.1.3 数据离散化56
∣4.1.4 实例3:基于信息熵的数据离散化58
∣4.1.5 数据抽样61
∣4.1.6 数据降维63
∣4.1.7 实例4:对鸢尾花数据集特征进行降维66
∣4.1.8 数据清理68
∣4.1.9 相似度计算71
4.2 数据分类74
∣4.2.1 K最近邻算法74
∣4.2.2 实例5:利用KNN算法实现性别判定75
∣4.2.3 决策树算法77
∣4.2.4 实例6:构建是否举办活动的决策树80
∣4.2.5 朴素贝叶斯算法84
∣4.2.6 实例7:基于朴素贝叶斯算法进行异常账户检测87
∣4.2.7 分类器的评估90
∣4.2.8 实例8:scikit-learn中的分类效果评估92
4.3 数据聚类92
∣4.3.1 kMeans算法92
∣4.3.2 实例9:基于kMeans算法进行商品价格聚类95
∣4.3.3 二分-kMeans算法98
∣4.3.4 实例10:基于二分-kMeans算法进行商品价格聚类99
∣4.3.5 聚类算法的评估100
∣4.3.6 实例11:scikit-learn中的聚类效果评估102
4.4 关联分析103
∣4.4.1 Apriori算法103
∣4.4.2 实例12:基于Apriori算法实现频繁项集和相关规则挖掘106
4.5 知识导图110
=
第5章 基于用户行为特征的推荐111
5.1 用户行为分类111
5.2 基于内容的推荐算法112
∣5.2.1 算法原理——从“构造特征”到“判断用户是否喜欢”112
∣5.2.2 实例13:对手机属性进行特征建模115
5.3 实例14:编写一个基于内容推荐算法的电影推荐系统117
∣5.3.1 了解实现思路117
∣5.3.2 准备数据119
∣5.3.3 选择算法122
∣5.3.4 模型训练122
∣5.3.5 效果评估123
5.4 基于近邻的推荐算法124
∣5.4.1 UserCF算法的原理——先“找到相似同户”,再“找到他们喜欢的物品”124
∣5.4.2 ItemCF算法的原理——先“找到用户喜欢的物品”,再“找到喜欢物品的相似物品”131
5.5 实例15:编写一个基于UserCF算法的电影推荐系统137
∣5.5.1 了解实现思路138
∣5.5.2 准备数据138
∣5.5.3 选择算法138
∣5.5.4 模型训练138
∣5.5.5 效果评估141
5.6 实例16:编写一个基于ItemCF算法的电影推荐系统141
∣5.6.1 了解实现思路141
∣5.6.2 准备数据142
∣5.6.3 选择算法142
∣5.6.4 模型训练142
∣5.6.5 效果评估144
5.7 对比分析:UserCF算法和ItemCF算法145
5.8 对比分析:基于内容和基于近邻146
5.9 基于隐语义模型的推荐算法147
∣5.9.1 LFM概述147
∣5.9.2 LFM算法理解148
5.10 实例17:编写一个基于LFM的电影推荐系统152
∣5.10.1 了解实现思路152
∣5.10.2 准备数据152
∣5.10.3 选择算法154
∣5.10.4 模型训练155
∣5.10.5 效果评估158
5.11 知识导图159
=
第6章 基于标签的推荐161
6.1 基于标签系统的应用161
∣6.1.1 Last.fm161
∣6.1.2 Delicious162
∣6.1.3 豆瓣163
∣6.1.4 网易云音乐163
6.2 数据标注与关键词提取165
∣6.2.1 推荐系统中的数据标注165
∣6.2.2 推荐系统中的关键词提取167
∣6.2.3 标签的分类168
6.3 实例18:基于TF-IDF算法提取商品标题的关键词169
∣6.3.1 了解TF-IDF算法169
∣6.3.2 认识商品标题描述170
∣6.3.3 提取关键词170
6.4 基于标签的推荐系统174
∣6.4.1 标签评分算法174
∣6.4.2 标签评分算法改进176
∣6.4.3 标签基因177
∣6.4.4 用户兴趣建模177
6.5 实例19:利用标签推荐算法实现艺术家的推荐178
∣6.5.1 了解实现思路178
∣6.5.2 准备数据178
∣6.5.3 选择算法179
∣6.5.4 模型训练179
∣6.5.5 效果评估182
6.6 知识导图182
=
第7章 基于上下文的推荐184
7.1 基于时间特征的推荐184
∣7.1.1 时间效应介绍184
∣7.1.2 时间效应分析187
∣7.1.3 推荐系统的实时性194
∣7.1.4 协同过滤中的时间因子195
7.2 实例20:实现一个“增加时间衰减函数的协同过滤算法”197
∣7.2.1 在UserCF算法中增加时间衰减函数197
∣7.2.2 在ItemCF算法中增加时间衰减函数199
7.3 基于地域和热度特征的推荐200
∣7.3.1 为什么要将地域和热度特征放在一起201
∣7.3.2 解读LARS中的地域特征202
∣7.3.3 基于地域和热度的推荐算法204
7.4 实例21:创建一个基于地域和热度的酒店推荐系统206
∣7.4.1 了解实现思路206
∣7.4.2 准备数据207
∣7.4.3 选择算法207
∣7.4.4 模型训练207
∣7.4.5 效果评估210
7.5 其他上下文信息210
7.6 知识导图210
=
第8章 基于点击率预估的推荐212
8.1 传统推荐算法的局限和应用212
∣8.1.1 传统推荐算法的局限212
∣8.1.2 传统推荐算法的应用213
8.2 点击率预估在推荐系统中的应用214
8.3 集成学习214
∣8.3.1 集成学习概述215
∣8.3.2 Boosting算法(提升法)215
∣8.3.3 Bagging算法(自助法)216
∣8.3.4 Stacking算法(融合法)217
8.4 导数、偏导数、方向导数、梯度217
∣8.4.1 导数217
∣8.4.2 偏导数217
∣8.4.3 方向导数218
∣8.4.4 梯度219
∣8.4.5 梯度下降219
8.5 GBDT算法222
∣8.5.1 Gradient Boosting方法223
∣8.5.2 决策树223
∣8.5.3 GBDT算法的原理224
8.6 实例22:基于GBDT算法预估电信客户流失227
∣8.6.1 了解实现思路227
∣8.6.2 准备数据229
∣8.6.3 选择算法232
∣8.6.4 模型训练232
∣8.6.5 效果评估234
8.7 回归分析236
∣8.7.1 什么是回归分析236
∣8.7.2 回归分析算法分类236
8.8 Logistic Regression算法237
∣8.8.1 Sigmoid函数237
∣8.8.2 LR为什么要使用Sigmoid函数239
∣8.8.3 LR的算法原理分析240
8.9 实例23:基于LR算法预估电信客户流失241
∣8.9.1 准备数据242
∣8.9.2 选择算法242
∣8.9.3 模型训练242
∣8.9.4 效果评估243
8.10 GBDT+LR的模型融合245
∣8.10.1 GBDT+LR模型融合概述245
∣8.10.2 为什么选择GBDT和LR进行模型融合246
∣8.10.3 GBDT+LR模型融合的原理246
8.11 实例24:基于GBDT和LR算法预估电信客户流失247
∣8.11.1 准备数据247
∣8.11.2 选择算法247
∣8.11.3 模型训练247
∣8.11.4 效果评估248
8.12 知识导图251
=
9章 推荐系统中的冷启动252
9.1 冷启动介绍252
∣9.1.1 冷启动的分类252
∣9.1.2 冷启动的几种实现方法252
9.2 基于热门数据推荐实现冷启动253
9.3 利用用户注册信息实现冷启动254
∣9.3.1 注册信息分析254
∣9.3.2 实例25:分析Book-Crossings数据集中的共性特征255
∣9.3.3 实现原理261
9.4 利用用户上下文信息实现冷启动261
∣9.4.1 设备信息特征262
∣9.4.2 时间地域信息特征262
∣9.4.3 实现原理262
9.5 利用第三方数据实现冷启动263
9.6 利用用户和系统之间的交互实现冷启动263
∣9.6.1 实现原理263
∣9.6.2 推荐系统中实时交互的应用265
∣9.6.3 实例26:用户实时交互推荐系统设计266
9.7 利用物品的内容属性实现冷启动267
∣9.7.1 物品内容属性分析267
∣9.7.2 物品信息的使用268
9.8 利用专家标注数据实现冷启动269
9.9 知识导图270
=
10章 推荐系统中的效果评估271
10.1 用户调研271
10.2 在线评估272
10.3 在线实验方式——ABTest272
∣10.3.1 ABTest介绍272
∣10.3.2 ABTest流程272
∣10.3.3 ABTest的注意事项273
10.4 在线评估指标274
∣10.4.1 点击率275
∣10.4.2 转化率275
∣10.4.3 网站成交额275
10.5 离线评估276
10.6 拆分数据集276
∣10.6.1 留出法277
∣10.6.2 K-折交叉验证法277
∣10.6.3 自助法277
∣10.6.4 实例27:使用sklearn包中的train_test_split()函数进行数据集拆分278
∣10.6.5 实例28:使用sklearn包中的KFold()函数产生交叉验证数据集280
∣10.6.6 实例29:使用sklearn包中的cross_validate()函数演示交叉验证281
10.7 离线评估指标282
∣10.7.1 准确度指标之预测分类准确度指标282
∣10.7.2 实例30:使用sklearn包中的metrics类预测分类准确度288
∣10.7.3 准确度指标之预测评分准确度指标290
∣10.7.4 实例31:使用sklearn包中的metrics类预测评分准确度290
∣10.7.5 准确度指标之预测评分关联指标291
∣10.7.6 准确度指标之排序准确度指标292
∣10.7.7 非准确度指标292
10.8 知识导图296
=
第3篇 推荐系统实例
=
第11章 实例32:搭建一个新闻推荐系统298
11.1 准备数据298
11.2 预处理数据298
∣11.2.1 原始数据加工298
∣11.2.2 新闻热度值计算299
∣11.2.3 新闻相似度计算300
∣11.2.4 指定标签下的新闻统计302
11.3 设计架构303
11.4 实现系统304
∣11.4.1 准备环境304
∣11.4.2 实现后端接口304
∣11.4.3 实现前端界面309
∣11.4.4 系统演示309
11.5 代码复现311
∣11.5.1 安装依赖311
∣11.5.2 数据入库312
∣11.5.3 修改配置312
∣11.5.4 项目启动312
11.6 知识导图312
=
第12章 实例33:搭建一个音乐推荐系统314
12.1 准备数据314
12.2 预处理数据314
∣12.2.1 计算歌曲、歌手、用户相似度314
∣12.2.2 计算用户推荐集315
∣12.2.3 数据导入数据库319
12.3 设计架构321
12.4 实现系统322
∣12.4.1 准备环境322
∣12.4.2 实现后端接口322
∣12.4.3 实现前端界面324
∣12.4.4 系统演示324
12.5 代码复现327
∣12.5.1 安装依赖327
∣12.5.2 数据入库327
∣12.5.3 修改配置327
∣12.5.4 项目启动328
12.6 知识导图328
=
第13章 实例34:搭建一个图书推荐系统329
13.1 准备数据329
13.2 预处理数据329
∣13.2.1 原始数据加工329
∣13.2.2 数据导入数据库331
∣13.2.3 模型准备331
13.3 设计架构332
13.4 实现系统333
∣13.4.1 准备环境333
∣13.4.2 实现后端接口333
∣13.4.3 实现前端界面336
∣13.4.4 系统演示336
13.5 代码复现338
13.6 知识导图338
=
第14章 业界推荐系统架构介绍340
14.1 概述340
14.2 架构介绍340
14.3 召回内容342
14.4 计算排序343
∣14.4.1 特征工程343
∣14.4.2 特征分类343
∣14.4.3 排序算法343
14.5 物品过滤和展示344
∣14.5.1 物品过滤344
∣14.5.2 物品展示344
14.6 效果评估344
14.7 知识导图345
书籍下载: