為機器學習愛好者推薦一本書《貝葉斯方法:概率編程與貝葉斯推斷》

本書的內容特色:

  • ·學習貝葉斯思維方式

  • ·理解計算機如何進行貝葉斯推斷

  • ·利用PyMC Python庫進行編程來實現貝葉斯分析

  • ·利用PyMC建模以及調試

  • ·測試模型的擬合優度

  • ·打開馬爾科夫鏈蒙特卡洛演算法的黑盒子,看看它如何工作

  • ·利用大數定律的力量

  • ·掌握聚類、收斂、自相關、細化等關鍵概念

  • ·根據目標和預期的結果,利用損失函數來推斷缺陷

  • ·選擇合理的先驗,並理解其如何隨著樣本量的大小而變化

  • ·克服「研發與開發」的困境:判斷是否已經足夠好了

  • ·利用貝葉斯推斷改良A/B測試

  • ·在可用數據量小的情況下,解決數據科學的問題

貝葉斯方法是一種常用的推斷方法,然而對讀者來說它通常隱藏在乏味的數學分析章節背後。關於貝葉斯推斷的書通常包含兩到三章關於概率論的內容,然後才會闡述什麼是貝葉斯推斷。不幸的是,由於大多數貝葉斯模型在數學上難以處理,這些書只會為讀者展示簡單、人造的例子。這會導致貝葉斯推斷給讀者留下「那又如何?」的印象。實際上,這曾是我自己的先驗觀點。

最近貝葉斯方法在一些機器學習競賽上取得了成功,讓我決定再次研究這一主題。然而即便以我的數學功底,我也花了整整3天時間來閱讀範例,並試圖將它們匯總起來以便理解這一方法。那時並沒有足夠的文獻將理論和實際結合起來。而讓我產生理解偏差的正是由於沒能將貝葉斯數學理論和概率編程實踐結合起來。當然,如今讀者已經無需再遭遇我當時的情景。本書就是為了填補這一空缺而編寫的。

如果我們最終是要進行貝葉斯推斷,那麼一方面我們可以採用數學分析來實現這一目的,而另一方面,隨著計算成本的下降,我們已經可以通過概率編程來完成這一任務。後一種方法更加有用,因為它避免了在每一步介入數學干預,而這也使得進行貝葉斯推斷不再以通常很棘手的數學分析為前提。簡而言之,後一種計算途徑,是從問題起點經過小幅中間步驟到達問題終點,而前一種途徑則大幅躍進,並通常最後遠離目標。此外,如果沒有深厚的數學功底,也根本無法完成前一種途徑所需要的數學分析。

《貝葉斯方法:概率編程與貝葉斯推斷》首先從計算和理解的角度,而後從數學分析的角度對貝葉斯推斷進行了介紹。當然,作為一本入門書籍,本書將停留在入門階段。對於受過數學訓練的人來說,本書產生的疑問可通過其他偏重數學分析的書來解答。對於缺少數學背景的愛好者,或是僅對貝葉斯方法的實踐而非數學理論感興趣的讀者來說,本書足以勝任且蘊含趣味。

選擇PyMC作為概率編程語言有兩方面原因。首先,在寫本書之時,並沒有集中的關於PyMC的說明和實例等資料。官方文檔面向具有貝葉斯推斷和概率編程背景知識的人。而我們希望本書可以鼓勵各個層次的人了解PyMC。其次,隨著近來用Python實現科學計算框架的流行及其核心進展,PyMC可能很快會成為核心組件之一。

PyMC的運行需要一些依賴庫,包括NumPy以及可選的SciPy。為了不產生限制,本書的實例只依賴PyMC、NumPy、SciPy和Matplotlib。

《貝葉斯方法:概率編程與貝葉斯推斷》內容安排如下。第1章介紹貝葉斯推斷方法以及與其他推斷方法的比較。我們會看到第一個貝葉斯模型,並對其進行建立和訓練。第2章以實例為重點,講述如何用PyMC構建模型。第3章介紹計算推斷背後的一個強大演算法——馬爾科夫鏈蒙特卡洛,以及一些貝葉斯模型的調試技術。在第4章里,我們再次回到推斷的樣本量問題上,並解釋為何樣本量大小如此重要。第5章介紹強大的損失函數,它將在真實世界的問題與數學推斷之間建立連接。我們將在第6章回顧貝葉斯先驗,並通過啟發式的方法找到先驗的更優解。最後,我們在第7章探索如何將貝葉斯推斷用於A/B測試。

關於作者:

Cameron Davidson-Pilon,接觸過數學在多個領域的應用——從基因和疾病的動態演化,到金融價格的隨機模型。他對於開源社區最主要的貢獻包括這本書以及lifelines項目。Cameron成長於加拿大的安大略省圭爾夫市,而就讀於滑鐵盧大學以及莫斯科獨立大學。如今他住在安大略省渥太華市,並在電商領軍者Shopify工作。

目錄

第1章 貝葉斯推斷的哲學 1

1.1 引言 1

1.1.1 貝葉斯思維 1

1.1.2 貝葉斯推斷在實踐中的運用 3

1.1.3 頻率派的模型是錯誤的嗎? 4

1.1.4 關於大數據 4

1.2 我們的貝葉斯框架 5

1.2.1 不得不講的實例:拋硬幣 5

1.2.2 實例:圖書管理員還是農民 6

1.3 概率分布 8

1.3.1 離散情況 9

1.3.2 連續情況 10

