Python與機器學習這一話題是如此的寬廣,僅靠一本書自然不可能涵蓋到方方面面,甚至即使出一個系列也難能做到這點。單就機器學習而言,其領域就包括但不限于如下:有監(jiān)督學習(Supervised Learning),無監(jiān)督學習(Unsupervised Learning)和半監(jiān)督學習(Semi-Supervised Learning)。而具體的問題又大致可以分兩類:分類問題(Classification)和回歸問題(Regression)。Python本身帶有許多機器學習的第三方庫,但《Python與機器學習實戰(zhàn):決策樹、集成學習、支持向量機與神經網絡算法詳解及編程實現(xiàn)》在絕大多數(shù)情況下只會用到Numpy這個基礎的科學計算庫來進行算法代碼的實現(xiàn)。這樣做的目的是希望讀者能夠從實現(xiàn)的過程中更好地理解機器學習算法的細節(jié),以及了解Numpy的各種應用。不過作為補充,《Python與機器學習實戰(zhàn):決策樹、集成學習、支持向量機與神經網絡算法詳解及編程實現(xiàn)》會在適當?shù)臅r候應用scikit-learn這個成熟的第三方庫中的模型。《Python與機器學習實戰(zhàn):決策樹、集成學習、支持向量機與神經網絡算法詳解及編程實現(xiàn)》適用于想了解傳統(tǒng)機器學習算法的學生和從業(yè)者,想知道如何高效實現(xiàn)機器的算法的程序員,以及想了解機器學習的算法能如何進行應用的職員、經理等。
來自北京大學數(shù)學系,有多年Python開發(fā)經驗,曾用Python開發(fā)過多款有意思的軟件。對機器學習、神經網絡、貝葉斯算法有深入研究。
目錄
第1章 Python與機器學習入門 1
1.1 機器學習緒論 1
1.1.1 什么是機器學習 2
1.1.2 機器學習常用術語 3
1.1.3 機器學習的重要性 6
1.2 人生苦短,我用Python 7
1.2.1 為何選擇Python 7
1.2.2 Python 在機器學習領域的優(yōu)勢 8
1.2.3 Anaconda的安裝與使用 8
1.3 第一個機器學習樣例 12
1.3.1 獲取與處理數(shù)據(jù) 13
1.3.2 選擇與訓練模型 14
1.3.3 評估與可視化結果 15
1.4 本章小結 17
第2章 貝葉斯分類器 18
2.1 貝葉斯學派 18
2.1.1 貝葉斯學派與頻率學派 19
2.1.2 貝葉斯決策論 19
2.2 參數(shù)估計 20
2.2.1 極大似然估計(ML估計) 21
2.2.2 極大后驗概率估計(MAP估計) 22
2.3 樸素貝葉斯 23
2.3.1 算法陳述與基本架構的搭建 23
2.3.2 MultinomialNB的實現(xiàn)與評估 31
2.3.3 GaussianNB的實現(xiàn)與評估 40
2.3.4 MergedNB的實現(xiàn)與評估 43
2.3.5 算法的向量化 50
2.4 半樸素貝葉斯與貝葉斯網 53
2.4.1 半樸素貝葉斯 53
2.4.2 貝葉斯網 54
2.5 相關數(shù)學理論 55
2.5.1 貝葉斯公式與后驗概率 55
2.5.2 離散型樸素貝葉斯算法 56
2.5.3 樸素貝葉斯和貝葉斯決策 58
2.6 本章小結 59
第3章 決策樹 60
3.1 數(shù)據(jù)的信息 60
3.1.1 信息論簡介 61
3.1.2 不確定性 61
3.1.3 信息的增益 65
3.1.4 決策樹的生成 68
3.1.5 相關的實現(xiàn) 77
3.2 過擬合與剪枝 92
3.2.1 ID3、C4.5的剪枝算法 93
3.2.2 CART剪枝 100
3.3 評估與可視化 103
3.4 相關數(shù)學理論 111
3.5 本章小結 113
第4章 集成學習 114
4.1 “集成”的思想 114
4.1.1 眾擎易舉 115
4.1.2 Bagging與隨機森林 115
4.1.3 PAC框架與Boosting 119
4.2 隨機森林算法 120
4.3 AdaBoost算法 124
4.3.1 AdaBoost算法陳述 124
4.3.2 弱模型的選擇 126
4.3.3 AdaBoost的實現(xiàn) 127
4.4 集成模型的性能分析 129
4.4.1 隨機數(shù)據(jù)集上的表現(xiàn) 130
4.4.2 異或數(shù)據(jù)集上的表現(xiàn) 131
4.4.3 螺旋數(shù)據(jù)集上的表現(xiàn) 134
4.4.4 蘑菇數(shù)據(jù)集上的表現(xiàn) 136
4.5 AdaBoost算法的解釋 138
4.6 相關數(shù)學理論 139
4.6.1 經驗分布函數(shù) 139
4.6.2 AdaBoost與前向分步加法模型 140
4.7 本章小結 142
第5章 支持向量機 144
5.1 感知機模型 145
5.1.1 線性可分性與感知機策略 145
5.1.2 感知機算法 148
5.1.3 感知機算法的對偶形式 151
5.2 從感知機到支持向量機 153
5.2.1 間隔最大化與線性SVM 154
5.2.2 SVM算法的對偶形式 158
5.2.3 SVM的訓練 161
5.3 從線性到非線性 163
5.3.1 核技巧簡述 163
5.3.2 核技巧的應用 166
5.4 多分類與支持向量回歸 180
5.4.1 一對多方法(One-vs-Rest) 180
5.4.2 一對一方法(One-vs-One) 181
5.4.3 有向無環(huán)圖方法(Directed Acyclic Graph Method) 181
5.4.4 支持向量回歸(Support Vector Regression) 182
5.5 相關數(shù)學理論 183
5.5.1 梯度下降法 183
5.5.2 拉格朗日對偶性 185
5.6 本章小結 187
第6章 神經網絡 188
6.1 從感知機到多層感知機 189
6.2 前向傳導算法 192
6.2.1 算法概述 193
6.2.2 激活函數(shù)(Activation Function) 195
6.2.3 損失函數(shù)(Cost Function) 199
6.3 反向傳播算法 200
6.3.1 算法概述 200
6.3.2 損失函數(shù)的選擇 202
6.3.3 相關實現(xiàn) 205
6.4 特殊的層結構 211
6.5 參數(shù)的更新 214
6.5.1 Vanilla Update 217
6.5.2 Momentum Update 217
6.5.3 Nesterov Momentum Update 219
6.5.4 RMSProp 220
6.5.5 Adam 221
6.5.6 Factory 222
6.6 樸素的網絡結構 223
6.7 “大數(shù)據(jù)”下的網絡結構 227
6.7.1 分批(Batch)的思想 228
6.7.2 交叉驗證 230
6.7.3 進度條 231
6.7.4 計時器 233
6.8 相關數(shù)學理論 235
6.8.1 BP算法的推導 235
6.8.2 Softmax + log-likelihood組合 238
6.9 本章小結 240
第7章 卷積神經網絡 241
7.1 從NN到CNN 242
7.1.1 “視野”的共享 242
7.1.2 前向傳導算法 243
7.1.3 全連接層(Fully Connected Layer) 250
7.1.4 池化(Pooling) 251
7.2 利用TensorFlow重寫NN 252
7.2.1 反向傳播算法 252
7.2.2 重寫Layer結構 253
7.2.3 實現(xiàn)SubLayer結構 255
7.2.4 重寫CostLayer結構 261
7.2.5 重寫網絡結構 262
7.3 將NN擴展為CNN 263
7.3.1 實現(xiàn)卷積層 263
7.3.2 實現(xiàn)池化層 266
7.3.3 實現(xiàn)CNN中的特殊層結構 267
7.3.4 實現(xiàn)LayerFactory 268
7.3.5 擴展網絡結構 270
7.4 CNN的性能 272
7.4.1 問題描述 272
7.4.2 搭建CNN模型 273
7.4.3 模型分析 280
7.4.4 應用CNN的方法 283
7.4.5 Inception 286
7.5 本章小結 289
附錄A Python入門 290
附錄B Numpy入門 303
附錄C TensorFlow入門 310