內容提要
《Python機器學習算法》是一本機器學習入門讀物,注重理論與實踐的結合。全書主要包括6個部分,每個部分均以典型的機器學習算法為例,從算法原理出發,由淺入深,詳細介紹算法的理論,並配合目前流行的Python語言,從零開始,實現每一個算法,以加強對機器學習算法理論的理解、增強實際的算法實踐能力,最終達到熟練掌握每一個算法的目的。與其他機器學習類圖書相比,《Python機器學習算法》同時包含算法理論的介紹和算法的實踐,以理論支撐實踐,同時,又將複雜、枯燥的理論用簡單易懂的形式表達出來,促進對理論的理解。
目錄
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