1.3.3 什麼是 12

1.4 使用計算機執行貝葉斯推斷 12

1.4.1 實例:從簡訊數據推斷行為 12

1.4.2 介紹我們的第一板斧:PyMC 14

1.4.3 說明 18

1.4.4 後驗樣本到底有什麼用? 18

1.5 結論 20

1.6 補充說明 20

1.6.1 從統計學上確定兩個l值是否真的不一樣 20

1.6.2 擴充至兩個轉折點 22

1.7 習題 24

1.8 答案 24

第2章 進一步了解PyMC 27

2.1 引言 27

2.1.1 父變數與子變數的關係 27

2.1.2 PyMC變數 28

2.1.3 在模型中加入觀測值 31

2.1.4 最後…… 33

2.2 建模方法 33

2.2.1 同樣的故事,不同的結局 35

2.2.2 實例:貝葉斯A/B測試 38

2.2.3 一個簡單的場景 38

2.2.4 A和B一起 41

2.2.5 實例:一種人類謊言的演算法 45

2.2.6 二項分布 45

2.2.7 實例:學生作弊 46

2.2.8 另一種PyMC模型 50

2.2.9 更多的PyMC技巧 51

2.2.10 實例:挑戰者號事故 52

2.2.11 正態分布 55

2.2.12 挑戰者號事故當天發生了什麼? 61

2.3 我們的模型適用嗎? 61

2.4 結論 68

2.5 補充說明 68

2.6 習題 69

2.7 答案 69

第3章 打開MCMC的黑盒子 71

3.1 貝葉斯景象圖 71

3.1.1 使用MCMC來探索景象圖 77

3.1.2 MCMC演算法的實現 78

3.1.3 後驗的其他近似解法 79

3.1.4 實例:使用混合模型進行無監督聚類 79

3.1.5 不要混淆不同的後驗樣本 88

3.1.6 使用MAP來改進收斂性 91

3.2 收斂的判斷 92

3.2.1 自相關 92

3.2.2 稀釋 95

3.2.3 pymc.Matplot.plot() 97

3.3 MCMC的一些秘訣 98

3.3.1 聰明的初始值 98

3.3.2 先驗 99

3.3.3 統計計算的無名定理 99

3.4 結論 99

第4章 從未言明的最偉大定理 101

4.1 引言 101

4.2 大數定律 101

4.2.1 直覺 101

4.2.2 實例:泊松隨機變數的收斂 102

4.2.3 如何計算Var(Z) 106

4.2.4 期望和概率 106

4.2.5 所有這些與貝葉斯統計有什麼關係呢 107

4.3 小數據的無序性 107

4.3.1 實例:地理數據聚合 107

4.3.2 實例:Kaggle的美國人口普查反饋比例預測比賽 109

4.3.3 實例:如何對Reddit網站上的評論進行排序 111

4.3.4 排序! 115

4.3.5 但是這樣做的實時性太差了 117

4.3.6 推廣到評星系統 122

4.4 結論 122

4.5 補充說明 122

4.6 習題 123

4.7 答案 124

第5章 失去一隻手臂還是一條腿 127

5.1 引言 127

5.2 損失函數 127

5.2.1 現實世界中的損失函數 129

5.2.2 實例:優化「價格競猜」遊戲的展品出價 130

5.3 機器學習中的貝葉斯方法 138

5.3.1 實例:金融預測 139

5.3.2 實例:Kaggle觀測暗世界 大賽 144

5.3.3 數據 145

5.3.4 先驗 146

5.3.5 訓練和PyMC實現 147

5.4 結論 156

第6章 弄清楚先驗 157

6.1 引言 157

6.2 主觀與客觀先驗 157

6.2.1 客觀先驗 157

6.2.2 主觀先驗 158

6.2.3 決策,決策…… 159

6.2.4 經驗貝葉斯 160

6.3 需要知道的有用的先驗 161

6.3.1 Gamma分布 161

6.3.2 威沙特分布 162

6.3.3 Beta分布 163

6.4 實例:貝葉斯多臂老虎機 164

6.4.1 應用 165

6.4.2 一個解決方案 165

6.4.3 好壞衡量標準 169

6.4.4 擴展演算法 173

6.5 從領域專家處獲得先驗分布 176

6.5.1 試驗輪盤賭法 176

6.5.2 實例:股票收益 177

6.5.3 對於威沙特分布的專業提示 184

6.6 共軛先驗 185

6.7 傑弗里斯先驗 185

6.8 當N增加時對先驗的影響 187

6.9 結論 189

6.10 補充說明 190

6.10.1 帶懲罰的線性回歸的貝葉斯視角 190

6.10.2 選擇退化的先驗 192

第7章 貝葉斯A/B測試 195

7.1 引言 195

7.2 轉化率測試的簡單重述 195

7.3 增加一個線性損失函數 198

7.3.1 收入期望的分析 198

7.3.2 延伸到A/B測試 202

7.4 超越轉化率:t檢驗 204

7.4.1 t檢驗的設定 204

7.5 增幅的估計 207

7.5.1 創建點估計 210

7.6 結論 211

術語表 213

如果您已經讀過這本書,可以選擇閱讀:《Python機器學習——預測分析核心演算法》

喜歡讀書的朋友也可以加入程序員書屋QQ群:255082518


推薦閱讀:

Python 家族有多龐大
Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
Flask 實現小說網站 (二)
Python實現3D建模工具

TAG:程序员 | 机器学习 | Python |