1. 程式人生 > >從二項式分佈到多項式分佈-從Beta分佈到Dirichlet分佈(講的實在太好了)

從二項式分佈到多項式分佈-從Beta分佈到Dirichlet分佈(講的實在太好了)

原文轉自:http://hi.baidu.com/leifenglian/item/636198016851cee7f55ba652

一、前言

引數估計是一個重要的話題。對於典型的離散型隨機變數分佈:二項式分佈,多項式分佈;典型的連續型隨機變數分佈:正態分佈。他們都可以看著是引數分佈,因為他們的函式形式都被一小部分的引數控制,比如正態分佈的均值和方差,二項式分佈事件發生的概率等。因此,給定一堆觀測資料集(假定資料滿足獨立同分布),我們需要有一個解決方案來確定這些引數值的大小,以便能夠利用分佈模型來做密度估計。這就是引數估計!

對於引數估計,一直存在兩個學派的不同解決方案。一是頻率學派解決方案:通過某些優化準則(比如似然函式)來選擇特定引數值;二是貝葉斯學派解決方案:假定引數服從一個先驗分佈,通過觀測到的資料,使用貝葉斯理論計算對應的後驗分佈。

先驗和後驗的選擇滿足共軛,這些分佈都是指數簇分佈的例子。

引數估計方法的一個限制:是我們人為的假定了引數分佈服從了某種指定形式的分佈函式,這可能在某些特定情況下是不合適的。有一種可選的解決方案是:無參密度估計,他只依賴於觀測資料量的大小,這種方法其實也需要引數,但是這些引數只是控制了模型的複雜性而不是分佈的函式形式。有三種無參密度估計方法:直方圖,最近鄰,核函式。(可能在以後的博文中講述)

本文從以引數估計為目標出發,從二項式分佈講述到多項式分佈,從Beta分佈講述到Dirichlet分佈。(有關離散型隨機變數分佈正態分佈可能在以後博文中講述)

二、二項式分佈與Beta分佈

二項式分佈源自對二元變數的研究。

1)二元變數-貝努力實驗

對於一次貝努力拋硬幣實驗中有兩個結果,我們令x=1是正面,x=0是負面,令是正面的概率為u,則有:

p(x = 1|μ) = μ    (2.1)則x的概率分佈可寫成如下形式:

(2.2)這就是貝努力分佈(注意是一次實驗),它有均值和方差為:

E[x] = μ   (2.3)

var[x] = μ(1 − μ).    (2.4)

現在假定有一個x的觀測資料集D={x1,....,xN},那麼我們能夠構造出引數u的似然函式

(2.5)

根據頻率學派的思路,我們可以通過最大化似然函式來估算出引數u的值。我們選擇最大化似然函式的Log,則對於貝努力分佈,Log似然函式為:

(2.6)

求關於u的導並將導數設定為0可求得:

(2.7)去掉前面的1/N,右邊的式子有個名字叫充分統計量,這裡可用m表示,即N次貝努力實驗中m次出現

所以可得到引數u的最有可能值:(2.8)

現在假設N=m=3,那麼u=1,很明顯與我們的經驗值不符合,因此在小的的觀測資料集下,最大化似然函式的方法容易與觀測資料過度擬合為了解決這個問題,可以根據貝葉斯學派的觀點,引入引數的先驗概率分佈。見下文詳解

2)二項式分佈

在大小為N的資料集中(N重貝努力實驗),以x=1的資料出現的次數為隨機變數,他服從二項式分佈

(2.9)其中(2.10)

注意:二項式分佈也可以作為引數u的似然函式,注意N次貝努力實驗中式子2.5也是作為似然函式

我們分別可以得到二項式分佈的隨機變數的期望和方差,如下:(期望=隨機變數的值*概率)

為什麼要引入二項式分佈呢?繼續

3)Beta分佈

我們需要用貝葉斯理論求得引數u的值,需要給u一個先驗分佈,然後用貝葉斯理論求得u的後驗分佈,進而估計u值。那麼,該選用什麼樣的分佈作為先驗分佈呢?通過觀察似然函式u與(1-u)乘積的形式,我們選用了Beta分佈作為u的先驗分佈,因為根據貝葉斯理論,後驗=似然函式*先驗,我們發現當後驗與先驗同時具有相同的分佈時具有一些優秀的性質,能使我們方便的進行u的估算,現在,似然函式可以如式2.9,當先驗選擇Beta分佈時,後驗正好也是Beta分佈。

Beta分佈:

(2.13)

其中,2.13式左邊的係數為為了確保beta分佈是歸一化的:

(2.14)我們注意到引數u隨機變數的取值在0到1之間

