●第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 README 29
3.1.2 ratings.dat 29
3.1.3 movies.dat 31
3.1.4 users.dat 34
3.2 Book-Crossings數據集 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數據集 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數據集 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 數據集 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 知識導圖 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.fm 161
6.1.2 Delicious 162
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 在線實驗方式――ABTest 272
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
本書是一本關於推薦繫統從入門到進階的讀物,采用“理論+實踐”的形式展開,不僅對各種推薦算法進行了介紹,還對算法所涉及的基礎理論知識進行了補充。
全書共分為3篇:
第1篇是“推薦繫統的背景介紹和入門”,包括走進推薦繫統、搭建你的一個推薦繫統和推薦繫統常用數據集介紹;
第2篇是“推薦繫統涉及的算法介紹、冷啟動和效果評估”,包括數據挖掘——讓推薦繫統更懂你、基於用戶行為特征的推薦、基於標簽的推薦、基於上下文的推薦、基於點擊率預估的推薦、推薦繫統中的冷啟動和推薦繫統中的效果評估;
第3篇是“推薦繫統實例”,包括搭建一個新聞推薦繫統、搭建一個音樂推薦繫統、搭建一個圖書推薦繫統和業界推薦繫統架構介紹。
書中的實例開發幾乎都是基於公開的數據集進行的,當然也涉及一些網絡中獲取的數據,其最終目的都是讓讀者能夠更好地理解推薦算法,更直觀地認識推薦繫統等