貝葉斯方法:概率程式設計與貝葉斯推斷
貝葉斯方法是一種常用的推斷方法,然而對讀者來說它通常隱藏在乏味的數學分析章節背後。關於貝葉斯推斷的書通常包含兩到三章關於概率論的內容,然後才會闡述什麼是貝葉斯推斷。不幸的是,由於大多數貝葉斯模型在數學上難以處理,這些書只會為讀者展示簡單、人造的例子。這會導致貝葉斯推斷給讀者留下「那又如何?」的印象。實際上,這曾是我自己的先驗觀點。
最近貝葉斯方法在一些機器學習競賽上取得了成功,讓我決定再次研究這一主題。然而即便以我的數學功底,我也花了整整3天時間來閱讀範例,並試圖將它們彙總起來以便理解這一方法。那時並沒有足夠的文獻將理論和實際結合起來。而讓我產生理解偏差的正是由於沒能將貝葉斯數學理論和概率程式設計實踐結合起來。當然,如今讀者已經無需再遭遇我當時的情景。本書就是為了填補這一空缺而編寫的。
如果我們最終是要進行貝葉斯推斷,那麼一方面我們可以採用數學分析來實現這一目的,而另一方面,隨著計算成本的下降,我們已經可以通過概率程式設計來完成這一任務。後一種方法更加有用,因為它避免了在每一步介入數學干預,而這也使得進行貝葉斯推斷不再以通常很棘手的數學分析為前提。簡而言之,後一種計算途徑,是從問題起點經過小幅中間步驟到達問題終點,而前一種途徑則大幅躍進,並通常最後遠離目標。此外,如果沒有深厚的數學功底,也根本無法完成前一種途徑所需要的數學分析。
本書首先從計算和理解的角度,而後從數學分析的角度對貝葉斯推斷進行了介紹。當然,作為一本入門書籍,本書將停留在入門階段。對於受過數學訓練的人來說,本書產生的疑問可通過其他偏重數學分析的書來解答。對於缺少數學背景的愛好者,或是僅對貝葉斯方法的實踐而非數學理論感興趣的讀者來說,本書足以勝任且蘊含趣味。
選擇pymc作為概率程式語言有兩方面原因。首先,在寫本書之時,並沒有集中的關於pymc的說明和例項等資料。官方文件面向具有貝葉斯推斷和概率程式設計背景知識的人。而我們希望本書可以鼓勵各個層次的人了解pymc。其次,隨著近來用python實現科學計算框架的流行及其核心進展,pymc可能很快會成為核心元件之一。
pymc的執行需要一些依賴庫,包括numpy以及可選的scipy。為了不產生限制,本書的例項只依賴pymc、numpy、scipy和matplotlib。
本書內容安排如下。第1章介紹貝葉斯推斷方法以及與其他推斷方法的比較。我們會看到第乙個貝葉斯模型,並對其進行建立和訓練。第2章以例項為重點,講述如何用pymc構建模型。第3章介紹計算推斷背後的乙個強大演算法——馬爾科夫鏈蒙特卡洛,以及一些貝葉斯模型的除錯技術。在第4章裡,我們再次回到推斷的樣本量問題上,並解釋為何樣本量大小如此重要。第5章介紹強大的損失函式,它將在真實世界的問題與數學推斷之間建立連線。我們將在第6章回顧貝葉斯先驗,並通過啟發式的方法找到先驗的更優解。最後,我們在第7章探索如何將貝葉斯推斷用於a/b測試。
第1章 貝葉斯推斷的哲學
1.1 引言
1.2 我們的貝葉斯框架
1.3 概率分布
1.4 使用計算機執行貝葉斯推斷
1.5 結論
1.6 補充說明
1.7 習題
1.8 答案
第2章 進一步了解pymc
第3章 開啟mcmc的黑盒子
第4章 從未言明的最偉大定理
第5章 失去乙隻手臂還是一條腿
第6章 弄清楚先驗
第7章 貝葉斯a/b測試
術語表
《貝葉斯方法 概率程式設計與貝葉斯推斷》 1 8答案
1 計算後驗的均值 即後驗的期望值 我們只需要用到樣本和a.mean函式。print lambda 1 samples.mean print lambda 2 samples.mean 2 給定兩個數a 和 b,相對增長可以由 a b b給出。在我們的例項中,我們並不能確定 1和 2的值是多少。通過...
《貝葉斯方法 概率程式設計與貝葉斯推斷》一1 8答案
1 計算後驗的均值 即後驗的期望值 我們只需要用到樣本和a.mean函式。print lambda 1 samples.mean print lambda 2 samples.mean 2 給定兩個數a 和 b,相對增長可以由 a b b給出。在我們的例項中,我們並不能確定 1和 2的值是多少。通過...
貝葉斯概率
貝斯公式和全概率公式的意思差不多相反。全概率公式是說 某件事情的發生可以由很多情況導致,那麼這件事情發生的概率,就是每件事情導致他發生的概率,乘以每件事情發生的概率。貝斯公式的意思是 某件事情還是由剛才所說的那些事件引起的,你已經知道某件事情發生了,那麼他是由哪件事情引起的呢?就可以又貝斯公式a事件...