狄利克萊過程模型(一):非引數貝葉斯無限混合模型和Dirichlet過程
[作者按] 這篇文章是根據edwin Chen的部落格 http://blog.echen.me/2012/03/20/infinite-mixture-models-with-nonparametric-bayes-and-the-dirichlet-process/
和劍橋大學的一個ppt,http://mlg.eng.cam.ac.uk/zoubin/talks/uai05tutorial-b.pdf,還有fonnes beck在Bios366的講義,http://nbviewer.ipython.org/github/fonnesbeck/Bios366/blob/master/notebooks/Section5_2-Dirichlet-Processes.ipynb,以及其他材料彙集整理而成。
當前,我們進行聚類使用的方法比如kmeans/Gaussian Mixture modeling,都需要事先指定好要聚多少類,在這裡我們向大家介紹一種不需要指定聚多少類的方法,這種方法可以根據實際情況進行聚類,當往資料集中新增新資料時,產生的聚類數量可能會增多。這種方法就是nonparametrics bayes方法:非引數貝葉斯方法。
A generative story
這個用於從任何資料集中需要聚類的生成模型是這樣工作的:我們首先設想有無數潛在群體,每個群體用一組引數來描述,舉例來說,一個組可以符合一個引數為mui和lambdai的高斯分佈,而這些組的每對引數都來自基本分佈G0.資料集中的資料是這樣生成的:
1.選擇一個聚簇
2.從這個聚簇中進行抽樣,產生一個數據點
舉個例子,我們問10個朋友,他們昨天吃了多少種披薩、薩拉和米飯,我們得到的多個小組可能是這個樣子:
- A Gaussian centered at (pizza = 5000, salad = 100, rice = 500) (i.e., a pizza lovers group).
- A Gaussian centered at (pizza = 100, salad = 3000, rice = 1000) (maybe a vegan group).
- A Gaussian centered at (pizza = 100, salad = 100, rice = 10000) (definitely Asian).
當Alice早上醒來決定吃些東西的時候,她會這麼想,我今天很想吃pizza,於是她從pizza的高斯分佈中進行抽樣,然後我們的大問題就是:我們該怎麼樣把我們的朋友們分配到一個群組中去?
一般來講,關於這個問題,我們應用dirichlet過程模型來解決,說到dirichlet過程,首先得講dirichlet分佈長什麼樣子,它的期望是什麼方差是什麼?
這就是狄利克萊分佈的長相 :
它的期望公式是:
dirichlet分佈有一個很可愛的性質,如下:
百度出不少講dirichlet分佈的帖子,說它是分佈上的分佈,不過我一點都不明白,這種beta分佈的一般化形式,怎麼就成了分佈上的分佈了?後來找到肖智博的PPT看了下,他也是借用nigel Crook的slide,在其中直觀地描述了下dirichlet分佈到底是個什麼東東:
1.對於包含n個隨機變數的多項式分佈的全體,實際上就是在一個n維超平面:
而dirichlet分佈,也即multinomial的共軛先驗分佈,實際描述的是取這個超平面上哪個multinomial可能性有多大的分佈函式,它們受到dirichlet的引數值的控制。
dirichlet process 分佈描述的也是分佈上的分佈。
關於dirichlet process:
它的中心是基線概率測度P0,alpha暫且稱之為分散係數,用於控制得到聚簇數量的多少,alpha越大,越分散,得到的聚簇數量越多。Dirichlet process 分佈(下文簡稱DPP)的期望:
方差是:
本質上講,它是一個無限銳減狄氏分佈,對於每個樣本子集B,其邊緣概率是一個beta分佈:
對於DPP,我們有三個經典的類比
1.中國餐館過程(chinese resteraut process)
2.波利亞罐子模型(polya urn model)
3.掰棍子過程(stick-breaking process)
下面一篇博文依次進行講解。