貝葉斯公式的理解


貝葉斯公式的理解

一、總結

一句話總結:

我們把上面例題中的 A 變成樣本(sample) x , 把 B 變成參數(parameter) \theta , 我們便得到我們的貝葉斯公式:
$$\pi(\theta_i|x) = \frac{f(x|\theta_i)\pi(\theta_i)}{\sum_i f(x|\theta_i)\pi(\theta_i)}$$
就是某件事情發生除以總的發生情況,算出各個事情的發生概率

 

1、參數分布連續的貝葉斯公式?

可以看出上面這個例子中,B 事件的分布是離散的,所以在分母用的是求和符號 \sum 。那如果我們的參數\theta的分布是連續的呢?沒錯,那就要用積分,於是我們終於得到了真正的 貝葉斯公式 :
$$\pi(\theta|x) = \frac{f(x|\theta)\pi(\theta)}{\int_\Theta f(x|\theta)\pi(\theta)d\theta}$$
其中\pi指的是參數的概率分布, \pi(\theta) 指的是先驗概率,\pi(\theta|x)指的是后驗概率, f(x|\theta) 指的是我們觀測到的樣本的分布,也就是似然函數(likelihood),記住 豎線|左邊的才是我們需要的。

 

 

2、貝葉斯統計中的 后驗概率?

P(B2|A)中間多了這一豎線|成為了條件概率,而這個概率就是貝葉斯統計中的后驗概率!
而人群中患癌症與否的概率 P(B_{1}), P(B_{2}) 就是 先驗概率!我們知道了先驗概率,根據觀測值(observation),也可稱為test evidence:
是否為陽性,來判斷得癌症的后驗概率,這就是基本的貝葉斯思想

 

3、參數估計 成為了統計學里很大的一個課題,古典統計學中常用的方法有兩種?

矩方法(momnet) 和 最大似然估計(maximum likelihood estimate, mle)
我們常用的像上面擲硬幣例子中求均值的方法,本質就是矩估計方法,這是基於大數定理的。
而統計學中更廣泛的是使用最大似然估計的方法

 

4、貝葉斯統計學的哲學思想?

說回來,我們上面就說到了古典概率學的弊端就是如果擲了2次都是正面,那我們就會認為正面的概率是1,
而在貝葉斯統計學中,如果我們擲了2次都是正面,只能說明正面是1的可能性最大,但還是有可能為0.5, 0.6, 0.7等等的,這就是對古典統計學的一種完善和補充,
於是我們也就是解釋了,我們所謂的 地震的概率為5%;生病的概率為10%等等這些概率的意義了,這就是貝葉斯統計學的哲學思想。

 

 

 

二、貝葉斯公式的理解(轉)

轉自:貝葉斯公式的理解
https://blog.csdn.net/qq_37953276/article/details/79297316



最近我自己在學習一些關於機器學習的東西,目前學到了貝葉斯統計這一塊,我覺得很感興趣,於是便找了一些資料看了看,在自己琢磨一段時間后,寫了一篇博客,原文地址:機器學習(一) —— 淺談貝葉斯和MCMC。正好題主也說了希望從哲學角度解釋一下,我自認為文章寫得還算深入淺出,能給大家帶來幫助。

為了有打廣告之嫌疑,我還是內文章內主要的內容在這里重新編輯一遍,省去全文中MCMC和sklearn的部分,有興趣的可以自行前往。

淺談貝葉斯

不論是學習概率統計還是機器學習的過程中,貝葉斯總是是繞不過去的一道坎,大部分人在學習的時候都是在強行地背公式和套用方法,沒有真正去理解其牛逼的思想內涵。我看了一下自己學校里一些涉及到貝葉斯統計的課程,content里的第一條都是 Philosophy of Bayesian statistics

歷史背景

什么事都要從頭說起,貝葉斯全名為托馬斯·貝葉斯(Thomas Bayes,1701-1761),是一位與牛頓同時代的牧師,是一位業余數學家,平時就思考些有關上帝的事情,當然,統計學家都認為概率這個東西就是上帝在擲骰子。當時貝葉斯發現了古典統計學當中的一些缺點,從而提出了自己的“貝葉斯統計學”,但貝葉斯統計當中由於引入了一個主觀因素(先驗概率,下文會介紹),一點都不被當時的人認可。直到20世紀中期,也就是快200年后了,統計學家在古典統計學中遇到了瓶頸,伴隨着計算機技術的發展,當統計學家使用貝葉斯統計理論時發現能解決很多之前不能解決的問題,從而貝葉斯統計學一下子火了起來,兩個統計學派從此爭論不休。

什么是概率?

什么是概率這個問題似乎人人都覺得自己知道,卻有很難說明白。比如說我問你 擲一枚硬幣為正面的概率為多少?,大部分人第一反應就是50%的幾率為正。不好意思,首先這個答案就不正確,只有當材質均勻時硬幣為正面的幾率才是50%(所以不要覺得打麻將的時候那個骰子每面的幾率是相等的,萬一被做了手腳呢)。好,那現在假設硬幣的材質是均勻的,那么為什么正面的幾率就是50%呢?有人會說是因為我擲了1000次硬幣,大概有492次是正面,508次是反面,所以近似認為是50%,說得很好(擲了1000次我也是服你)。
擲硬幣的例子說明了古典統計學的思想,就是概率是基於大量實驗的,也就是 大數定理。那么現在再問你,有些事件,例如:明天下雨的概率是30%;A地會發生地震的概率是5%;一個人得心臟病的概率是40%…… 這些概率怎么解釋呢?難道是A地真的100次的機會里,地震了5次嗎?肯定不是這樣,所以古典統計學就無法解釋了。再回到擲硬幣的例子中,如果你沒有機會擲1000次這么多次,而是只擲了3次,可這3次又都是正面,那該怎么辦?難道這個正面的概率就是100%了嗎?這也是古典統計學的弊端。

舉個例子:生病的幾率

一種癌症,得了這個癌症的人被檢測出為陽性的幾率為90%,未得這種癌症的人被檢測出陰性的幾率為90%,而人群中得這種癌症的幾率為1%,一個人被檢測出陽性,問這個人得癌症的幾率為多少?

猛地一看,被檢查出陽性,而且得癌症的話陽性的概率是90%,那想必這個人應該是難以幸免了。那我們接下來就算算看。

我們用 A 表示事件 “測出為陽性”, 用 B_1 表示“得癌症”, B_2 表示“未得癌症”。根據題目,我們知道如下信息:

P(A|B_{1}) = 0.9, P(A|B_{2}) = 0.1, P(B_{1}) = 0.01, P(B_{2}) = 0.99

那么我們現在想得到人群中檢測為陽性且得癌症的幾率 P(B_{1},A) :

P(B_{1},A) = P(B_{1}) \cdot P(A|B_{1}) = 0.01 \times 0.9 = 0.009

這里 P(B_{1},A) 表示的是聯合概率,得癌症且檢測出陽性的概率是人群中得癌症的概率乘上得癌症時測出是陽性的幾率,是0.009。同理可得未得癌症且檢測出陽性的概率:

P(B_{2},A) = P(B_{2}) \cdot P(A|B_{2}) = 0.99 \times 0.1 = 0.099

