0 緒論 1
0.1 機器學習基礎 1
0.1.1 機器學習的概念 1
0.1.2 機器學習算法的分類 2
0.2 監督學習 3
0.2.1 監督學習 3
0.2.2 監督學習的流程 3
0.2.3 監督學習算法 4
0.3 無監督學習 4
0.3.1 無監督學習 4
0.3.2 無監督學習的流程 4
0.3.3 無監督學習算法 5
0.4 推薦係統和深度學習 6
0.4.1 推薦係統 6
0.4.2 深度學習 6
0.5 Python和機器學習算法實踐 6
參考文獻 7
第一部分 分類算法
1 Logistic Regression 10
1.1 Logistic Regression模型 10
1.1.1 綫性可分VS綫性不可分 10
1.1.2 Logistic Regression模型 11
1.1.3 損失函數 13
1.2 梯度下降法 14
1.2.1 梯度下降法的流程 14
1.2.2 凸優化與非凸優化 15
1.2.3 利用梯度下降法訓練Logistic Regression模型 17
1.3 梯度下降法的若乾問題 18
1.3.1 選擇下降的方嚮 18
1.3.2 步長的選擇 19
1.4 Logistic Regression算法實踐 20
1.4.1 利用訓練樣本訓練Logistic Regression模型 20
1.4.2 最終的訓練效果 22
1.4.3 對新數據進行預測 23
參考文獻 26
2 Softmax Regression 27
2.1 多分類問題 27
2.2 Softmax Regression算法模型 28
2.2.1 Softmax Regression模型 28
2.2.2 Softmax Regression算法的代價函數 28
2.3 Softmax Regression算法的求解 29
2.4 Softmax Regression與Logistic Regression的關係 31
2.4.1 Softmax Regression中的參數特點 31
2.4.2 由Softmax Regression到Logistic Regression 31
2.5 Softmax Regression算法實踐 32
2.5.1 對Softmax Regression算法的模型進行訓練 33
2.5.2 最終的模型 34
2.5.3 對新的數據的預測 35
參考文獻 39
3 Factorization Machine 40
3.1 Logistic Regression算法的不足 40
3.2 因子分解機FM的模型 42
3.2.1 因子分解機FM模型 42
3.2.2 因子分解機FM可以處理的問題 43
3.2.3 二分類因子分解機FM算法的損失函數 43
3.3 FM算法中交叉項的處理 43
3.3.1 交叉項係數 43
3.3.2 模型的求解 44
3.4 FM算法的求解 45
3.4.1 隨機梯度下降(Stochastic Gradient Descent) 45
3.4.2 基於隨機梯度的方式求解 45
3.4.3 FM算法流程 46
3.5 因子分解機FM算法實踐 49
3.5.1 訓練FM模型 50
3.5.2 最終的訓練效果 53
3.5.3 對新的數據進行預測 55
參考文獻 57
4 支持嚮量機 58
4.1 二分類問題 58
4.1.1 二分類的分隔超平麵 58
4.1.2 感知機算法 59
4.1.3 感知機算法存在的問題 61
4.2 函數間隔和幾何間隔 61
4.2.1 函數間隔 62
4.2.2 幾何間隔 62
4.3 支持嚮量機 63
4.3.1 間隔最大化 63
4.3.2 支持嚮量和間隔邊界 64
4.3.3 綫性支持嚮量機 65
4.4 支持嚮量機的訓練 66
4.4.1 學習的對偶算法 66
4.4.2 由綫性支持嚮量機到非綫性支持嚮量機 68
4.4.3 序列最小最優化算法SMO 69
4.5 支持嚮量機SVM算法實踐 74
4.5.1 訓練SVM模型 74
4.5.2 利用訓練樣本訓練SVM模型 81
4.5.3 利用訓練好的SVM模型對新數據進行預測 85
參考文獻 88
5 隨機森林 89
5.1 決策樹分類器 89
5.1.1 決策樹的基本概念 89
5.1.2 選擇最佳劃分的標準 91
5.1.3 停止劃分的標準 94
5.2 CART分類樹算法 95
5.2.1 CART分類樹算法的基本原理 95
5.2.2 CART分類樹的構建 95
5.2.3 利用構建好的分類樹進行預測 98
5.3 集成學習(Ensemble Learning) 99
5.3.1 集成學習的思想 99
5.3.2 集成學習中的典型方法 99
5.4 隨機森林(Random Forests) 101
5.4.1 隨機森林算法模型 101
5.4.2 隨機森林算法流程 102
5.5 隨機森林RF算法實踐 104
5.5.1 訓練隨機森林模型 105
5.5.2 最終的訓練結果 109
5.5.3 對新數據的預測 110
參考文獻 113
6 BP神經網絡 114
6.1 神經元概述 114
6.1.1 神經元的基本結構 114
6.1.2 激活函數 115
6.2 神經網絡模型 116
6.2.1 神經網絡的結構 116
6.2.2 神經網絡中的參數說明 117
6.2.3 神經網絡的計算 117
6.3 神經網絡中參數的求解 118
6.3.1 神經網絡損失函數 118
6.3.2 損失函數的求解 119
6.3.3 BP神經網絡的學習過程 120
6.4 BP神經網絡中參數的設置 126
6.4.1 非綫性變換 126
6.4.2 權重嚮量的初始化 126
6.4.3 學習率 127
6.4.4 隱含層節點的個數 127
6.5 BP神經網絡算法實踐 127
6.5.1 訓練BP神經網絡模型 128
6.5.2 最終的訓練效果 132
6.5.3 對新數據的預測 133
參考文獻 136
第二部分 迴歸算法
7 綫性迴歸 138
7.1 基本綫性迴歸 138
7.1.1 綫性迴歸的模型 138
7.1.2 綫性迴歸模型的損失函數 139
7.2 綫性迴歸的最小二乘解法 140
7.2.1 綫性迴歸的最小二乘解法 140
7.2.2 廣義逆的概念 141
7.3 牛頓法 141
7.3.1 基本牛頓法的原理 141
7.3.2 基本牛頓法的流程 142
7.3.3 全局牛頓法 142
7.3.4 Armijo搜索 144
7.3.5 利用全局牛頓法求解綫性迴歸模型 145
7.4 利用綫性迴歸進行預測 146
7.4.1 訓練綫性迴歸模型 147
7.4.2 最終的訓練結果 149
7.4.3 對新數據的預測 150
7.5 局部加權綫性迴歸 152
7.5.1 局部加權綫性迴歸模型 152
7.5.2 局部加權綫性迴歸的最終結果 153
參考文獻 154
8 嶺迴歸和Lasso迴歸 155
8.1 綫性迴歸存在的問題 155
8.2 嶺迴歸模型 156
8.2.1 嶺迴歸模型 156
8.2.2 嶺迴歸模型的求解 156
8.3 Lasso迴歸模型 157
8.4 擬牛頓法 158
8.4.1 擬牛頓法 158
8.4.2 BFGS校正公式的推導 158
8.4.3 BFGS校正的算法流程 159
8.5 L-BFGS求解嶺迴歸模型 162
8.5.1 BGFS算法存在的問題 162
8.5.2 L-BFGS算法思路 162
8.6 嶺迴歸對數據的預測 165
8.6.1 訓練嶺迴歸模型 166
8.6.2 最終的訓練結果 168
8.6.3 利用嶺迴歸模型預測新的數據 168
參考文獻 171
9 CART樹迴歸 172
9.1 復雜的迴歸問題 172
9.1.1 綫性迴歸模型 172
9.1.2 局部加權綫性迴歸 173
9.1.3 CART算法 174
9.2 CART迴歸樹生成 175
9.2.1 CART迴歸樹的劃分 175
9.2.2 CART迴歸樹的構建 177
9.3 CART迴歸樹剪枝 179
9.3.1 前剪枝 179
9.3.2 後剪枝 180
9.4 CART迴歸樹對數據預測 180
9.4.1 利用訓練數據訓練CART迴歸樹模型 180
9.4.2 最終的訓練結果 182
9.4.3 利用訓練好的CART迴歸樹模型對新的數據預測 185
參考文獻 187
第三部分 聚類算法
10 K-Means 190
10.1 相似性的度量 190
10.1.1 閔可夫斯基距離 191
10.1.2 曼哈頓距離 191
10.1.3 歐氏距離 191
10.2 K-Means算法原理 192
10.2.1 K-Means算法的基本原理 192
10.2.2 K-Means算法步驟 193
10.2.3 K-Means算法與矩陣分解 193
10.3 K-Means算法實踐 195
10.3.1 導入數據 196
10.3.2 初始化聚類中心 197
10.3.3 聚類過程 198
10.3.4 最終的聚類結果 199
10.4 K-Means++算法 200
10.4.1 K-Means算法存在的問題 200
10.4.2 K-Means++算法的基本思路 202
10.4.3 K-Means++算法的過程和最終效果 204
參考文獻 205
11 Mean Shift 206
11.1 Mean Shift嚮量 206
11.2 核函數 207
11.3 Mean Shift算法原理 209
11.3.1 引入核函數的Mean Shift嚮量 209
11.3.2 Mean Shift算法的基本原理 210
11.4 Mean Shift算法的解釋 212
11.4.1 概率密度梯度 212
11.4.2 Mean Shift嚮量的修正 213
11.4.3 Mean Shift算法流程 213
11.5 Mean Shift算法實踐 217
11.5.1 Mean Shift的主過程 218
11.5.2 Mean Shift的最終聚類結果 219
參考文獻 221
12 DBSCAN 222
12.1 基於密度的聚類 222
12.1.1 基於距離的聚類算法存在的問題 222
12.1.2 基於密度的聚類算法 225
12.2 DBSCAN算法原理 225
12.2.1 DBSCAN算法的基本概念 225
12.2.2 DBSCAN算法原理 227
12.2.3 DBSCAN算法流程 228
12.3 DBSCAN算法實踐 231
12.3.1 DBSCAN算法的主要過程 232
12.3.2 Mean Shift的最終聚類結果 234
參考文獻 236
13 Label Propagation 237
13.1 社區劃分 237
13.1.1 社區以及社區劃分 237
13.1.2 社區劃分的算法 238
13.1.3 社區劃分的評價標準 239
13.2 Label Propagation算法原理 239
13.2.1 Label Propagation算法的基本原理 239
13.2.2 標簽傳播 240
13.2.3 迭代的終止條件 242
13.3 Label Propagation算法過程 244
13.4 Label Propagation算法實踐 244
13.4.1 導入數據 245
13.4.2 社區的劃分 246
13.4.3 最終的結果 247
參考文獻 248
第四部分 推薦算法
14 協同過濾算法 250
14.1 推薦係統的概述 250
14.1.1 推薦係統 250
14.1.2 推薦問題的描述 251
14.1.3 推薦的常用方法 251
14.2 基於協同過濾的推薦 252
14.2.1 協同過濾算法概述 252
14.2.2 協同過濾算法的分類 252
14.3 相似度的度量方法 253
14.3.1 歐氏距離 254
14.3.2 皮爾遜相關係數(Pearson Correlation) 254
14.3.3 餘弦相似度 254
14.4 基於協同過濾的推薦算法 256
14.4.1 基於用戶的協同過濾算法 256
14.4.2 基於項的協同過濾算法 258
14.5 利用協同過濾算法進行推薦 260
14.5.1 導入用戶-商品數據 260
14.5.2 利用基於用戶的協同過濾算法進行推薦 261
14.5.3 利用基於項的協同過濾算法進行推薦 262
參考文獻 264
15 基於矩陣分解的推薦算法 265
15.1 矩陣分解 265
15.2 基於矩陣分解的推薦算法 266
15.2.1 損失函數 266
15.2.2 損失函數的求解 266
15.2.3 加入正則項的損失函數即求解方法 267
15.2.4 預測 269
15.3 利用矩陣分解進行推薦 270
15.3.1 利用梯度下降對用戶商品矩陣分解和預測 270
15.3.2 最終的結果 272
15.4 非負矩陣分解 273
15.4.1 非負矩陣分解的形式化定義 274
15.4.2 損失函數 274
15.4.3 優化問題的求解 274
15.5 利用非負矩陣分解進行推薦 277
15.5.1 利用乘法規則進行分解和預測 277
15.5.2 最終的結果 278
參考文獻 279
16 基於圖的推薦算法 280
16.1 二部圖與推薦算法 280
16.1.1 二部圖 280
16.1.2 由用戶商品矩陣到二部圖 281
16.2 PageRank算法 282
16.2.1 PageRank算法的概念 282
16.2.2 PageRank的兩個假設 283
16.2.3 PageRank的計算方法 283
16.3 PersonalRank算法 285
16.3.1 PersonalRank算法原理 285
16.3.2 PersonalRank算法的流程 286
16.4 利用PersonalRank算法進行推薦 288
16.4.1 利用PersonalRank算法進行推薦 288
16.4.2 最終的結果 291
參考文獻 291
第五部分 深度學習
17 AutoEncoder 294
17.1 多層神經網絡 294
17.1.1 三層神經網絡模型 294
17.1.2 由三層神經網絡到多層神經網絡 295
17.2 AutoEncoder模型 296
17.2.1 AutoEncoder模型結構 296
17.2.2 AutoEncoder的損失函數 297
17.3 降噪自編碼器Denoising AutoEncoder 298
17.3.1 Denoising AutoEncoder原理 298
17.3.2 Denoising AutoEncoder實現 299
17.4 利用Denoising AutoEncoders構建深度網絡 302
17.4.1 無監督的逐層訓練 302
17.4.2 有監督的微調 303
17.5 利用TensorFlow實現Stacked Denoising AutoEncoders 306
17.5.1 訓練Stacked Denoising AutoEncoders模型 306
17.5.2 訓練的過程 307
參考文獻 308
18 捲積神經網絡 309
18.1 傳統神經網絡模型存在的問題 309
18.2 捲積神經網絡 311
18.2.1 捲積神經網絡中的核心概念 311
18.2.2 捲積神經網絡模型 312
18.3 捲積神經網絡的求解 313
18.3.1 捲積層(Convolution Layer) 313
18.3.2 下采樣層(Sub-Sampling Layer) 316
18.3.3 全連接層(Fully-Connected Layer) 316
18.4 利用TensorFlow實現CNN 316
18.4.1 CNN的實現 316
18.4.2 訓練CNN模型 320
18.4.3 訓練的過程 321
參考文獻 321
第六部分 項目實踐
19 微博精準推薦 324
19.1 精準推薦 324
19.1.1 精準推薦的項目背景 324
19.1.2 精準推薦的技術架構 325
19.1.3 離綫數據挖掘 326
19.2 基於用戶行為的挖掘 327
19.2.1 基於互動內容的興趣挖掘 327
19.2.2 基於與博主互動的興趣挖掘 328
19.3 基於相似用戶的挖掘 329
19.3.1 基於“@”人的相似用戶挖掘 329
19.3.2 基於社區的相似用戶挖掘 329
19.3.3 基於協同過濾的相似用戶挖掘 331
19.4 點擊率預估 332
19.4.1 點擊率預估的概念 332
19.4.2 點擊率預估的方法 332
19.5 各種數據技術的效果 334
參考文獻 335
附錄A 336
附錄B 341
· · · · · · (
收起)