02.28 10分鐘教你用睡覺這件事玩轉貝葉斯推斷

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

編譯 | AI科技大本營(ID:rgznai100)

參與 | 張建軍

【AI科技大本營導讀】貝葉斯法則和其他統計概念很難通過只用到字母的抽象公式、或者一些虛構的情景來理解。在作者William Koehrsen上過的許多課程中,通常會用一些並不是非常有用的例子來展示貝葉斯法則,例如拋硬幣或者從缸裡抽綵球,但是直到這一個項目才讓作者最終理解了如何應用貝葉斯推斷。

本文中作者展示了貝葉斯推斷通過考慮新的證據來修正我們的信念,從而能更好地模擬真實世界。隨著我們收集到更多的證據,我們需要持續調整我們的預測,而貝葉斯公式正好為我們提供了合適的框架。


貝葉斯推斷的基本思想是通過更多數據,從而"犯少一點錯誤"。推斷過程很直接:我們首先有一個初始信念,被稱為先驗,當我們獲得額外的信息後可以對這個信念進行修正更新。雖然我們並不知道這個過程就是貝葉斯推斷,但是我們一直都在使用這個技巧。

舉個例子,我們可能一開始認為我們有百分之五十的可能性會在本季度末升職。如果我們從經理那得到正面的反饋,那麼我們就向上調整升職可能性,而相反地,如果我們把咖啡機弄得一團糟,那麼我們可能就得降低一下概率了。隨著我們不斷地獲得更多的信息,我們可以不斷地修正我們的估計以逼近“正確”的答案。以上我們直覺的行為可以用以下簡單卻強大的公式來形式化描述,該公式被稱為貝葉斯法則(http://www.eecs.qmul.ac.uk/~norman/BBNs/Bayes_rule.htm):

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

等號左邊那項被稱為後驗,我們讀作給定事件B發生後事件A發生的條件概率。在等號右邊,P(A)被稱為先驗,或者被叫作我們對事件A發生的概率的初始信念,P(B|A)被稱為似然(也是一個條件概率),這一項是可從數據中得到的,P(B)則是一個歸一化常數使得概率分佈之和為1。用統計的語言來描述貝葉斯法則的一般形式是後驗概率等於似然乘以先驗除以歸一化常數。這個簡短的等式引出了貝葉斯推斷的整個領域,也給人們帶來了對世界進行推理的有效方法。

雖然等式中的A和B是非常好的佔位符,但是它們並不能很好地幫助我們瞭解如何使用這個概念。為了達到這個目的,可以應用貝葉斯法則去解決一個真實世界的問題。

案例

在我自己的生活中,我一直在研究的一個問題就是睡眠模式。我從自己攜帶的Garmin Vivosmart智能手錶中收集了超過兩個月的數據,這些數據顯示了我何時入睡和起床。在上一篇文章中,我用馬爾可夫鏈蒙特卡羅(Markov Chain Monte Carlo, MCMC)方法計算出了在給定的時間我睡著了的概率。最終模型顯示,睡眠的最有可能的分佈是一個關於時間的函數(MCMC是一種近似方法),如下圖所示。

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

這是隻考慮時間因素的情況下我睡著了的概率。要是我們知道時間的同時還知道其他的證據又會怎樣?如果知道我的臥室燈亮著,這會如何改變我睡著了的概率?這就是我們可以利用貝葉斯法則來更新我們的估計的地方了。對於特定時間,如果我們知道我的臥室燈的信息,那麼我們可以利用上面的概率分佈作為我們的先驗,然後應用貝葉斯公式:

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

等號左邊是後驗,即給定我的臥室燈的狀態(開或關)的情況下我睡著了的條件概率。要是我們沒有其他額外的信息可以提供的話,那麼在給定時間的睡眠概率將作為我們的先驗,P(sleep),或者說作為我們的估計。例如,在晚上10:00,我睡著的先驗概率是27.34%。如果我們真的有更多信息,那麼我們就可以利用似然來更新這一概率,P(bedroom light |sleep),似然可以從觀測數據中得到。根據我的習慣,我知道在我睡著的情況下我的臥室燈亮著的概率是1%。即:

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

在我睡著的情況下我的燈關掉的概率是1–0.01 = 0.99(這裡我用了減號(-)來表示相反的情況)。這是因為條件概率分佈之和為1。如果我們知道我睡著了,那麼我的臥室燈肯定處於開著或者關著兩種情況之一!

等式的最後一項是歸一化常數P(light)。這是我的燈開著的全概率。我的燈開著存在兩種情況:我睡著了或者我醒著。因此,如果我們知道我睡著了的先驗概率,我們可以這樣計算歸一化常數:

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

我的燈開著的全概率考慮了兩種可能,我睡著了且我的燈開著,以及我醒著且我的燈開著。(P(-sleep) = 1 —  P(sleep)是我醒著的概率)

我醒著的情況下我的燈開著的概率,P(light | — sleep),也是從觀測數據中決定的。在我的例子中,我知道如果我醒著,我的臥室燈大概有80%的概率是開著的(這也意味著如果我醒著的話,有20%的可能我的燈是關著的)。

利用我的燈開著的全概率,貝葉斯公式可寫成:

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

這個公式展示了在我的燈開著的情況下我睡著了的概率。如果我的燈滅了,那麼我們可以把公式中的P(light|...全部換成P(-light|...

只有文字的公式已經夠多了,下面讓我們看看怎麼利用數字來使用這些公式!

根據公式,我們來一步一步地計算在晚上10:30,我們知道我的臥室燈亮著的情況下,我睡著了的概率是多少。首先,我們根據時間來計算我睡著的先驗概率,得到結果是73.90%。這個先驗給我們的估計提供了一個很好的起點,但是我們可以通過加入關於我的臥室燈的信息來改善這個估計。既然知道我的臥室燈亮著,我們可以把相關的數字填到貝葉斯公式中去:

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

臥室燈亮著這一知識很大程度上改變了我們對我睡著了的概率的估計,從70%變成了3.42%。這一變化展示了貝葉斯法則的威力:通過引入更多信息我們可以更新我們的最初估計。雖然我們平時可能根據直覺也會這麼做,但是利用正式的公式來思考這一過程可以讓我們用一種嚴謹的方式來更新我們的信念。

讓我們嘗試另一個例子。假設現在是晚上9:45,且我的臥室燈滅了怎麼辦?從先驗概率是0.1206入手,試試把這個例子解出來。

我不是每次都進行手工推斷,而是寫了一些Python代碼來進行以上的計算,你可以在這個Jupyter Notebook裡把玩這些代碼。

Jupyter Notebook:https://github.com/WillKoehrsen/ai-projects/blob/master/bayesian_inference/bayes_rule_applied.ipynb

代碼輸出了以下答案:


Time: 09:45:00 PM Light is OFF.
The prior probability of sleep: 12.06%
The updated probability of sleep: 40.44%

我們再一次發現額外信息改變了我們的估計。現在,如果我的妹妹打算在晚上9:45打電話給我,而且她以某種方法知道我的臥室燈亮著,那麼她就可以參照這條等式來判斷我是否會接電話了(假設我醒著的時候我總會接電話)!誰說你不能在日常生活中使用統計學的?

看到數值結果很有幫助,但是數據可視化可以更加清晰地說明問題。在與別人交流想法時,要是他們不能直接通過方程來理解,那麼我總是試著引入圖像來進行解釋。下面,我們可以利用額外的數據來對我睡著了的先驗和條件概率分佈進行可視化。

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

當我的臥室燈亮著時,曲線向右進行了移動,意味著在某一特定的時間點我睡著的概率很低。相似地,如果我的燈滅了,曲線向左進行了移動。想從概念上理解一個統計學概念很困難,但是這個插圖正好說明了我們為什麼要使用貝葉斯法則。如果我們想在這個世界犯少一點錯誤,那麼額外的信息應該改變我們的信念,而貝葉斯推斷正是利用一個系統的方法來更新我們的估計。

利用更多的證據

為什麼要在我的臥室燈這裡就止步不前呢?我們可以在模型中使用盡可能多的信息,這個模型也會繼續變得更加的精確(只要數據告訴我們相關情況的有用信息)。舉個例子,如果我知道在我睡著的情況下,我的手機在充電的似然是95%,那麼我們就可以把這個知識加入到我們的模型中。

在這裡,我們假設,在給定我是否睡著的信息的情況下,我的手機正在充電的概率條件獨立(https://en.wikipedia.org/wiki/Conditional_independence)於我的臥室燈亮著的概率(獨立性是一個稍微高級點的概念,但是它可以讓我們簡化許多問題)。利用額外信息的貝葉斯公式如下表示:

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

這看上去可能有點嚇人,但是利用一點Python代碼,我們可以寫一個函數來為我們做這些計算。我們輸入任意時間,以及燈的開關狀態和手機狀態這兩種狀態信息的任意組合,然後這個函數就可以返回更新過的我睡著的概率。

我將跳過數學(我讓我的電腦幫我計算)並展示結果:


Time is 11:00:00 PM Light is ON Phone IS NOT charging.
The prior probability of sleep: 95.52%
The updated probability of sleep: 1.74%

在晚上11點,沒有額外信息的情況下,我們幾乎可以肯定我睡著了。然而,一旦我們有了額外信息:我的燈亮著,手機沒有在充電,我們就可以判斷我睡著的可能性很低。下面是另一組輸入得到的輸出結果:


Time is 10:15:00 PM Light is OFF Phone IS charging.
The prior probability of sleep: 50.79%
The updated probability of sleep: 95.10%

根據具體的情況,概率會變高或變低。為了證明這一點,我們可以觀察燈和手機狀態的四種不同組合,以及這些組合是如何改變概率分佈的:

10分鐘教你用睡覺這件事玩轉貝葉斯推斷

這幅圖包含了許多信息,但是關鍵點是概率曲線隨著證據的不同而發生改變。我們獲得更多數據的同時,也可以更好的修正我們的估計。

總結

貝葉斯法則和其他統計概念很難通過只用到字母的抽象公式、或者一些虛構的情景來理解。如果你理解一個概念有困難,那麼去找出一個你可以應用它的場景,或者看看別人成功應用它的例子!

當我們把概念轉化到具體問題時,我們才真正的學到東西。我們不僅可以通過這種方式學到新技能,而且我們還能做一些很酷的項目!成功掌握數據科學需要持續的學習,不斷為你的技能添加新技術,並且為不同任務找到最佳的解決方案。

作者:William Koehrsen

原文鏈接:https://towardsdatascience.com/bayes-rule-applied-75965e4482ff


分享到:


相關文章: