天天看點

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構

本節書摘來自異步社群《貝葉斯方法:機率程式設計與貝葉斯推斷》一書中的第1章,第1.2節,作者 【加】cameron davidson-pilon(卡梅隆 戴維森-皮隆),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

我們感興趣的估計,可以通過貝葉斯的思想被解釋為機率。我們對事件a有一個先驗估計——例如,在準備測試之前,我們對代碼中的漏洞就有了一個先驗的估計。

接下來,觀察我們的證據。繼續拿代碼漏洞為例:如果我們的代碼通過了x個測試,我們會相應地調整心裡的估計。我們稱這個調整過後的新估計為後驗機率。調整這個估計值可以通過下面的公式完成,這個公式被稱為貝葉斯定理,得名于它的創立者托馬斯·貝葉斯。

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構

上面的公式并不等同于貝葉斯推論,它是一個存在于貝葉斯推論之外的數學真理。在貝葉斯推論裡它僅僅被用來連接配接先驗機率p(a)和更新的後驗機率p(a|x)。

幾乎所有統計書籍都包含一個抛硬币的執行個體,那我也從這個開始着手吧。假設你不确定在一次抛硬币中得到正面的機率(劇透警告:它是50%),你認為這裡肯定是存在某個比例的,稱之為p,但是你事先并不清楚p大概會是多少。

我們開始抛硬币,并記錄下每一次抛出的結果——正面或反面,這就是我們的觀測資料。一個有趣的問題是:“随着收集到越來越多的資料,我們對p的推測是怎麼變化的呢?”

說得更具體一些,當面對着很少量的資料或擁有大量資料時,我們的後驗機率是怎麼樣的呢?下面,我們按照觀測到的越來越多的資料(抛硬币資料),逐次更新我們的後驗機率圖。

在圖中我們用曲線表示我們的後驗機率,曲線越寬,我們的不确定性越大。如圖1.2.1所示,當我們剛剛開始觀測的時候,我們的後驗機率的變化是不穩定的。但是最終,随着觀測資料(抛硬币資料)越來越多,這個機率會越來越接近它的真實值p=0.5(圖中用虛線标出)。

注意到圖中的波峰不一定都出現在0.5那裡,當然它也沒有必要都這樣。應該明白的是我們事前并不知道p會是多少。事實上,如果我們的觀測十分的極端,比如說抛了8次隻有1次結果是正面的,這種情況我們的分布會離0.5偏差很多(如果缺少先驗的知識,當出現8次反面1次正面時,你真的會認為抛硬币結果是公平的嗎?)。随着資料的累積,我們可以觀察到,雖然不是每個時候都這樣,但越來越多地,機率值會出現在p=0.5。

下面這個執行個體就簡單地從資料角度示範一下貝葉斯推斷。

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構

下面這個故事靈感來自于daniel kahneman的《思考,快與慢》一書,史蒂文被描述為一個害羞的人,他樂于助人,但是他對其他人不太關注。他非常樂見事情處于合理的順序,并對他的工作非常細心。你會認為史蒂文是一個圖書管理者還是一個農民呢?從上面的描述來看大多數人都會認為史蒂文看上去更像是圖書管理者,但是這裡卻忽略了一個關于圖書管理者和農民的事實:男性圖書管理者的人數隻有男性農民的1/20。是以從統計學來看史蒂文更有可能是一個農民。

怎麼正确地看待這個問題呢?史蒂文實際上更有可能是一個農民還是一個圖書管理者呢?把問題簡化,假設世上隻有兩種職業——圖書管理者和農民,并且農民的數量确實是圖書管理者的20倍。

設事件a為史蒂文是一個圖書管理者。如果我們沒有史蒂文的任何資訊,那麼p(a)=1/21=0.047。這是我們的先驗。現在假設從史蒂文的鄰居們那裡我們獲得了關于他的一些資訊,我們稱它們為x。我們想知道的就是p(a|x)。由貝葉斯定理得:

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構

我們知道p(a)是什麼意思,那p(x|a)是什麼呢?它可以被定義為在史蒂文真的是一個圖書管理者的情況下,史蒂文的鄰居們給出的某種描述的機率,即如果史蒂文真的是一個圖書管理者,他的鄰居們将他描述為一個圖書管理者的機率。這個值很可能接近于1。假設它為0.95。

p(x)可以解釋為:任何人對史蒂文的描述和史蒂文鄰居的描述一緻的機率。現在這種形式有點難以了解,我們将其做一些邏輯上的改造:

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構

其中~a表示史蒂文不是一個圖書管理者的事件,那麼他一定是一個農民。現在我們知道p(x|a)和p(a),另外也可知p(~a)=1-p(a)=20/21。現在我們隻需要知道p(x|~a),即在史蒂文為一個農民的情況下,史蒂文的鄰居們給出的某

種描述的機率即可。假設它為0.5,這樣,

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構

結合以上:

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構

這個值并不算高,但是考慮到農民的數量比圖書管理者的數量多這麼多,這個結果也非常合理了。在圖1.2.2中,對比了在史蒂文為農民和史蒂文為圖書管理者時的先驗和後驗機率。

在我們得到x的觀測值之後,史蒂文為圖書管理者的機率增加了,雖然增加的不是很多,史蒂文為農民的可能性依舊是相當大的。

這是一個關于貝葉斯推斷和貝葉斯法則的一個簡單的執行個體。不幸的是,除了在人工結構的情況下,要執行更加複雜的貝葉斯推斷所使用到的數學隻會變得更加的複雜。在後面我們将看到執行這種複雜的屬性分析并沒有必要。首先,我們必須擴充我們的模組化工具。下一章的機率分布,如果你已經對它很熟悉了,可以選擇跳過(或隻是浏覽一下),但是對于不熟悉的讀者,下一章是很有必要的。

《貝葉斯方法:機率程式設計與貝葉斯推斷》一1.2 我們的貝葉斯架構