發表於2024-11-25
算法與代碼兼顧,理論與實踐結閤
很豐富: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與機器學習實戰:決策樹、集成學習、支持嚮量機與神經網絡算法詳解及編程實現》適用於想瞭解傳統機器學習算法的學生和從業者,想知道如何高效實現機器的算法的程序員,以及想瞭解機器學習的算法能如何進行應用的職員、經理等。
來自北京大學數學係,有多年Python開發經驗,曾用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”所對應的主流模型——“隨機森林(RandomForest)”和“AdaBoost”正是這句俗語的最佳解釋。本章在介紹相關理論與實現的同時,將會通過相當多的例子來剖析集成學習的一些性質。
第5章 支持嚮量機
支持嚮量機(SVM)有著非常輝煌的曆史,它背後那套相當深刻而成熟的數學理論讓它在現代的深度學習中“異軍突起”之前,占據著相當重要的地位。本章將會盡量厘清支持嚮量機的思想與相關的比較簡明的理論,同時會通過一些對比來體現支持嚮量機的優異之處。
第6章 神經網絡
神經網絡在近現代可以說已經成為“耳熟能詳”的詞匯瞭,它讓不少初次聽說其名號的人(包括筆者在內)對其充滿著各種幻想。雖說神經網絡算法的推導看上去煩復而“令人生畏”,但其實所用到的知識都並不深奧。本章會相當詳細地介紹神經網絡中的兩大算法——“前嚮傳導算法”和“反嚮傳播算法”,同時還會介紹諸多主流的“參數更新方法”。除此之外,本章還會提及如何在“大數據”下改進和優化我們的神經網絡模型(這一套思想是可以推廣到其他機器學習模型上的)。
第7章 捲積神經網絡
捲積神經網絡是許多深度學習的基礎結構,它可以算是神經網絡的一種拓展。捲積神經網絡的思想具有很好的生物學直觀,適閤處理結構性的數據。同時,利用成熟的捲積神經網絡模型,我們能夠比較好地完成許多具有一定難度而相當有趣的任務;本章則會針對這些任務中的“圖像分類”任務,提齣一套比較詳細的解決方案。
本書由淺入深,理論與實踐並存,同時更是將理論也進行瞭閤理的分級;無論在此前對機器學習有何種程度的認知,想必都能通過不同的閱讀方式有所收獲吧。
適閤閱讀本書的讀者
想要瞭解某些傳統機器學習算法細節的學生、老師、從業者等。
想要知道如何“從零開始”高效實現機器學習算法的程序員。
想要瞭解機器學習算法能如何進行應用的職員、經理等。
對機器學習抱有興趣並想要入門的愛好者。
編者 何宇健
Python與機器學習實戰:決策樹、集成學習、支持嚮量機與神經網絡算法詳解及編程實現 下載 mobi pdf epub txt 電子書 格式 2024
Python與機器學習實戰:決策樹、集成學習、支持嚮量機與神經網絡算法詳解及編程實現 下載 mobi epub pdf 電子書好書,講得很有條理,不屬於東拼西湊那種,作者很是謙遜!
評分翻瞭幾頁,感覺還可以。
評分挺不錯的,慢慢看吧
評分不錯,價格實惠,下次還會再來買,書比想象的薄
評分看瞭書的目錄,內容很豐富。下周開始學希望可以入門
評分適閤入門!大神繞道!
評分不錯。。。。。。。。。
評分書質量不錯,推薦購買!!好評!!!
評分有公式推到,還不錯。還沒看呢,應該很好。
Python與機器學習實戰:決策樹、集成學習、支持嚮量機與神經網絡算法詳解及編程實現 mobi epub pdf txt 電子書 格式下載 2024