大規(guī)模推薦系統(tǒng)實戰(zhàn)
定 價:99.8 元
- 作者:阿星(本名:張友雷)
- 出版時間:2022/8/1
- ISBN:9787115593856
- 出 版 社:人民郵電出版社
- 中圖法分類:TP181
- 頁碼:368
- 紙張:
- 版次:01
- 開本:16開
作為機器學習領域應用比較成熟、廣泛的業(yè)務,個性化推薦在電商、短視頻等平臺發(fā)揮著重要作用,其背后的推薦系統(tǒng)已成為當今越來越多應用程序的標配。關于推薦算法的論述有很多,而要將其很好地應用到實際場景中,則需要大量的實踐經(jīng)驗。本書從實戰(zhàn)的角度介紹推薦系統(tǒng),主要包含三部分 :召回算法、排序算法和工程實踐。書中細致剖析了如何在工業(yè)中對海量數(shù)據(jù)應用算法,涵蓋了從算法原理,到模型搭建、優(yōu)化以及最佳實踐等諸多內(nèi)容。
作者從實踐出發(fā),結合在推薦領域的多年經(jīng)驗,清晰直觀地介紹了推薦系統(tǒng)相關的算法原理、代碼實現(xiàn)、評估方法及調(diào)優(yōu)經(jīng)驗等內(nèi)容。本書融合了算法理論與實現(xiàn),兼顧技術廣度與深度。內(nèi)容通俗易懂,干貨十足,具實踐參考價值,適合不同階段的廣大讀者閱讀。
專業(yè)背景:一線互聯(lián)網(wǎng)大廠推薦系統(tǒng)專家經(jīng)驗總結
著眼實戰(zhàn):詳細剖析大規(guī)模推薦系統(tǒng)從0到1和從1到N
開箱即用:附帶可以直接用于生產(chǎn)環(huán)境的幾乎所有主流推薦算法的代碼實現(xiàn)
阿星
曾在字節(jié)跳動、蘇寧易購等企業(yè)負責推薦/廣告算法的設計、開發(fā)和優(yōu)化工作,在應對海量數(shù)據(jù)下的算法建模以及點擊率/轉(zhuǎn)化率預估等任務中積累了大量實戰(zhàn)經(jīng)驗。目前就職于跨境電商巨頭SHEIN,負責提升全球核心業(yè)務場景的流量分發(fā)效率。
前言 iii
第 1章 推薦系統(tǒng) 1
1.1 推薦系統(tǒng)是什么 1
1.1.1 京東商城 3
1.1.2 亞馬遜 4
1.1.3 YouTube 6
1.2 推薦系統(tǒng)整體架構 8
1.3 推薦系統(tǒng)算法概述 9
1.3.1 召回算法 10
1.3.2 排序算法 14
1.4 周邊配套系統(tǒng) 16
1.4.1 機器學習平臺 18
1.4.2 特征平臺 18
1.4.3 模型服務平臺 19
1.4.4 A/B測試平臺 19
1.5 總結 20
第 一部分 召回算法
第 2章 協(xié)同過濾 22
2.1 算法應用 24
2.2 算法原理 25
2.2.1 打分機制 26
2.2.2 物品相似度 31
2.3 算法實現(xiàn) 33
2.3.1 步驟1:數(shù)據(jù)源讀取 34
2.3.2 步驟2:聚合用戶行為 34
2.3.3 步驟3:局部物品相似度 35
2.3.4 步驟4和步驟5:全局物品相似度 36
2.3.5 步驟6:Top N 37
2.4 算法優(yōu)化 37
2.4.1 無效用戶過濾 38
2.4.2 熱門懲罰 38
2.5 完整代碼 39
2.6 準實時更新 42
2.6.1 數(shù)據(jù)準備 43
2.6.2 實時數(shù)據(jù)取數(shù)邏輯 44
2.6.3 準實時更新相似度 44
2.7 總結 45
第3章 關聯(lián)規(guī)則 47
3.1 關聯(lián)規(guī)則 48
3.1.1 定義 49
3.1.2 頻繁項集 50
3.2 Apriori算法 51
3.2.1 頻繁項集生成 51
3.2.2 關聯(lián)規(guī)則生成 53
3.3 FPGrowth 54
3.3.1 FP樹 54
3.3.2 邏輯 54
3.3.3 舉例 55
3.3.4 運行 66
3.3.5 完整代碼 68
3.3.6 數(shù)據(jù)集 69
3.3.7 源碼分析 70
3.3.8 算法優(yōu)化 76
3.4 總結 77
第4章 Word2Vec 78
4.1 詞向量示例 80
4.2 數(shù)據(jù)準備 81
4.2.1 詞匯表 82
4.2.2 訓練數(shù)據(jù) 82
4.3 算法原理 83
4.3.1 模型結構 85
4.3.2 前向傳播 86
4.3.3 反向傳播 88
4.3.4 算法優(yōu)化 89
4.4 源碼分析 91
4.4.1 負采樣概率表 91
4.4.2 sigmoid函數(shù)優(yōu)化 93
4.5 算法實戰(zhàn) 93
4.5.1 數(shù)據(jù)源 94
4.5.2 運行 94
4.5.3 相似度計算 95
4.6 LSH 算法 96
4.6.1 散列 96
4.6.2 算法邏輯 98
4.6.3 時間復雜度分析 102
4.6.4 錯誤率分析 102
4.6.5 召回率分析 104
4.7 Word2Vec與LSH 106
4.8 總結 107
第5章 深度學習雙塔召回 108
5.1 向量化 109
5.2 雙塔模型 110
5.2.1 數(shù)據(jù)準備 112
5.2.2 模型訓練 112
5.2.3 模型對外服務 113
5.3 HNSW算法 115
5.3.1 二分查找 115
5.3.2 有序鏈表 117
5.3.3 跳表 118
5.3.4 HNSW算法 121
5.4 雙塔模型與HNSW算法 129
5.5 負樣本策略 131
5.6 總結 132
第6章 召回模型的離線評估 133
6.1 推薦任務類型 133
6.2 混淆矩陣 134
6.2.1 準確率 135
6.2.2 精確率 136
6.2.3 召回率 136
6.2.4 F1分數(shù) 137
6.2.5 @k 138
6.3 nDCG 139
6.3.1 CG 139
6.3.2 DCG 140
6.3.3 nDCG 140
6.3.4 @k 141
6.4 其他指標 142
6.4.1 MRR 142
6.4.2 MAP 142
6.4.3 多樣性 143
6.4.4 覆蓋度 144
6.4.5 信息熵 144
6.5 代碼實現(xiàn) 144
6.5.1 實現(xiàn)邏輯 145
6.5.2 完整代碼 146
6.6 總結 149
第二部分 排序算法
第7章 特征工程和特征選擇 153
7.1 特征類型 155
7.1.1 類別特征 155
7.1.2 數(shù)值特征 155
7.1.3 序列特征 156
7.2 特征工程 156
7.2.1 特征樣例 156
7.2.2 特征工程 159
7.2.3 TensorFlow特征列 164
7.3 特征選擇 165
7.4 總結 167
第8章 傳統(tǒng)機器學習排序算法 168
8.1 數(shù)據(jù)和模型 168
8.1.1 極大似然估計 169
8.1.2 最大后驗概率估計 169
8.2 模型訓練流程 170
8.3 手寫邏輯回歸 171
8.3.1 數(shù)據(jù)準備 172
8.3.2 數(shù)據(jù)讀取 173
8.3.3 模型訓練 173
8.3.4 完整代碼 174
8.3.5 算法優(yōu)缺點 177
8.4 手寫因式分解機 178
8.4.1 完整代碼 180
8.4.2 算法優(yōu)缺點 183
8.5 其他經(jīng)典排序算法 184
8.6 Q & A 185
8.7 總結 186
第9章 深度學習從訓練到對外服務 188
9.1 深度學習簡介 188
9.2 經(jīng)典模型結構 191
9.2.1 Wide & Deep 191
9.2.2 Deep Interest Network 192
9.2.3 Behavior Sequence Transformer 194
9.3 建模流程 195
9.3.1 數(shù)據(jù)準備 197
9.3.2 特征工程 202
9.3.3 模型搭建 209
9.3.4 模型訓練 213
9.3.5 模型導出 215
9.3.6 模型服務 216
9.4 再談雙塔模型 219
9.5 總結 220
第 10章 Listwise Learning To Rank從原理到實現(xiàn) 221
10.1 Listwise基本概念 222
10.1.1 page view 222
10.1.2 relevance 223
10.1.3 Listwise 223
10.2 損失函數(shù) 224
10.2.1 permutation probability 224
10.2.2 top one probability 226
10.2.3 交叉熵損失函數(shù) 227
10.3 ListNet 228
10.3.1 數(shù)據(jù)準備 229
10.3.2 模型搭建 236
10.3.3 模型訓練、導出和服務 243
10.3.4 優(yōu)化方向 244
10.4 總結 244
第 11章 排序算法的離線評估和在線評估 246
11.1 離線評估 246
11.1.1 ROC 曲線 247
11.1.2 ROC 曲線下的面積 249
11.1.3 PR 曲線 254
11.1.4 GAUC 256
11.2 在線評估 257
11.2.1 A/B測試簡介 257
11.2.2 樸素分流方案 258
11.2.3 分層分流方案 260
11.2.4 可信度評估 262
11.3 在線離線不一致 267
11.3.1 特征不一致 267
11.3.2 數(shù)據(jù)分布不一致 268
11.3.3 模型與業(yè)務目標不一致 268
11.3.4 驗證集設計不合理 268
11.4 總結 270
第 12章 推薦算法建模最佳實踐 271
12.1 深度學習調(diào)參 272
12.1.1 學習率 272
12.1.2 batch size 279
12.1.3 epoch 279
12.1.4 隱藏層數(shù) 280
12.1.5 隱藏節(jié)點數(shù) 280
12.1.6 激活函數(shù) 280
12.1.7 權重初始化 280
12.1.8 優(yōu)化器 281
12.1.9 其他實踐 281
12.2 現(xiàn)實數(shù)據(jù)問題 281
12.2.1 類別失衡 282
12.2.2 位置偏差 286
12.2.3 海量數(shù)據(jù)下的調(diào)參 287
12.2.4 其他實踐 288
12.3 總結 288
第三部分 工程實踐
第 13章 冷啟動問題 290
13.1 冷啟動概述 291
13.2 用戶冷啟動 292
13.2.1 熱門排行榜 292
13.2.2 上下文信息 294
13.2.3 其他策略 295
13.3 物品冷啟動 296
13.3.1 基于內(nèi)容的過濾 296
13.3.2 推薦策略 299
13.4 系統(tǒng)冷啟動 301
13.5 總結 306
第 14章 增量更新和遷移學習 307
14.1 離線訓練 307
14.1.1 數(shù)據(jù)流向 307
14.1.2 更新方式 308
14.2 在線訓練 310
14.2.1 數(shù)據(jù)流向 310
14.2.2 樣本生成 312
14.2.3 延遲反饋 314
14.3 遷移學習 317
14.4 總結 320
第 15章 分布式TensorFlow 321
15.1 分布式的理由 321
15.2 并行方式 322
15.2.1 模型并行 323
15.2.2 數(shù)據(jù)并行 324
15.3 參數(shù)共享與更新 325
15.3.1 同步更新 326
15.3.2 異步更新 327
15.4 分布式訓練架構 329
15.4.1 Parameter Server架構 329
15.4.2 Ring All Reduce架構 331
15.5 單機代碼移植 334
15.5.1 數(shù)據(jù)準備 334
15.5.2 模型搭建 337
15.5.3 模型訓練 337
15.5.4 模型導出 340
15.6 分布式訓練框架 340
15.6.1 基于Kubernetes的分布式訓練框架 340
15.6.2 基于Flink的分布式訓練框架 344
15.7 總結 345
第 16章 示例:推薦算法訓練代碼框架設計 346
16.1 問題 347
16.2 解題思路 348
16.2.1 數(shù)據(jù)問題 348
16.2.2 訓練問題 349
16.3 詳細設計 350
16.3.1 配置解析 351
16.3.2 數(shù)據(jù)讀取 352
16.3.3 模型搭建 352
16.3.4 完整流程 353
16.4 代碼實現(xiàn) 353
16.4.1 配置解析 354
16.4.2 特征處理 359
16.5 總結 362
第 17章 回顧和探索 363
17.1 回顧 363
17.2 探索 364
17.2.1 數(shù)據(jù) 364
17.2.2 算法 366
17.2.3 平臺 367
17.2.4 安全 367
17.3 總結 368