過程完整:從基本原理到實際項目開發(fā) 實例豐富:將理論學(xué)習(xí)落實到具體實踐(共34個實例)簡潔流暢:采用短段、短句,讀來有順流而下般流暢感實戰(zhàn)性強:搭建新聞推薦系統(tǒng)、音樂推薦系統(tǒng)、圖書推薦系統(tǒng)學(xué)習(xí)無憂:免費提供書中用到的素材和源代碼后繼服務(wù):讀者可加入本書QQ學(xué)習(xí)群在線交流
現(xiàn)就職于京東,任職算法工程師,一直從事于推薦系統(tǒng)相關(guān)的研究和開發(fā)工作,對推薦排序、深度學(xué)習(xí)、強化學(xué)習(xí)具有濃厚興趣,擅長推薦排序、Spark、深度學(xué)習(xí)。
?
====第1篇 推薦系統(tǒng)的背景介紹和入門
∣
第1章 走進推薦系統(tǒng) 2
1.1 從“啤酒與尿布”到推薦系統(tǒng)的前世今生 2
∣1.1.1 “啤酒與尿布” 2
∣1.1.2 推薦系統(tǒng)的前世今生 2
1.2 推薦系統(tǒng)可以做什么 4
∣1.2.1 什么是推薦系統(tǒng) 4
∣1.2.2 在電商類產(chǎn)品中的應(yīng)用 5
∣1.2.3 在社交類產(chǎn)品中的應(yīng)用 6
∣1.2.4 在音樂類產(chǎn)品中的應(yīng)用 8
∣1.2.5 在視頻類產(chǎn)品中的應(yīng)用 9
∣1.2.6 在閱讀類產(chǎn)品中的應(yīng)用 10
∣1.2.7 在服務(wù)類產(chǎn)品中的應(yīng)用 11
1.3 學(xué)習(xí)本書需要的技能 12
∣1.3.1 Python基礎(chǔ) 12
∣1.3.2 數(shù)據(jù)結(jié)構(gòu) 14
∣1.3.3 工程能力 15
1.4 如何學(xué)習(xí)本書 17
1.5 知識導(dǎo)圖 17
第2章 搭建你的第一個推薦系統(tǒng) 19
2.1 實例1:搭建電影推薦系統(tǒng) 19
∣2.1.1 利用Netflix數(shù)據(jù)集準(zhǔn)備數(shù)據(jù) 19
∣2.1.2 使用Python表示數(shù)據(jù) 21
∣2.1.3 選擇相似用戶 23
∣2.1.4 為用戶推薦相似用戶喜歡的電影 24
∣2.1.5 分析效果 25
2.2 總結(jié):搭建推薦系統(tǒng)的一般步驟 26
∣2.2.1 準(zhǔn)備數(shù)據(jù) 26
∣2.2.2 選擇算法 27
∣2.2.3 模型訓(xùn)練 28
∣2.2.4 效果評估 28
2.3 知識導(dǎo)圖 28
第3章 推薦系統(tǒng)常用數(shù)據(jù)集介紹 29
3.1 MovieLens數(shù)據(jù)集 29
∣3.1.1 README 29
∣3.1.2 ratings.dat 29
∣3.1.3 movies.dat 31
∣3.1.4 users.dat 34
3.2 Book-Crossings數(shù)據(jù)集 36
∣3.2.1 BX-Book-Ratings.csv 37
∣3.2.2 BX-Books.csv 39
∣3.2.3 BX-Users.csv 39
3.3 Last.fm數(shù)據(jù)集 41
∣3.3.1 README 41
∣3.3.2 artists.dat 41
∣3.3.3 tags.dat 41
∣3.3.4 user_artists.dat 42
∣3.3.5 user_friends.dat 42
∣3.3.6 uses_taggedartists.dat 42
∣3.3.7 user_taggedartists-timestamps.dat 42
3.4 FourSquare數(shù)據(jù)集 43
∣3.4.1 users.dat 43
∣3.4.2 venues.dat 44
∣3.4.3 checkins.dat 44
∣3.4.4 socialgraph.dat 44
∣3.4.5 ratings.dat 45
3.5 Kaggle比賽之retailrocket 數(shù)據(jù)集 46
∣3.5.1 events.csv 47
∣3.5.2 category_tree.csv 49
∣3.5.3 item_properties.csv 49
3.6 場景分析 49
3.7 知識導(dǎo)圖 50
∣
===第2篇 推薦系統(tǒng)涉及的算法介紹、冷啟動和效果評估
∣
第4章 數(shù)據(jù)挖掘——讓推薦系統(tǒng)更懂你 52
4.1 數(shù)據(jù)預(yù)處理 52
∣4.1.1 數(shù)據(jù)標(biāo)準(zhǔn)化 52
∣4.1.2 實例2:實現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化 54
∣4.1.3 數(shù)據(jù)離散化 56
∣4.1.4 實例3:基于信息熵的數(shù)據(jù)離散化 58
∣4.1.5 數(shù)據(jù)抽樣 61
∣4.1.6 數(shù)據(jù)降維 63
∣4.1.7 實例4:對鳶尾花數(shù)據(jù)集特征進行降維 66
∣4.1.8 數(shù)據(jù)清理 68
∣4.1.9 相似度計算 71
4.2 數(shù)據(jù)分類 74
∣4.2.1 K最近鄰算法 74
∣4.2.2 實例5:利用KNN算法實現(xiàn)性別判定 75
∣4.2.3 決策樹算法 77
∣4.2.4 實例6:構(gòu)建是否舉辦活動的決策樹 80
∣4.2.5 樸素貝葉斯算法 84
∣4.2.6 實例7:基于樸素貝葉斯算法進行異常賬戶檢測 87
∣4.2.7 分類器的評估 90
∣4.2.8 實例8:scikit-learn中的分類效果評估 92
4.3 數(shù)據(jù)聚類 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 關(guān)聯(lián)分析 103
∣4.4.1 Apriori算法 103
∣4.4.2 實例12:基于Apriori算法實現(xiàn)頻繁項集和相關(guān)規(guī)則挖掘 106
4.5 知識導(dǎo)圖 110
∣
第5章 基于用戶行為特征的推薦 111
5.1 用戶行為分類 111
5.2 基于內(nèi)容的推薦算法 112
∣5.2.1 算法原理——從“構(gòu)造特征”到“判斷用戶是否喜歡” 112
∣5.2.2 實例13:對手機屬性進行特征建模 115
5.3 實例14:編寫一個基于內(nèi)容推薦算法的電影推薦系統(tǒng) 117
∣5.3.1 了解實現(xiàn)思路 117
∣5.3.2 準(zhǔn)備數(shù)據(jù) 119
∣5.3.3 選擇算法 122
∣5.3.4 模型訓(xùn)練 122
∣5.3.5 效果評估 123
5.4 基于近鄰的推薦算法 124
∣5.4.1 UserCF算法的原理——先“找到相似同戶”,再“找到他們喜歡的物品” 124
∣5.4.2 ItemCF算法的原理——先“找到用戶喜歡的物品”,再“找到喜歡物品的相似物品” 131
5.5 實例15:編寫一個基于UserCF算法的電影推薦系統(tǒng) 137
∣5.5.1 了解實現(xiàn)思路 138
∣5.5.2 準(zhǔn)備數(shù)據(jù) 138
∣5.5.3 選擇算法 138
∣5.5.4 模型訓(xùn)練 138
∣5.5.5 效果評估 141
5.6 實例16:編寫一個基于ItemCF算法的電影推薦系統(tǒng) 141
∣5.6.1 了解實現(xiàn)思路 141
∣5.6.2 準(zhǔn)備數(shù)據(jù) 142
∣5.6.3 選擇算法 142
∣5.6.4 模型訓(xùn)練 142
∣5.6.5 效果評估 144
5.7 對比分析:UserCF算法和ItemCF算法 145
5.8 對比分析:基于內(nèi)容和基于近鄰 146
5.9 基于隱語義模型的推薦算法 147
∣5.9.1 LFM概述 147
∣5.9.2 LFM算法理解 148
∣5.10 實例17:編寫一個基于LFM的電影推薦系統(tǒng) 152
∣5.10.1 了解實現(xiàn)思路 152
∣5.10.2 準(zhǔn)備數(shù)據(jù) 152
∣5.10.3 選擇算法 154
∣5.10.4 模型訓(xùn)練 155
∣5.10.5 效果評估 158
5.11 知識導(dǎo)圖 159
∣
第6章 基于標(biāo)簽的推薦 161
6.1 基于標(biāo)簽系統(tǒng)的應(yīng)用 161
∣6.1.1 Last.fm 161
∣6.1.2 Delicious 162
∣6.1.3 豆瓣 163
∣6.1.4 網(wǎng)易云音樂 163
6.2 數(shù)據(jù)標(biāo)注與關(guān)鍵詞提取 165
∣6.2.1 推薦系統(tǒng)中的數(shù)據(jù)標(biāo)注 165
∣6.2.2 推薦系統(tǒng)中的關(guān)鍵詞提取 167
∣6.2.3 標(biāo)簽的分類 168
6.3 實例18:基于TF-IDF算法提取商品標(biāo)題的關(guān)鍵詞 169
∣6.3.1 了解TF-IDF算法 169
∣6.3.2 認識商品標(biāo)題描述 170
∣6.3.3 提取關(guān)鍵詞 170
6.4 基于標(biāo)簽的推薦系統(tǒng) 174
∣6.4.1 標(biāo)簽評分算法 174
∣6.4.2 標(biāo)簽評分算法改進 176
∣6.4.3 標(biāo)簽基因 177
∣6.4.4 用戶興趣建模 177
6.5 實例19:利用標(biāo)簽推薦算法實現(xiàn)藝術(shù)家的推薦 178
∣6.5.1 了解實現(xiàn)思路 178
∣6.5.2 準(zhǔn)備數(shù)據(jù) 178
∣6.5.3 選擇算法 179
∣6.5.4 模型訓(xùn)練 179
∣6.5.5 效果評估 182
6.6 知識導(dǎo)圖 182
∣
第7章 基于上下文的推薦 184
7.1 基于時間特征的推薦 184
∣7.1.1 時間效應(yīng)介紹 184
∣7.1.2 時間效應(yīng)分析 187
∣7.1.3 推薦系統(tǒng)的實時性 194
∣7.1.4 協(xié)同過濾中的時間因子 195
7.2 實例20:實現(xiàn)一個“增加時間衰減函數(shù)的協(xié)同過濾算法” 197
∣7.2.1 在UserCF算法中增加時間衰減函數(shù) 197
∣7.2.2 在ItemCF算法中增加時間衰減函數(shù) 199
7.3 基于地域和熱度特征的推薦 200
∣7.3.1 為什么要將地域和熱度特征放在一起 201
∣7.3.2 解讀LARS中的地域特征 202
∣7.3.3 基于地域和熱度的推薦算法 204
7.4 實例21:創(chuàng)建一個基于地域和熱度的酒店推薦系統(tǒng) 206
∣7.4.1 了解實現(xiàn)思路 206
∣7.4.2 準(zhǔn)備數(shù)據(jù) 207
∣7.4.3 選擇算法 207
∣7.4.4 模型訓(xùn)練 207
∣7.4.5 效果評估 210
∣7.5 其他上下文信息 210
7.6 知識導(dǎo)圖 210
∣
第8章 基于點擊率預(yù)估的推薦 212
8.1 傳統(tǒng)推薦算法的局限和應(yīng)用 212
∣8.1.1 傳統(tǒng)推薦算法的局限 212
∣8.1.2 傳統(tǒng)推薦算法的應(yīng)用 213
8.2 點擊率預(yù)估在推薦系統(tǒng)中的應(yīng)用 214
8.3 集成學(xué)習(xí) 214
∣8.3.1 集成學(xué)習(xí)概述 215
∣8.3.2 Boosting算法(提升法) 215
∣8.3.3 Bagging算法(自助法) 216
∣8.3.4 Stacking算法(融合法) 217
8.4 導(dǎo)數(shù)、偏導(dǎo)數(shù)、方向?qū)?shù)、梯度 217
∣8.4.1 導(dǎo)數(shù) 217
∣8.4.2 偏導(dǎo)數(shù) 217
∣8.4.3 方向?qū)?shù) 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算法預(yù)估電信客戶流失 227
∣8.6.1 了解實現(xiàn)思路 227
∣8.6.2 準(zhǔn)備數(shù)據(jù) 229
∣8.6.3 選擇算法 232
∣8.6.4 模型訓(xùn)練 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函數(shù) 237
∣8.8.2 LR為什么要使用Sigmoid函數(shù) 239
∣8.8.3 LR的算法原理分析 240
8.9 實例23:基于LR算法預(yù)估電信客戶流失 241
∣8.9.1 準(zhǔn)備數(shù)據(jù) 242
∣8.9.2 選擇算法 242
∣8.9.3 模型訓(xùn)練 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算法預(yù)估電信客戶流失 247
∣8.11.1 準(zhǔn)備數(shù)據(jù) 247
∣8.11.2 選擇算法 247
∣8.11.3 模型訓(xùn)練 247
∣8.11.4 效果評估 248
8.12 知識導(dǎo)圖 251
∣
第9章 推薦系統(tǒng)中的冷啟動 252
9.1 冷啟動介紹 252
∣9.1.1 冷啟動的分類 252
∣9.1.2 冷啟動的幾種實現(xiàn)方法 252
9.2 基于熱門數(shù)據(jù)推薦實現(xiàn)冷啟動 253
9.3 利用用戶注冊信息實現(xiàn)冷啟動 254
∣9.3.1 注冊信息分析 254
∣9.3.2 實例25:分析Book-Crossings數(shù)據(jù)集中的共性特征 255
∣9.3.3 實現(xiàn)原理 261
9.4 利用用戶上下文信息實現(xiàn)冷啟動 261
∣9.4.1 設(shè)備信息特征 262
∣9.4.2 時間地域信息特征 262
∣9.4.3 實現(xiàn)原理 262
9.5 利用第三方數(shù)據(jù)實現(xiàn)冷啟動 263
9.6 利用用戶和系統(tǒng)之間的交互實現(xiàn)冷啟動 263
∣9.6.1 實現(xiàn)原理 263
∣9.6.2 推薦系統(tǒng)中實時交互的應(yīng)用 265
∣9.6.3 實例26:用戶實時交互推薦系統(tǒng)設(shè)計 266
9.7 利用物品的內(nèi)容屬性實現(xiàn)冷啟動 267
∣9.7.1 物品內(nèi)容屬性分析 267
∣9.7.2 物品信息的使用 268
9.8 利用專家標(biāo)注數(shù)據(jù)實現(xiàn)冷啟動 269
9.9 知識導(dǎo)圖 270
∣
第10章 推薦系統(tǒng)中的效果評估 271
10.1 用戶調(diào)研 271
10.2 在線評估 272
10.3 在線實驗方式——ABTest 272
∣10.3.1 ABTest介紹 272
∣10.3.2 ABTest流程 272
∣10.3.3 ABTest的注意事項 273
10.4 在線評估指標(biāo) 274
∣10.4.1 點擊率 275
∣10.4.2 轉(zhuǎn)化率 275
∣10.4.3 網(wǎng)站成交額 275
10.5 離線評估 276
10.6 拆分?jǐn)?shù)據(jù)集 276
∣10.6.1 留出法 277
∣10.6.2 K-折交叉驗證法 277
∣10.6.3 自助法 277
∣10.6.4 實例27:使用sklearn包中的train_test_split()函數(shù)進行數(shù)據(jù)集拆分 278
∣10.6.5 實例28:使用sklearn包中的KFold()函數(shù)產(chǎn)生交叉驗證數(shù)據(jù)集 280
∣10.6.6 實例29:使用sklearn包中的cross_validate()函數(shù)演示交叉驗證 281
10.7 離線評估指標(biāo) 282
∣10.7.1 準(zhǔn)確度指標(biāo)之預(yù)測分類準(zhǔn)確度指標(biāo) 282
∣10.7.2 實例30:使用sklearn包中的metrics類預(yù)測分類準(zhǔn)確度 288
∣10.7.3 準(zhǔn)確度指標(biāo)之預(yù)測評分準(zhǔn)確度指標(biāo) 290
∣10.7.4 實例31:使用sklearn包中的metrics類預(yù)測評分準(zhǔn)確度 290
∣10.7.5 準(zhǔn)確度指標(biāo)之預(yù)測評分關(guān)聯(lián)指標(biāo) 291
∣10.7.6 準(zhǔn)確度指標(biāo)之排序準(zhǔn)確度指標(biāo) 292
∣10.7.7 非準(zhǔn)確度指標(biāo) 292
10.8 知識導(dǎo)圖 296
∣
===第3篇 推薦系統(tǒng)實例
∣第11章 實例32:搭建一個新聞推薦系統(tǒng) 298
11.1 準(zhǔn)備數(shù)據(jù) 298
11.2 預(yù)處理數(shù)據(jù) 298
∣11.2.1 原始數(shù)據(jù)加工 298
∣11.2.2 新聞熱度值計算 299
∣11.2.3 新聞相似度計算 300
∣11.2.4 指定標(biāo)簽下的新聞統(tǒng)計 302
11.3 設(shè)計架構(gòu) 303
11.4 實現(xiàn)系統(tǒng) 304
∣11.4.1 準(zhǔn)備環(huán)境 304
∣11.4.2 實現(xiàn)后端接口 304
∣11.4.3 實現(xiàn)前端界面 309
∣11.4.4 系統(tǒng)演示 309
11.5 代碼復(fù)現(xiàn) 311
∣11.5.1 安裝依賴 311
∣11.5.2 數(shù)據(jù)入庫 312
∣11.5.3 修改配置 312
∣11.5.4 項目啟動 312
11.6 知識導(dǎo)圖 312
∣
第12章 實例33:搭建一個音樂推薦系統(tǒng) 314
12.1 準(zhǔn)備數(shù)據(jù) 314
12.2 預(yù)處理數(shù)據(jù) 314
∣12.2.1 計算歌曲、歌手、用戶相似度 314
∣12.2.2 計算用戶推薦集 315
∣12.2.3 數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫 319
12.3 設(shè)計架構(gòu) 321
12.4 實現(xiàn)系統(tǒng) 322
∣12.4.1 準(zhǔn)備環(huán)境 322
∣12.4.2 實現(xiàn)后端接口 322
∣12.4.3 實現(xiàn)前端界面 324
∣12.4.4 系統(tǒng)演示 324
12.5 代碼復(fù)現(xiàn) 327
∣12.5.1 安裝依賴 327
∣12.5.2 數(shù)據(jù)入庫 327
∣12.5.3 修改配置 327
∣12.5.4 項目啟動 328
12.6 知識導(dǎo)圖 328
∣
第13章 實例34:搭建一個圖書推薦系統(tǒng) 329
13.1 準(zhǔn)備數(shù)據(jù) 329
13.2 預(yù)處理數(shù)據(jù) 329
∣13.2.1 原始數(shù)據(jù)加工 329
∣13.2.2 數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫 331
∣13.2.3 模型準(zhǔn)備 331
13.3 設(shè)計架構(gòu) 332
13.4 實現(xiàn)系統(tǒng) 333
∣13.4.1 準(zhǔn)備環(huán)境 333
∣13.4.2 實現(xiàn)后端接口 333
∣13.4.3 實現(xiàn)前端界面 336
∣13.4.4 系統(tǒng)演示 336
13.5 代碼復(fù)現(xiàn) 338
13.6 知識導(dǎo)圖 338
∣
第14章 業(yè)界推薦系統(tǒng)架構(gòu)介紹 340
14.1 概述 340
14.2 架構(gòu)介紹 340
14.3 召回內(nèi)容 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 知識導(dǎo)圖 345