(華南農業大學 廣東 廣州 510000)
基于概率編程的貝葉斯推斷
林鎮溪
(華南農業大學廣東廣州510000)
本文介紹了基于概率編程的貝葉斯推斷的建模過程和利用貝葉斯推斷對挑戰者號事故進行分析和推斷,建立事故發生概率關于溫度的邏輯分布模型p(t)=1/(1+eβt+α),其中α,β采用正態分布,最后采用伯努利分布將事故發生的概率和事故發生的結果聯系起來,使用PyMC計算后驗分布,分析得出當溫度為31度時事故發生的概率幾乎是必然的。
概率編程;貝葉斯推斷;事故發生概率;PyMC
貝葉斯推斷是一種統計學方法,用來估計統計量的性質。貝葉斯推斷與其他統計學推斷方法截然不同,他建立在主觀判斷的基礎上,也就是說,你不需要客觀證據,先估計一個值,然后根據實際結果不斷的修正。概率編程是對問題建模,然后利用計算機采樣的方法進行自動的貝葉斯推理,得出未知參數的概率分布。PyMC是一個馬爾科夫鏈蒙特卡洛采樣(Markov chain Monte Carlo Sampling)工具包,是一個做貝葉斯分析使用的Python庫,包含了畫圖,擬合優化度和聚類診斷的方法。本文將利用PyMC來進行貝葉斯的推斷[1]。
貝葉斯是通過引入先驗的不確定性,我們事實上允許了我們的主觀判斷可能是錯誤的。在觀察數據,證據或其他信息后,我們不斷的更新我們的判斷使得它錯的不那么離譜。所以在貝葉斯推斷的過程中,最重要的就是先驗分布的構建和確立。第一步,先確定需要推斷的對象以及和對象相關的參數。例如我們要推斷一個西瓜是否是好瓜,那么我們需要推斷的對象就是西瓜的好壞,而和西瓜好壞相關的參數可以是西瓜的色澤,根蒂,敲聲等等[2]。第二步,確定參數和對象的模型。根據對象以及參數的類型以及取值范圍構建合理的模型。例如對象的取值為0或者1,那么可以猜測參數和對象之間的模型為邏輯模型。第三步,確定先驗分布的模型。根據對象的數據類型我們需要確定一個先驗分布,例如如果數據是離散型的,那么對象的分布可能符合Poisson分布;如果數據是連續的,那么對象的分布可能符合指數分布。
(一)實驗背景
1986年1月28號,挑戰者號起飛不久后一個火箭推動器發生了爆炸。事故的起因是因為連接在火箭推進器上的O型圈有缺陷,這種缺陷來自于設計的不合理,這種設計使得O型圈對很多因素包括外界溫度都是非常敏感的。我們將利用挑戰者號的數據來分析最后一次飛行發生事故的概率,即當溫度為31度時,事故發生的概率。
(二)數據整理
數據中包括了日期,溫度以及事故是否發生。由于數據中包含了缺失值,可能會影響推斷的結果,所以我們需要剔除這些包含缺失值的樣本,而且根據背景我們知道事故的發生和溫度有關,而和日期的關系不太大,所以我們也需要剔除那些對結果沒什么影響的因素。
(三)構建模型
1.數據觀察
由于直觀數據很難展現溫度和事故發生的關系,所以我們首先作圖來觀察它們之間的關系。因為事故發生的情況只有兩種,0(不發生)和1(發生)。我們可以清晰地看出,隨著外界溫度的下降,發生事故的概率變得更高。因為溫度和事故發生之間沒有一個嚴格的轉折點,所以我們需要對事故發生的概率p建模。
2.構建先驗分布

在這個模型模型中,t為溫度,p(t)為事故發生的概率,β是個不確定變量。

(2)確定β和α的模型。雖然我們確定了溫度和事故發生概率的模型,但是我們引進了兩個輔助參數,然而我們對這兩個參數沒有任何的信息,而且可以看出β和α取值可為正可為負,一般這種情況我們可以想到的正態分布來模擬,因為世間萬物很多都滿足正態分布。
(3)確定先驗分布模型。我們前面分析了兩個模型,事故發生的概率和溫度的模型,事故發生的概率中參數β和α的模型,相當于如果我們確定了β和α的值,我們只能算出一個概率,但是最后的推斷結果為0或者1。所以我們需要構建概率和推斷結果的模型。這里可以很容易想到伯努利分布。
所以我們最終確定的先驗分布模型如下:
Di~Ber(p(ti)),i=1,2,…,N
其中,

α~N(μ,τ)
β~N(μ,τ)
3.利用PyMC3計算后驗分布
PyMC3可以很方便地幫我們算出模型的后驗分布,只需要我們確定參數以及模型即可。
(四)結果分析
根據MCMC采樣結果,下面我們作出了事故發生的概率關于溫度的曲線圖。

上面的圖描繪了事故發生概率的后驗分布圖,由于受到溫度,α,β的影響,我們不能從圖中判斷在哪個溫度時概率發生明顯的變化。但是從圖中的曲線斜率的變化趨勢也可以看出在溫度在[60,70]區間變化最快,所以我們猜測溫度的影響值在[60,70]之間。我們作出當溫度t=31時事故發生的后驗分布如下。

從上面的直方圖可以看出當溫度t=31°時事故發生的概率基本為99.9%以上,說明1986年1月28號O型圈發生事故幾乎是必然的了。除此之外,我們還可以預測其他溫度發生事故的概率。
[1]貝葉斯方法.概率編程與貝葉斯推斷,Cameron Davidson-Pilon
[2]周志華.機器學習
林鎮溪,男,漢族,廣東廉江,本科,華南農業大學,研究方向機器學習。