天天看點

《貝葉斯思維:統計模組化的Python學習法》一導讀

《貝葉斯思維:統計模組化的Python學習法》一導讀

貝葉斯思維:統計模組化的python學習法

學習之道

這本書以及think系列其他書籍的一個前提是:隻要懂得程式設計,你就能用這個技能去學習其他的内容 。

絕大多數貝葉斯統計的書使用數學符号并以數學概念的形式表示數學思想,比如微積分。但本書使用了python代碼而不是數學,離散近似而不是連續數學。結果就是原本需要積分的地方變成了求和,機率分布的大多數操作變成了簡單的循環。

我認為這樣的表述是易于了解的,至少對于有程式設計經驗的人們來說是這樣的。當作模組化選擇時也非常實用,因為我們可以選取最合适的模型而不用擔心偏離正常分析太多。

另外,這也提供了一個從簡化模型到真實問題的平滑發展路線,第3章就是一個好示例。它由一個關于骰子的簡單例子開始,那是基本機率的一個主題;緊接着談到了一個我從mosteller《50個挑戰的統計學難題》(fifty challenging problems in probability)一書中借用的火車頭問題;最後是德軍坦克問題,這個第二次世界大戰中成功的貝葉斯方法應用案例。

模組化和近似

本書中多數章節的靈感都是由真實世界裡的問題所激發的,是以涉及了一些模組化知識,在應用貝葉斯方法(或者其他的分析方法)前,我們必須決定真實世界中的哪些部分可以被包括進模型,而哪些細節可以被抽象掉。

例如,第7章中那個預測冰球比賽獲勝隊伍的例子,我将進球得分模組化為一個蔔瓦松過程,這預示着在比賽的任何時段進球機會都是相等的,這并不完全符合實際情況,但就大多數目的來說可能就夠了。

第12章中,問題是對sat得分進行解釋(sat是用于全美大學的入學标準測試)。我以一個假設所有sat試題難度相同的簡化模型開始,但其實sat的試題設計中既包括了相對容易,也包括了相對較難的試題。随後提出了第二個反映這一設計目的的模型,結果顯出兩個模型在最終效果上沒有大的差别。

我認為在解決問題的過程中,明确模組化過程作為其中一部分是重要的,因為這會提醒我們考慮模組化誤差(也就是模組化當中簡化和假設帶來的誤差)。

本書中的很多方法都基于離散分布,這讓一些人擔心數值誤差,但對于真實世界的問題,數值誤差幾乎從來都小于模組化誤差。

再者,離散方法總能允許較好的模組化選擇,我甯願要一個近似的良好的模型也不要一個精确但卻糟糕的模型。

從另一個角度看,連續方法常在性能上有優勢,比如能以常數時間複雜度的解法替換掉線性或者平方時間複雜度的解法。

總的來說,我推薦這些步驟的一個通用流程如下。

1.當研究問題時,以一個簡化模型開始,并以清晰、好了解、實證無誤的代碼實作它。注意力集中在好的模組化決策而不是優化上。

2.一旦簡化模型有效,再找到最大的錯誤來源。這可能需要增加離散近似過程當中值的數量,或者增加蒙特卡洛方法中的疊代次數,或者增加模型細節。

3.如果對你的應用而言性能就已經足夠了,則沒必要再優化。但如果要做,有兩個方向可以考慮:評估你的代碼以尋找優化空間,例如,如果你緩存了前面的計算結果,你也許能避免重複備援的計算;或者可以去發現找到計算捷徑的分析方法。

這一流程的好處是第一、第二步較快,是以你能在投入大量精力前研究多個可替代的模型。

另一個好處是在第三步,你可以從一個大體正确的可參考實作開始進行回歸測試。也就是,檢查優化後的代碼是否得到了同樣的結果,至少是近似的結果。

<a href="https://yq.aliyun.com/articles/97310">第1章 貝葉斯定理</a>

<a href="https://yq.aliyun.com/articles/97310">1.1 條件機率</a>

<a href="https://yq.aliyun.com/articles/97314">1.2 聯合機率</a>

<a href="https://yq.aliyun.com/articles/97317">1.3 曲奇餅問題</a>

<a href="https://yq.aliyun.com/articles/97324">1.4 貝葉斯定理</a>

<a href="https://yq.aliyun.com/articles/97329">1.5 曆時诠釋</a>

<a href="https://yq.aliyun.com/articles/97333">1.6 m&amp;m豆問題</a>

<a href="https://yq.aliyun.com/articles/97341">1.7 monty hall難題</a>

<a href="https://yq.aliyun.com/articles/97342">1.8 讨論</a>

<a href="https://yq.aliyun.com/articles/97348">第2章 統計計算</a>

<a href="https://yq.aliyun.com/articles/97348">2.1 分布</a>

<a href="https://yq.aliyun.com/articles/99543">2.2 曲奇餅問題</a>

<a href="https://yq.aliyun.com/articles/99547">2.3 貝葉斯架構</a>

<a href="https://yq.aliyun.com/articles/99553">2.4 monty hall難題</a>

<a href="https://yq.aliyun.com/articles/99558">2.5 封裝架構</a>

<a href="https://yq.aliyun.com/articles/99564">2.6 m&amp;m豆問題</a>

<a href="https://yq.aliyun.com/articles/99568">2.7 讨論</a>

<a href="https://yq.aliyun.com/articles/99570">2.8 練習</a>

第3章 估計

第4章 估計進階

第5章 勝率和加數

第6章 決策分析

第7章 預測

第8章 觀察者的偏差

第9章 二維問題

第10章 貝葉斯近似計算

第11章 假設檢驗

第12章 證據

第13章 模拟

第14章 階層化模型

第15章 處理多元問題

作者簡介

譯者簡介

關于封面

譯後記