第1章 推荐系统的时代背景 1
1.1 为什么需要推荐系统 1
1.1.1 提高流量利用效率 1
1.1.2 挖掘和匹配长尾需求 6
1.1.3 提升用户体验 7
1.1.4 技术积累 8
1.2 推荐的产品问题 10
1.2.1 推荐什么东西 10
1.2.2 为谁推荐 13
1.2.3 推荐场景 14
1.2.4 推荐解释 16
1.3 总结 18
第2章 推荐系统的核心技术概述 19
2.1 核心逻辑拆解 19
2.2 整体流程概述 20
2.3 召回算法 21
2.4 基于行为的召回算法 24
2.5 用户画像和物品画像 24
2.6 结果排序 26
2.7 评价指标 26
2.8 系统监控 27
2.9 架构设计 28
2.10 发展历程 28
2.11 总结 30
第3章 基础推荐算法 31
3.1 推荐逻辑流程架构 31
3.2 召回算法的基本逻辑 34
3.3 常用的基础召回算法 36
3.3.1 用户与物品的相关性 36
3.3.2 物品与物品的相关性 42
3.3.3 用户与用户的相关性 46
3.3.4 用户与标签的相关性 47
3.3.5 标签与物品的相关性 48
3.3.6 相关性召回的链式组合 50
3.4 冷启动场景下的推荐 51
3.5 总结 53
第4章 算法融合与数据血统 54
4.1 线性加权融合 55
4.2 优先级融合 57
4.3 基于机器学习的排序融合 59
4.4 融合策略的选择 61
4.5 融合时机的选择 63
4.6 数据血统 64
4.6.1 融合策略正确性验证 65
4.6.2 系统效果监控 65
4.6.3 策略效果分析 67
4.7 总结 68
第5章 机器学习技术的应用 69
5.1 机器学习技术概述 69
5.2 推荐系统中的应用场景 70
5.3 机器学习技术的实施方法 72
5.3.1 老系统与数据准备 72
5.3.2 问题分析与目标定义 74
5.3.3 样本处理 76
5.3.4 特征处理 80
5.3.5 模型选择与训练 98
5.3.6 模型效果评估 101
5.3.7 预测阶段效果监控 104
5.3.8 模型训练系统架构设计 105
5.3.9 模型预测系统架构设计 108
5.4 常用模型介绍 109
5.4.1 逻辑回归模型 109
5.4.2 GBDT模型 111
5.4.3 LR+GDBT模型 112
5.4.4 因子分解机模型 113
5.4.5 Wide & Deep模型 115
5.4.6 其他深度学习模型 116
5.5 机器学习实践常见问题 117
5.5.1 反模式1:只见模型,不见系统 117
5.5.2 反模式2:忽视模型过程和细节 117
5.5.3 反模式3:不注重样本精细化处理 118
5.5.4 反模式4:过于依赖算法 119
5.5.5 反模式5:核心数据缺乏控制 120
5.5.6 反模式6:团队不够“全栈” 121
5.5.7 反模式7:系统边界模糊导致出现“巨型系统” 121
5.5.8 反模式8:不重视基础数据架构建设 122
5.6 总结 123
第6章 用户画像系统 124
6.1 用户画像的概念和作用 124
6.2 用户画像的价值准则 126
6.3 用户画像的构成要素 128
6.3.1 物品侧画像 129
6.3.2 用户侧画像 133
6.3.3 用户画像扩展 139
6.3.4 用户画像和排序特征的关系 142
6.4 用户画像系统的架构演进 143
6.4.1 用户画像系统的组成部分 143
6.4.2 野蛮生长期 144
6.4.3 统一用户画像系统架构 145
6.5 总结 147
第7章 系统效果评测与监控 148
7.1 评测与监控的概念和意义 148
7.2 推荐系统的评测指标系统 150
7.3 常用指标 151
7.4 离线效果评测方法 158
7.5 在线效果评测方法 163
7.5.1 AB实验 163
7.5.2 交叉实验 173
7.6 系统监控 178
7.7 总结 181
第8章 推荐效果优化 182
8.1 准确率优化的一般性思路 183
8.2 覆盖率优化的一般性思路 185
8.3 行为类相关性算法优化 188
8.3.1 热度惩罚 188
8.3.2 时效性优化 190
8.3.3 随机游走 194
8.3.4 嵌入表示 196
8.4 内容类相关性算法优化 200
8.4.1 非结构化算法 201
8.4.2 结构化算法 201
8.5 影响效果的非算法因素 205
8.5.1 用户因素 205
8.5.2 产品设计因素 206
8.5.3 数据因素 208
8.5.4 算法策略因素 208
8.5.5 工程架构因素 209
8.6 总结 210
第9章 自然语言处理技术的应用 211
9.1 词袋模型 212
9.2 权重计算和向量空间模型 214
9.3 隐语义模型 216
9.4 概率隐语义模型 218
9.5 生成式概率模型 220
9.6 LDA模型的应用 222
9.6.1 相似度计算 222
9.6.2 排序特征 222
9.6.3 物品打标签&用户打标签 223
9.6.4 主题&词的重要性度量 223
9.6.5 更多应用 224
9.7 神经概率语言模型 224
9.8 行业应用现状 226
9.9 总结和展望 227
第10章 探索与利用问题 228
10.1 多臂老虎机问题 228
10.2 推荐系统中的EE问题 230
10.3 解决方案 231
10.3.1 ?-Greedy算法 231
10.3.2 UCB 234
10.3.3 汤普森采样 236
10.3.4 LinUCB 237
10.4 探索与利用原理在机器学习系统中的应用 239
10.5 EE问题的本质和影响 240
10.6 总结 241
第11章 推荐系统架构设计 242
11.1 架构设计概述 242
11.2 系统边界和外部依赖 244
11.3 离线层、在线层和近线层架构 246
11.4 离线层架构 247
11.5 近线层架构 249
11.6 在线层架构 252
11.7 架构层级对比 255
11.8 系统和架构演进原则 256
11.8.1 从简单到复杂 256
11.8.2 从离线到在线 258
11.8.3 从统一到拆分 258
11.9 基于领域特定语言的架构设计 259
11.10 总结 262
第12章 推荐系统工程师成长路线 263
12.1 基础开发能力 264
12.1.1 单元测试 264
12.1.2 逻辑抽象复用 264
12.2 概率和统计基础 265
12.3 机器学习理论 266
12.3.1 基础理论 267
12.3.2 监督学习 268
12.3.3 无监督学习 269
12.4 开发语言和开发工具 270
12.4.1 开发语言 270
12.4.2 开发工具 270
12.5 算法优化流程 271
12.6 推荐业务技能 273
12.7 总结 274
第13章 推荐系统的挑战 275
13.1 数据稀疏性 275
13.2 推荐结果解释 277
13.3 相关性和因果性 281
13.4 信息茧房 283
13.5 转化率预估偏差问题 286
13.6 召回模型的局限性问题 288
13.7 用户行为捕捉粒度问题 290
13.8 总结 291