內容簡介
作為機器學習領域套用比較成熟、廣泛的業務,個性化推薦在電商、短視頻等平台發揮著重要作用,其背後的推薦系統已成為當今越來越多應用程式的標配。關於推薦算法的論述有很多,而要將其很好地套用到實際場景中,則需要大量的實踐經驗。本書從實戰的角度介紹推薦系統,主要包含三部分 :召回算法、排序算法和工程實踐。書中細緻剖析了如何在工業中對海量數據套用算法,涵蓋了從算法原理,到模型搭建、最佳化以及實踐等諸多內容。
圖書目錄
前言 iii
第 1章 推薦系統 1
1.1 推薦系統是什麼 1
1.1.1 商城 3
1.1.2 亞馬遜 4
1.1.3 YouTube 6
1.2 推薦系統整體架構 8
1.3 推薦系駝煉墊統算法概述 9
1.3.1 召回算法 10
1.3.2 排序算法 14
1.4 周邊配套系統 16
1.4.1 機器學習平台 18
1.4.2 特徵平台 18
1.4.3 模型服務平台 19
1.4.4 A/B測試平台 19
1.5 總結 20
第 一部分 召回算法
第 2章 協同過濾 22
2.1 算法套用 24
2.2 算法原理 25
2.2.1 打分機制 26
2.2.2 物品相似度 31
2.3 算法實現 33
2.3.1 步驟1:數據源讀取 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 算法最佳化 37
2.4.1 無效用戶過濾 38
2.4.2 熱門懲罰 38
2.5 完整代碼 39
2.6 準實時更新 42
2.6.1 數據準備 43
2.6.2 實時數據取數邏輯 44
2.6.3 準實時更新相似度 44
2.7 總催腳局結 45
第3章 關聯規則 47
3.1 關聯規則 48
3.1.1 定義 49
3.1.2 頻繁項集 50
3.2 Apriori算法 51
3.2.1 頻繁項集生成 51
3.2.2 關聯規則生成 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 數據集 69
3.3.7 源碼分析 70
3.3.8 算法最佳化 76
3.4 總結 77
第4章 Word2Vec 78
4.1 詞向量示例 80
4.2 數據店殃棄準備 81
4.2.1 辭彙表 82
4.2.2 訓練數據 82
4.3 算法原理 83
4.3.1 模型結構 85
4.3.2 前向傳播 86
4.3.3 反向傳播 88
4.3.4 算法最佳化 89
4.4 源碼分析 91
4.4.1 負採樣機率表 91
4.4.2 sigmoid函式最佳化 93
4.5 算法實戰 93
4.5.1 數據源 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 數據準備 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分數 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 代碼實現 144
6.5.1 實現邏輯 145
6.5.2 完整代碼 146
6.6 總結 149
第二部分 排序算法
第7章 特徵工程和特徵選禁樂請甩擇 153
7.1 特榆匪征類型 155
7.1.1 類別特徵 155
7.1.2 數值特徵 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章 傳統機器學習排序算法 168
8.1 數據和模型 168
8.1.1 極大似然估計 169
8.1.2 後驗機率估計 169
8.2 模型訓練流程 170
8.3 手寫邏輯回歸 171
8.3.1 數據準備 172
8.3.2 數據讀取 173
8.3.3 模型訓練 173
8.3.4 完整代碼 174
8.3.5 算法優缺點 177
8.4 手寫因式分解機 178
8.4.1 完整代碼 180
8.4.2 算法優缺點 183
8.5 其他經典排序算法 184
8.6 Q & A 185
8.7 總結 186
第9章 深度學習從訓練到對外服務 188
9.1 深度學習簡介 188
9.2 經典模型結構 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 數據準備 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從原理到實現 221
10.1 Listwise基本概念 222
10.1.1 page view 222
10.1.2 relevance 223
10.1.3 Listwise 223
10.2 損失函式 224
10.2.1 permutation probability 224
10.2.2 top one probability 226
10.2.3 交叉熵損失函式 227
10.3 ListNet 228
10.3.1 數據準備 229
10.3.2 模型搭建 236
10.3.3 模型訓練、導出和服務 243
10.3.4 最佳化方向 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 數據分布不一致 268
11.3.3 模型與業務目標不一致 268
11.3.4 驗證集設計不合理 268
11.4 總結 270
第 12章 推薦算法建模實踐 271
12.1 深度學習調參 272
12.1.1 學習率 272
12.1.2 batch size 279
12.1.3 epoch 279
12.1.4 隱藏層數 280
12.1.5 隱藏節點數 280
12.1.6 激活函式 280
12.1.7 權重初始化 280
12.1.8 最佳化器 281
12.1.9 其他實踐 281
12.2 現實數據問題 281
12.2.1 類別失衡 282
12.2.2 位置偏差 286
12.2.3 海量數據下的調參 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 基於內容的過濾 296
13.3.2 推薦策略 299
13.4 系統冷啟動 301
13.5 總結 306
第 14章 增量更新和遷移學習 307
14.1 離線訓練 307
14.1.1 數據流向 307
14.1.2 更新方式 308
14.2 線上訓練 310
14.2.1 數據流向 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 數據並行 324
15.3 參數共享與更新 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 數據準備 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 數據問題 348
16.2.2 訓練問題 349
16.3 詳細設計 350
16.3.1 配置解析 351
16.3.2 數據讀取 352
16.3.3 模型搭建 352
16.3.4 完整流程 353
16.4 代碼實現 353
16.4.1 配置解析 354
16.4.2 特徵處理 359
16.5 總結 362
第 17章 回顧和探索 363
17.1 回顧 363
17.2 探索 364
17.2.1 數據 364
17.2.2 算法 366
17.2.3 平台 367
17.2.4 安全 367
17.3 總結 368
作者簡介
阿星曾在位元組跳動、蘇寧易購等企業負責推薦/廣告算法的設計、開發和最佳化工作,在應對海量數據下的算法建模以及點擊率/轉化率預估等任務中積累了大量實戰經驗。目前就職於跨境電商巨頭SHEIN,負責提升全球核心業務場景的流量分發效率。
7.4 總結 167
第8章 傳統機器學習排序算法 168
8.1 數據和模型 168
8.1.1 極大似然估計 169
8.1.2 後驗機率估計 169
8.2 模型訓練流程 170
8.3 手寫邏輯回歸 171
8.3.1 數據準備 172
8.3.2 數據讀取 173
8.3.3 模型訓練 173
8.3.4 完整代碼 174
8.3.5 算法優缺點 177
8.4 手寫因式分解機 178
8.4.1 完整代碼 180
8.4.2 算法優缺點 183
8.5 其他經典排序算法 184
8.6 Q & A 185
8.7 總結 186
第9章 深度學習從訓練到對外服務 188
9.1 深度學習簡介 188
9.2 經典模型結構 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 數據準備 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從原理到實現 221
10.1 Listwise基本概念 222
10.1.1 page view 222
10.1.2 relevance 223
10.1.3 Listwise 223
10.2 損失函式 224
10.2.1 permutation probability 224
10.2.2 top one probability 226
10.2.3 交叉熵損失函式 227
10.3 ListNet 228
10.3.1 數據準備 229
10.3.2 模型搭建 236
10.3.3 模型訓練、導出和服務 243
10.3.4 最佳化方向 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 數據分布不一致 268
11.3.3 模型與業務目標不一致 268
11.3.4 驗證集設計不合理 268
11.4 總結 270
第 12章 推薦算法建模實踐 271
12.1 深度學習調參 272
12.1.1 學習率 272
12.1.2 batch size 279
12.1.3 epoch 279
12.1.4 隱藏層數 280
12.1.5 隱藏節點數 280
12.1.6 激活函式 280
12.1.7 權重初始化 280
12.1.8 最佳化器 281
12.1.9 其他實踐 281
12.2 現實數據問題 281
12.2.1 類別失衡 282
12.2.2 位置偏差 286
12.2.3 海量數據下的調參 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 基於內容的過濾 296
13.3.2 推薦策略 299
13.4 系統冷啟動 301
13.5 總結 306
第 14章 增量更新和遷移學習 307
14.1 離線訓練 307
14.1.1 數據流向 307
14.1.2 更新方式 308
14.2 線上訓練 310
14.2.1 數據流向 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 數據並行 324
15.3 參數共享與更新 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 數據準備 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 數據問題 348
16.2.2 訓練問題 349
16.3 詳細設計 350
16.3.1 配置解析 351
16.3.2 數據讀取 352
16.3.3 模型搭建 352
16.3.4 完整流程 353
16.4 代碼實現 353
16.4.1 配置解析 354
16.4.2 特徵處理 359
16.5 總結 362
第 17章 回顧和探索 363
17.1 回顧 363
17.2 探索 364
17.2.1 數據 364
17.2.2 算法 366
17.2.3 平台 367
17.2.4 安全 367
17.3 總結 368
作者簡介
阿星曾在位元組跳動、蘇寧易購等企業負責推薦/廣告算法的設計、開發和最佳化工作,在應對海量數據下的算法建模以及點擊率/轉化率預估等任務中積累了大量實戰經驗。目前就職於跨境電商巨頭SHEIN,負責提升全球核心業務場景的流量分發效率。