可求得隨機變數的期望和方差:

a與b的值是引數u的分佈中的引數,稱之為超引數

現在,引數的u的後驗分佈可以通過似然函式(2.9)乘以先驗分佈(2.13)來得到,得到的結果只保留與引數u相關的項得:

(2.17)其中l=N-m。

加入歸一化係數後得:

(2.18)

可看到後驗同樣是beta分佈,當先驗和後驗是同一分佈時,我們稱之為共軛

仔細觀測,他擁有優秀的性質:

1 觀測以Gamma函式為分子分母的係數,引數a,b可分別看作事件x=1,x=0的有效觀測量。a的值通過m的增加而增加,b的值通過l的值增加而增加(比較2.13和2.18兩個式子的Gamma係數,可這樣理解:a<— a+m,b<— b+l)

2 如果以後有新增的觀測值,後驗分佈又可作為先驗分佈來進行計算。具體來講,在某一個時間點,有一個觀測值,此時可以得到後驗,之後,每一個觀測值的到來,都以之前的後驗作為先驗,乘以似然函式後,得到修正後的新後驗。在這每一步中,其實我們不需要管什麼似然函式,我們可以將後驗分佈看作是以代表x=1出現“次數”的引數a和代表x=0出現“次數”的引數b為引數的beta分佈,當有一個新的x=1的觀測量到來的時候,m=1,l=0,即a的值相應的加1,否則m=0,l=1即b的值加1。如圖2.3解釋了這一步驟:

圖2.3

    先驗中a=2,b=2,當有新的觀測值到來的時候,新的觀測值是x=1的量,即m=1,l=0,此時後驗中a=3,b=2,如第三個圖。

我們可以把上面第二個優秀的性質所表示的方法看作為序列方法(sequential approach,該方法是貝葉斯觀點中很自然得到的學習方法。他非常適合實時學習場景在某一時刻,有一個觀測資料,或是一小批量資料,在下一批觀測資料到來之前我們就可以丟棄他們,因為我們可以在一開始的小批量資料中得到我們的後驗分佈模型,當有新的一批資料到來時,只需要更新這個模型就夠了。一個實時學習應用場景是:在所有資料到來之前,預測就必須通過之前穩定到達的一部分資料流來做出預測。注意到,因為這種序列方法不需要將所有資料都載入記憶體,因此他在大資料的應用將非常有效。當然,之前頻率學派所使用的最大化似然函式方法也可以轉換成這種序列式方法的。

注意到一個問題,我們的終極目標是什麼?是利用一堆觀測資料集求得的引數u,來對新來的一個數據做出預測,但是注意,我們現在並不直接求引數u,而是求下一次實驗的結果概率,對於拋硬幣實驗,我們要預測下一次實驗出現正面的概率是多少。現在我們來解決這個問題。

我們的目標是在觀察到一堆資料後,要預測下一次出現正面的概率:

注意到沒,他的預測值就是u的後驗分佈的期望。後驗分佈為2.18式,他的期望是:(結合2.15式推出,a<— a+m,b<— b+l

(2.20)這個結果是預測的結果,同時也即引數u的估計值。

是時候和頻率學派做引數估計的方法做比較了:

1 貝葉斯學派採用給引數賦予先驗分佈,並使得先驗與後驗共軛,通過求後驗均值來得到引數的估計,頻率學派通過某個優化準則比如最大化似然函式來求得引數的估計;不管是哪個學派思想,都要用到似然函式,注意到頻率學派所使用的似然函式是N次貝努力實驗下的似然函式,但貝葉斯學派所使用的似然函式是二項式分佈形式的似然函式(二項式分佈是N次貝努力實驗中出現事件A的次數的分佈)。

2 當擁有無限資料量時(上式中m和l都趨向於無窮),貝葉斯方法和頻率學派方法所得到的引數估計是一致的。當在有限的資料量下,貝葉斯學派的引數後驗均值的大小介於前驗均值和頻率學派方法得到引數估計。比如在拋硬幣實驗中,當資料量有限時,先驗均值為0.5,後驗均值將會比先驗大,比頻率學派得到引數估計小。

3 隨著觀測資料的增多,後驗分佈曲線越來越陡峭(越來越集中),即方差越來越小(後驗方差總比前驗方差小),由方差式子2.16可知,當資料量無窮大時,方差趨近於0,即隨著資料越來越多,後驗的不確定性在減小。

三、多項式分佈與Dirichlet分佈

1)多項式分佈

多項式分佈時二項式分佈的擴充套件,在多項式分佈所代表的實驗中,一次實驗會有多個互斥結果,而二項式分佈所代表的實驗中,一次實驗只有兩個互斥結果。具體形式和演變過程聽我慢慢道來。

假設事件發生有K=6個互斥的結果,如果這個結果中某個結果發生了,則令x3=1,如下式:

(2.25)這個向量滿足:,如果我們用uk來表示xk=1是的概率,則向量x的分佈為

(2.26),其中,滿足

注意到,向量x的分佈在數學上並沒有正式的名字,他其實就是貝努力分佈如果在實驗結果大於兩種情況下的分佈。在2.25式所示的向量中,則對應有

p(x|u)=u3。

很容易得到概率值的歸一化形式:,進一步得到在u的條件下,向量x的期望:

(2.28)注意到Σ的下標x所表示的是一次實驗的各種可能的值,對於上例,p(x|u)x=[0 0 u3 0 0 0]的轉置,Σ之後就得到了u向量。

現在我們考慮一個數據集D,他有N個如上的獨立實驗結果,X1,....XN。我們可以得到似然函式(參照多次貝努力實驗時的似然函式)有如下形式:

(2.29)其中mk稱為這個分佈的充分統計量。它有如下等式:(2.30),即mk表示的是N次實驗中,互斥第k個結果出現的次數。

同樣的,就像N次貝努力實驗一樣,依照頻率學派的觀點的條件下,我們可以極大化似然函式P(D|u)以求得我們的引數向量u,可以引入拉格朗日乘子將這個條件和似然函式合併到一起,並求log得到:

(2.31),通過求關於uk的導數並等於0得到結果:

(2.32)將拉格朗日乘子滿足:λ=-N,可以得到終極結果:

(2.33)注意到uk最有可能的估計值為N次實驗中,第k個互斥結果的比例。

說到現在,多項式分佈的影子還沒有呢,考慮數量m1,...,mk的聯合分佈(即k個不同互斥結果在N次實驗中出現次數的聯合分佈),在引數u和N個觀測資料的條件下,得到多項式分佈:

係數即(2.35)即N個數據分配到K組,

和二項式分佈作為似然函式一樣,多項式分佈也作為在貝葉斯學派下的似然函式

2)Dirichlet分佈

為求得引數向量u的值,根據貝葉斯學派的觀點,我們要引入u的先驗,同時使得先驗和後驗共軛。同樣,通過觀察多項式分佈似然函式的形式,先驗分佈選取形式為:

(2.37)其中,向量a表示,加入係數正規化,得到Dirichlet先驗分佈的正式表示:

(2.38),其中

因為u總和是常量,在分佈在{uk}上的空間被限定在k-1維上,這句話不好理解,假設現在K=3,那麼a的維就是a1和a2兩維,我們可以畫出如下分佈圖:

圖2.5,水平軸方向是簡化了的{αk},垂直方向的值密度值,即先驗引數值u向量的值。第一個圖是{αk}=0.1,此時圖中三個尖尖表示三個u值,即u1,u2,u3,第二個圖是{αk}=1,第三個是{αk}=10。

乘以先驗和多項式分佈似然函式,可得引數{uk}的後驗分佈:

可看出後驗也是Dirichlet分佈,即後驗與先驗是關於多項式分佈的共軛。比較2.38,加入歸一化係數得:

其中跟beta後驗把a,b當著x=1和x=0的有效觀測量一樣,我們也可以把ak當著是xk=1事件的觀測量,即ak的值通過mk的值增加而增加

四、後記——Beta分佈,Dirichlet分佈的應用

介紹這些分佈的目的是為了做引數估計,引數估計的方法大致分為兩種,一種是頻率學派利用某些優化準則求得引數值,一種是貝葉斯學派通過給引數先驗分佈,同時使後驗與先驗共軛,求得引數後驗均值以得到引數估計。

接下來要學習的是主題模型PLSA和LDA,這兩個模型都與這些分佈密不可分。

主題模型的概率表示:

p(詞語|文件)可通過觀察資料集求得。那麼右邊的兩個概率分佈如何求得的?將這兩個分佈看著是上帝的遊戲:上帝為了創造一篇文件,先用一個有M個面的骰子做實驗,M個面代表M個主題,每做一次投骰子實驗,就可以得到M個主題中的一個,進行多次投擲,就可以得到一篇文件的多個主題,可以看到這個實驗描述的分佈就是多項式分佈。同樣的某個主題下有多個詞語,某個主題骰子有N個面,每個面表示一個詞語(即詞袋),每做一次投骰子實驗,就可得到N個詞中的一個,進行多次投擲,就可以得到一個主題下多個詞語,同樣可以看出這個實驗也服從多項式分佈。我們可以將他們的先驗都取Dirichlet分佈。後面LDA相關的博文將會繼續深入。