這個概率是什么意思呢?其實是指如果人群中有1000個人,檢測出陽性並且得癌症的人有9個,檢測出陽性但未得癌症的人有99個。可以看出,檢測出陽性並不可怕,不得癌症的是絕大多數的,這跟我們一開始的直覺判斷是不同的!可直到現在,我們並沒有得到所謂的“在檢測出陽性的前提下得癌症的 概率 ”,怎么得到呢?很簡單,就是看被測出為陽性的這108(9+99)人里,9人和99人分別占的比例就是我們要的,也就是說我們只需要添加一個歸一化因子(normalization)就可以了。所以陽性得癌症的概率 P(B_{1}|A) 為:\frac{0.009}{0.099 + 0.009} \approx 0.083 , 陽性未得癌症的概率 P(B_{2}|A) 為: \frac{0.099}{0.099 + 0.009} \approx 0.917 。 這里 P(B_{1}|A)P(B_{2}|A) 中間多了這一豎線 | 成為了條件概率,而這個概率就是貝葉斯統計中的 后驗概率!而人群中患癌症與否的概率 P(B_{1}), P(B_{2}) 就是 先驗概率!我們知道了先驗概率,根據觀測值(observation),也可稱為test evidence:是否為陽性,來判斷得癌症的后驗概率,這就是基本的貝葉斯思想,我們現在就能得出本題的后驗概率的公式為:

 

P(B_{i}|A) = \frac{P(B_{i}) \cdot P(A|B_{i})}{P(B_{1}) \cdot P(A|B_{1}) + P(B_{2}) \cdot P(A|B_{2})}

由此就能得到如下的貝葉斯公式的一般形式。

 

貝葉斯公式

我們把上面例題中的 A 變成樣本(sample) x , 把 B 變成參數(parameter) \theta , 我們便得到我們的貝葉斯公式:

\pi(\theta_i|x) = \frac{f(x|\theta_i)\pi(\theta_i)}{\sum_i f(x|\theta_i)\pi(\theta_i)}

可以看出上面這個例子中,B 事件的分布是離散的,所以在分母用的是求和符號 \sum 。那如果我們的參數\theta的分布是連續的呢?沒錯,那就要用積分,於是我們終於得到了真正的 貝葉斯公式

\pi(\theta|x) = \frac{f(x|\theta)\pi(\theta)}{\int_\Theta f(x|\theta)\pi(\theta)d\theta}

其中\pi指的是參數的概率分布, \pi(\theta) 指的是先驗概率,\pi(\theta|x)指的是后驗概率, f(x|\theta) 指的是我們觀測到的樣本的分布,也就是似然函數(likelihood),記住 豎線|左邊的才是我們需要的。其中積分求的區間 \Theta 指的是參數 \theta 所有可能取到的值的域,所以可以看出后驗概率 \pi(\theta|x) 是在知道 x 的前提下在 \Theta 域內的一個關於 \theta 的概率密度分布,每一個 \theta 都有一個對應的可能性(也就是概率)。

 

理解貝葉斯公式

這個公式應該在概率論書中就有提到,反正當時我也只是死記硬背住,然后遇到題目就套用。甚至在國外讀書時學了一門統計推斷的課講了貝葉斯,大部分時間我還是在套用公式,直到后來結合了一些專門講解貝葉斯的課程和資料才有了一些真正的理解。要想理解這個公式,首先要知道這個豎線 | 的兩側一會是 x|\theta ,一會是 \theta|x 到底指的是什么,或者說似然函數和參數概率分布到底指的是什么。

似然函數

首先來看似然函數 f(x|\theta) ,似然函數聽起來很陌生,其實就是我們在概率論當中看到的各種概率分布 f(x),那為什么后面要加個參數 |\theta 呢?我們知道,擲硬幣這個事件是服從伯努利分布的 Ber(p) , n 次的伯努利實驗就是我們熟知的二項分布 Bin(n,p) , 這里的 p 就是一個參數,原來我們在做實驗之前,這個參數就已經存在了(可以理解為上帝已經定好了),我們抽樣出很多的樣本 x 是為了找出這個參數,我們上面所說的擲硬幣的例子,由於我們擲了1000次有492次是正面,根據求期望的公式 n \cdot p = \mu (492就是我們的期望)可以得出參數p\frac{492}{1000} = 0.492 ,所以我們才認為正面的概率是近似50%的。

現在我們知道了,其實我們觀測到樣本x的分布是在以某個參數\theta為前提下得出來的,所以我們記為 f(x|\theta) ,只是我們並不知道這個參數是多少。所以 參數估計 成為了統計學里很大的一個課題,古典統計學中常用的方法有兩種:矩方法(momnet)最大似然估計(maximum likelihood estimate, mle) ,我們常用的像上面擲硬幣例子中求均值的方法,本質就是矩估計方法,這是基於大數定理的。而統計學中更廣泛的是使用最大似然估計的方法,原理其實很簡單,在這簡單說一下:假設我們有n個樣本 x_1, x_2, x_3, ..., x_n, 它們每一個變量都對應一個似然函數:

f(x_1|\theta), f(x_2|\theta), ..., f(x_n|\theta)

我們現在把這些似然函數乘起來:

lik(\theta) = \prod_{i=1}^{n} f(x_i|\theta)

我們只要找到令lik(\theta)這個函數最大的 \theta 值,便是我們想要的參數值(具體計算參考[2]中p184)。

 

后驗分布(Posterior distribution)

現在到了貝葉斯的時間了。以前我們想知道一個參數,要通過大量的觀測值才能得出,而且是只能得出一個參數值。而現在運用了貝葉斯統計思想,這個后驗概率分布\pi(\theta|x)其實是一系列參數值\theta的概率分布,再說簡單點就是我們得到了許多個參數\theta及其對應的可能性,我們只需要從中選取我們想要的值就可以了:有時我們想要概率最大的那個參數,那這就是 后驗眾數估計(posterior mode estimator);有時我們想知道參數分布的中位數,那這就是 后驗中位數估計(posterior median estimator);有時我們想知道的是這個參數分布的均值,那就是 后驗期望估計。這三種估計沒有誰好誰壞,只是提供了三種方法得出參數,看需要來選擇。現在這樣看來得到的參數是不是更具有說服力?

 

置信區間和可信區間

在這里我想提一下 置信區間(confidence interval, CI)可信區間(credibility interval,CI),我覺得這是剛學貝葉斯時候非常容易弄混的概念。
再舉個例子:一個班級男生的身高可能服從某種正態分布 N(\mu,\sigma^2) ,然后我們把全班男生的身高給記錄下來,用高中就學過的求均值和方差的公式就可以算出來這兩個參數,要知道我們真正想知道的是這個參數 \mu,\sigma^2,當然樣本越多,得出的結果就接近真實值(其實並沒有人知道什么是真實值,可能只有上帝知道)。等我們算出了均值和方差,我們這時候一般會構建一個95%或者90%的置信區間,這個置信區間是對於 樣本x來說的,我只算出了一個 \mu 和 一個 \sigma 參數值的情況下,95%的置信區間意味着在這個區間里的樣本是可以相信是服從以\mu, \sigma為參數的正態分布的,一定要記住置信區間的概念中是指 一個參數值 的情況下!
而我們也會對我們得到的后驗概率分布構造一個90%或95%的區間,稱之為可信區間。這個可信區間是對於 參數\theta來說的,我們的到了 很多的參數值,取其中概率更大一些的90%或95%,便成了可信區間。

 

先驗分布(Prior distribution)

說完了后驗分布,現在就來說說先驗分布。先驗分布就是你在取得實驗觀測值以前對一個參數概率分布的 主觀判斷,這也就是為什么貝葉斯統計學一直不被認可的原因,統計學或者數學都是客觀的,怎么能加入主觀因素呢?但事實證明這樣的效果會非常好!
再拿擲硬幣的例子來看(怎么老是拿這個舉例,是有多愛錢。。。),在扔之前你會有判斷正面的概率是50%,這就是所謂的先驗概率,但如果是在打賭,為了讓自己的描述准確點,我們可能會說正面的概率為0.5的可能性最大,0.45的幾率小點,0.4的幾率再小點,0.1的幾率幾乎沒有等等,這就形成了一個先驗概率分布。

