當前位置:
首頁 > 知識 > 每月好書:Python與機器學習實戰

每月好書:Python與機器學習實戰

每月好書:Python與機器學習實戰

和老規矩一樣,本月月考的獎品就是《Python與機器學習實戰》兩本。不知道什麼是月考的同學,請補習下面文章:

規則就說到這裡,下面是書籍介紹。

-----------割------------

Python與機器學習實戰

決策樹、集成學習、支持向量機與神經網路演算法詳解及編程實現(簡單的Python,可以完成複雜的機器學習演算法,跟我來吧!)

何宇健 編著

ISBN 978-7-121-31720-0

2017年7月出版

定價:69.00元

328頁

16開

編輯推薦

演算法與代碼兼顧,理論與實踐結合

很豐富:7種演算法,50段實現,55個實例,總代碼量5295行,全面而不冗餘

很紮實:對經典有效的機器學習演算法的核心內容進行了相當詳細的推導

很應用:將理論實打實地用Python代碼寫出來,可以解決一定的任務

很前沿:敘述了TensorFlow框架、Inception-v3 from Google、遷移學習等前沿技術

內容提要

Python與機器學習這一話題是如此的寬廣,僅靠一本書自然不可能涵蓋到方方面面,甚至即使出一個系列的書也難能做到這點。單就機器學習而言,其領域就包括但不限於如下:有監督學習(Supervised Learning),無監督學習(Unsupervised Learning)和半監督學習(Semi-Supervised Learning)。而其具體的問題又大致可以分為兩類:分類問題(Classification)和回歸問題(Regression)。

Python本身帶有許多機器學習的第三方庫,但《Python與機器學習實戰:決策樹、集成學習、支持向量機與神經網路演算法詳解及編程實現》在絕大多數情況下只會用到Numpy這個基礎的科學計算庫來進行演算法代碼的實現。這樣做的目的是希望讀者能夠從實現的過程中更好地理解機器學習演算法的細節,以及了解Numpy的各種應用。不過作為補充,《Python與機器學習實戰:決策樹、集成學習、支持向量機與神經網路演算法詳解及編程實現》會在適當的時候應用scikit-learn這個成熟的第三方庫中的模型。

《Python與機器學習實戰:決策樹、集成學習、支持向量機與神經網路演算法詳解及編程實現》適用於想了解傳統機器學習演算法的學生和從業者,想知道如何高效實現機器學習演算法的程序員,以及想了解機器學習演算法能如何進行應用的職員、經理等。

目錄

第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 在機器學習領域的優勢 8

1.2.3 Anaconda的安裝與使用 8

1.3 第一個機器學習樣例 12

1.3.1 獲取與處理數據 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 參數估計 20

2.2.1 極大似然估計(ML估計) 21

2.2.2 極大後驗概率估計(MAP估計) 22

2.3 樸素貝葉斯 23

2.3.1 演算法陳述與基本架構的搭建 23

2.3.2 MultinomialNB的實現與評估 31

2.3.3 GaussianNB的實現與評估 40

2.3.4 MergedNB的實現與評估 43

2.3.5 演算法的向量化 50

2.4 半樸素貝葉斯與貝葉斯網 53

2.4.1 半樸素貝葉斯 53

2.4.2 貝葉斯網 54

2.5 相關數學理論 55

2.5.1 貝葉斯公式與後驗概率 55

2.5.2 離散型樸素貝葉斯演算法 56

2.5.3 樸素貝葉斯和貝葉斯決策 58

2.6 本章小結 59

第3章 決策樹60

3.1 數據的信息 60

3.1.1 資訊理論簡介 61

3.1.2 不確定性 61

3.1.3 信息的增益 65

3.1.4 決策樹的生成 68

3.1.5 相關的實現 77

3.2 過擬合與剪枝 92

3.2.1 ID3、C4.5的剪枝演算法 93

3.2.2 CART剪枝 100

3.3 評估與可視化 103

3.4 相關數學理論 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的實現 127

4.4 集成模型的性能分析 129

4.4.1 隨機數據集上的表現 130

4.4.2 異或數據集上的表現 131

4.4.3 螺旋數據集上的表現 134

4.4.4 蘑菇數據集上的表現 136

4.5 AdaBoost演算法的解釋 138

4.6 相關數學理論 139

4.6.1 經驗分布函數 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 有向無環圖方法(Directed Acyclic Graph Method) 181

5.4.4 支持向量回歸(Support Vector Regression) 182

5.5 相關數學理論 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 激活函數(Activation Function) 195

6.2.3 損失函數(Cost Function) 199

6.3 反向傳播演算法 200

6.3.1 演算法概述 200

6.3.2 損失函數的選擇 202

6.3.3 相關實現 205

6.4 特殊的層結構 211

6.5 參數的更新 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 「大數據」下的網路結構 227

6.7.1 分批(Batch)的思想 228

6.7.2 交叉驗證 230

6.7.3 進度條 231

6.7.4 計時器 233

6.8 相關數學理論 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 實現SubLayer結構 255

7.2.4 重寫CostLayer結構 261

7.2.5 重寫網路結構 262

7.3 將NN擴展為CNN 263

7.3.1 實現卷積層 263

7.3.2 實現池化層 266

7.3.3 實現CNN中的特殊層結構 267

7.3.4 實現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

前言

自從AlphaGo在2016年3月戰勝人類圍棋頂尖高手李世石後,「人工智慧」「深度學習」這一類辭彙就進入了大眾的視野;而作為更加寬泛的一個概念——「機器學習」則多少順勢成為了從學術界到工業界都相當火熱的話題。不少人可能都想嘗試和體驗一下「機器學習」這個可以說是相當神奇的東西,不過可能又苦於不知如何下手。編著本書的目的,就是想介紹一種入門機器學習的方法。雖然市面上已經有許多機器學習的書籍,但它們大多要麼過於偏重理論,要麼過於偏重應用,要麼過於「厚重」;本書致力於將理論與實踐相結合,在講述理論的同時,利用Python這一門簡明有力的編程語言進行一系列的實踐與應用。

當然,囿於作者水平,本書實現的一些模型從速度上來說會比成熟的第三方庫中實現的模型要慢不少。一方面是因為比較好的第三方庫背後往往會用底層語言來實現核心演算法,另一方面則是本書通常會把數據預處理的過程涵蓋在模型中。以決策樹模型為例,scikit-learn中的決策樹模型會比本書的實現要快很多,但本書實現的模型能夠用scikit-learn中決策樹模型訓練不了的訓練集來訓練。

同時,限於篇幅,本書無法將所有代碼都悉數放出(事實上這樣做的意義也不是很大),所以我們會略去一些相對枯燥且和相應演算法的核心思想關係不大的實現。對於這些實現,我們會進行相應的演算法說明,感興趣的讀者可以嘗試自己一步一步地去實現,也可以直接在GitHub上面查看筆者自己實現的版本(GitHub地址會在相應的地方貼出)。本書所涉及的所有代碼都可以參見https://github.com/carefree0910/MachineLearning,筆者也建議在閱讀本書之前先把這個鏈接裡面的內容都下載下來作為參照。畢竟即使在本書收官之後,筆者仍然會不時地在上述鏈接中優化和更新相應的演算法,而這些更新是無法反映在本書中的。

雖說確實可以完全罔顧理論來用機器學習解決許多問題,但是如果想要理解背後的道理並藉此提高解決問題的效率,紮實的理論根基是必不可少的。本書會盡量避免羅列枯燥的數學公式,但是基本的公式常常不可或缺。雖然筆者想要盡量做到通俗易懂,但仍然還是需要讀者擁有一定的數學知識。不過為了閱讀體驗良好,本書通常會將比較煩瑣的數學理論及相關推導放在每一章的倒數第二節(最後一節是總結)作為某種意義上的「附加內容」。這樣做有若干好處:對於已經熟知相關理論的讀者,可以不再重複地看同樣的東西;

對於只想了解機器學習各種思想、演算法和實現的讀者,可以避免接受不必要的知識;對於想了解機器學習背後道理和邏輯的讀者,可以有一個集中的地方進行學習。

本書的特點

理論與實踐結合,在較為詳細、全面地講解理論之後,會配上相應的代碼實現以加深讀者對相應演算法的理解。

每一章都會有豐富的實例,讓讀者能夠將本書所闡述的思想和模型應用到實際任務中。

在涵蓋了諸多經典的機器學習演算法的同時,也涵蓋了許多最新的研究成果(比如最後一章所講述的卷積神經網路(CNN)可以說就是許多「深度學習」的基礎)。

所涉及的模型實現大多僅僅基於線性代數運算庫(Numpy)而沒有依賴更高級的第三方庫,讀者無須了解Python那浩如煙海的第三方庫中的任何一個便能讀懂本書的代碼。

本書的內容安排

第1章 Python與機器學習入門

本章介紹了機器學習的概念和一些基礎術語,比如泛化能力、過擬合、經驗風險(ERM)和結構風險(SRM)等,還介紹了如何安裝並使用Anaconda這一Python的科學運算環境。同時在最後,我們解決了一個小型的機器學習問題。本章內容雖不算多,卻可說是本書所有內容的根基。

第2章 貝葉斯分類器

作為和我們比較熟悉的頻率學派相異的學派,貝葉斯學派的思想相當耐人尋味,值得進行研究與體會。本章將主要介紹的樸素貝葉斯正是貝葉斯決策的一個經典應用,雖然它加了很強的假設,但其在實際應用中的表現仍然相當優異(比如自然語言處理中的文本分類)。而為了克服樸素貝葉斯假設過強的缺點,本章將簡要介紹的,諸如半樸素貝葉斯和貝葉斯網這些貝葉斯分類器會在某些領域擁有更好的性能。

第3章 決策樹

決策樹可以說是最直觀的機器學習模型之一,它多多少少擁有資訊理論的一些理論背景作為支撐。決策樹的訓練思想簡潔,模型本身可解讀性強,本章將會在介紹其生成、剪枝等一系列實現的同時,通過一些可視化來對其有更好的理解。

第4章 集成學習

真所謂「三個臭皮匠,賽過諸葛亮」。集成學習的兩大板塊「Bootstrap」和「Boosting」所對應的主流模型——「隨機森林(Random Forest)」和「AdaBoost」正是這句俗語的最佳解釋。本章在介紹相關理論與實現的同時,將通過相當多的例子來剖析集成學習的一些性質。

第5章 支持向量機

支持向量機(SVM)有著非常輝煌的歷史,它背後那套相當深刻而成熟的數學理論讓它在現代的深度學習「異軍突起」之前,佔據著相當重要的地位。本章會盡量釐清支持向量機的思想與相關的比較簡明的理論,同時會通過一些對比來體現支持向量機的優越之處。

第6章 神經網路

神經網路在近現代可以說已經成為「耳熟能詳」的辭彙了,它讓不少初次聽說其名號的人(包括筆者在內)對其充滿著各種幻想。雖說神經網路演算法的推導看上去繁複而「令人生畏」,但其實所用到的知識並不深奧。本章會相當詳細地介紹神經網路中的兩大演算法—「前向傳導演算法」和「反向傳播演算法」,同時還會介紹諸多主流的「參數更新方法」。除此之外,本章還會提及如何在「大數據」下改進和優化我們的神經網路模型(這一套思想是可以推廣到其他機器學習模型上的)。

第7章 卷積神經網路

卷積神經網路是許多深度學習的基礎結構,它可以算是神經網路的一種拓展。卷積神經網路的思想具有很好的生物學直觀性,適合處理結構性的數據。同時,利用成熟的卷積神經網路模型,我們能夠比較好地完成許多具有一定難度而相當有趣的任務;本章則會針對這些任務中的「圖像分類」任務,提出一套比較詳細的解決方案。

本書由淺入深,理論與實踐並存,同時將理論也進行了合理的分級;無論讀者在此前對機器學習有何種程度的認知,想必都能通過不同的閱讀方式有所收穫吧。

適合閱讀本書的讀者

想要了解某些傳統機器學習演算法細節的學生、老師、從業者等。

想要知道如何「從零開始」高效實現機器學習演算法的程序員。

想要了解機器學習演算法能如何進行應用的職員、經理等。

對機器學習抱有興趣並想要入門的愛好者。

編者 何宇健

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

Python到底怎麼讀?
一個Python包,學會所有基礎演算法
回顧python中的單元測試和模擬
README(自述文件)驅動軟體開發
Python機器學習和深度學習:你需要知道的內容

TAG:Python部落 |

您可能感興趣

Python與機器學習
Pick一下?Python機器學習實用技巧
Pick 一下?Python 機器學習實用技巧
第55期:Python機器學習實踐指南、Tensorflow 實戰Google深度學習框架
Andrew Ng經典機器學習課程的Python實現2
實戰microPython(三)uPyBoard是如何控制機器人的
機器學習如何從Python 2遷移到Python 3
機器學習如何從 Python 2 遷移到 Python 3
用Scratch+IBM Watson實現機器學習
谷歌發布機器學習規則 (Rules of Machine Learning):關於機器學習工程的最佳實踐(下)
谷歌發布機器學習規則 (Rules of Machine Learning):關於機器學習工程的最佳實踐(上)
基於 Python Schema 的機器學習庫——Smart Fruit
使用TensorFlow,Kafka和MemSQL進行實時機器學習
用AI 打造遊戲,Unity 機器學習 Agent——ml-agents
python機器學習:線性回歸
用Python進行機器學習
70個NumPy練習:在Python下一舉搞定機器學習矩陣運算
機器學習基石-The Learning Problem
微軟機器學習Machine Learning Studio學習筆記
專欄 | 像訓練Dota2一樣訓練真實機器人?Gibson Environment環境了解一下