那么現在又有新的問題了,如果我告訴你這個硬幣的材質是不均勻的,那正面的可能性是多少呢?這就讓人犯糊塗了,我們想有主觀判斷也無從下手,於是我們就想說那就先認為0~1之間每一種的可能性都是相同的吧,也就是設置成0~1之間的均勻分布 Uni(0,1) 作為先驗分布吧,這就是貝葉斯統計學當中的 無信息先驗(noninformative prior)!那么下面我們就通過不斷擲硬幣來看看,這個概率到是多少,貝葉斯過程如下: (圖來自[3])

 

<img src="https://pic2.zhimg.com/50/v2-3ef5e8c52f6257d7624dcae8496dc14c_hd.jpg" data-caption="" data-size="normal" data-rawwidth="928" data-rawheight="334" class="origin_image zh-lightbox-thumb" width="928" data-original="https://pic2.zhimg.com/v2-3ef5e8c52f6257d7624dcae8496dc14c_r.jpg">

 

<img src="https://pic2.zhimg.com/50/v2-0fc8c439d5a4eebf0ca11b46d1b5135d_hd.jpg" data-caption="" data-size="normal" data-rawwidth="937" data-rawheight="318" class="origin_image zh-lightbox-thumb" width="937" data-original="https://pic2.zhimg.com/v2-0fc8c439d5a4eebf0ca11b46d1b5135d_r.jpg">

從圖中我們可以看出,0次試驗的時候就是我們的先驗假設——均勻分布,然后擲了第一次是正面,於是概率分布傾向於1,第二次又是正,概率是1的可能性更大了,但 注意:這時候在0.5的概率還是有的,只不過概率很小,在0.2的概率變得更小。第三次是反面,於是概率分布被修正了一下,從為1的概率最大變成了2/3左右最大(3次試驗,2次正1次反當然概率是2/3的概率最大)。再下面就是進行更多次的試驗,后驗概率不斷根據觀測值在改變,當次數很大的時候,結果趨向於0.5(哈哈,結果這還是一枚普通的硬幣,不過這個事件告訴我們,直覺是不可靠的,一定親自實驗才行~)。有的人會說,這還不是在大量數據下得到了正面概率為0.5嘛,有什么好稀奇的? 注意了!畫重點了!(敲黑板) 記住,不要和一個統計學家或者數學家打賭!跑題了,跑題了。。。說回來,我們上面就說到了古典概率學的弊端就是如果擲了2次都是正面,那我們就會認為正面的概率是1,而在貝葉斯統計學中,如果我們擲了2次都是正面,只能說明正面是1的可能性最大,但還是有可能為0.5, 0.6, 0.7等等的,這就是對古典統計學的一種完善和補充,於是我們也就是解釋了,我們所謂的 地震的概率為5%;生病的概率為10%等等這些概率的意義了,這就是貝葉斯統計學的哲學思想。

 

共軛先驗(Conjugate prior)

共軛先驗應該是每一個貝葉斯統計初學者最頭疼的問題,我覺得沒有“之一”。這是一個非常大的理論體系,我試着用一些簡單的語言進行描述,關鍵是去理解其思想。
繼續拿擲硬幣的例子,這是一個二項試驗 Bin(n,p) ,所以其似然函數為:

f(x|\theta) = \binom{n}{x} \theta^x(1-\theta)^{n-x}

在我們不知道情況時就先假設其先驗分布為均勻分布 Uni(0,1) ,即:

\pi(\theta) = 1, \theta \in (0,1)

那現在根據貝葉斯公式求后驗概率分布:

\pi(\theta|x) = \frac{\theta^x(1-\theta)^{n-x}}{\int_0^1\theta^x(1-\theta)^{n-x}d\theta}

我們得到結果為:

\pi(\theta|x) = \frac{\Gamma(n+2)}{\Gamma(x+1)\Gamma(n-x+1)}\theta^{(x+1)-1}(1-\theta)^{(n-x+1)-1}

這么一大串是什么呢?其實就是大名鼎鼎的貝塔分布(Beta distribution)。 簡寫就是 Be(x+1,n-x+1) 。 比如我擲了10次(n=10),5次正(x=5),5次反,那么結果就是 Be(6,6) , 這個分布的均值就是0.5( \frac{6}{6+6} ),很符合我們想要的結果。

現在可以說明,我們把主觀揣測的先驗概率定為均勻分布是合理的,因為我們在對一件事物沒有了解的時候,先認為每種可能性都一樣是非常說得通的。有人會認為,既然無信息先驗是說得通的,而且貝葉斯公式會根據我們的觀測值不斷更新后驗概率,那是不是我們隨便給一個先驗概率都可以呢?當然......不行!!這個先驗概率是不能瞎猜的,是需要根據一些前人的經驗和常識來判斷的。比如我隨便猜先驗為一個分段函數:

 

\pi(\theta) = \begin{cases} 1 & \text{ if }\theta\in(0,0.2),(0.3,0.5),(0.7,1) \\\ 0 & \text{ if }\theta\in(0.2,0.3),(0.5,0.7) \end{cases}

靠,是不是很變態的一個函數...就是假設一個極端的情況,如果你把這個情況代入貝葉斯公式,結果是不會好的(當然我也不知道該怎么計算)。

這個例子中,我看到了可能的后驗分布是 Beta 分布,看起來感覺有點像正態分布啊,那我們用正態分布作為先驗分布可以嗎?這個是可以的(所以要學會觀察)。可如果我們把先驗分布為正態分布代入到貝葉斯公式,那計算會非常非常麻煩,雖然結果可能是合理的。那怎么辦?不用擔心,因為我們有共軛先驗分布!

繼續拿上面這個例子,如果我們把先驗分布 \pi(\theta) 設為貝塔分布 Beta(a,b) ,結果是什么呢?我就不寫具體的計算過程啦,直接給結果:

\pi(\theta|x) = Beta(x+a,n-x+b)

有沒有看到,依然是貝塔分布,結果只是把之前的1換成了 a,b (聰明的你可能已經發現,其實我們所說的均勻分布 Uni(0,1) 等價於 Beta(1,1) ,兩者是一樣的)。

由此我們便可以稱 二項分布的共軛先驗分布為貝塔分布注意!接着畫重點!:共軛先驗這個概念必須是基於似然函數來討論的,否則沒有意義! 好,那現在有了共軛先驗,然后呢?作用呢?這應該是很多初學者的疑問。

現在我們來看,如果你知道了一個觀測樣本的似然函數是二項分布的,那我們把先驗分布直接設為 Beta(a,b) ,於是我們就 不用計算復雜的含有積分的貝葉斯公式 便可得到后驗分布 Beta(x+a,n-x+b) 了!!!只需要記住試驗次數 n ,和試驗成功事件次數 x 就可以了!互為共軛的分布還有一些,但都很復雜,用到的情況也很少,推導過程也極其復雜,有興趣的可以自行搜索。我說的這個情況是最常見的!

注意一下,很多資料里會提到一個概念叫偽計數(pseudo count),這里的偽計數值得就是a,b對后驗概率分布的影響,我們會發現如果我們取 Beta(1,1) ,這個先驗概率對結果的影響會很小,可如果我們設為 Beta(100,100) ,那么我們做10次試驗就算是全是正面的,后驗分布都沒什么變化。

參考書籍

[1]韋來生,《貝葉斯統計》,高等教育出版社,2016
[2]John A.Rice, 《數理統計與數據分析》(原書第三版), 機械工業出版社, 2016
[3]Cameron Davidson-Pilon, Probabilistic Programming and Bayesian Methods for Hackers(github.com/CamDavidsonP), 2016

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM