1. 程式人生 > >狄利克萊過程模型(一):非引數貝葉斯無限混合模型和Dirichlet過程

狄利克萊過程模型(一):非引數貝葉斯無限混合模型和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)

        下面一篇博文依次進行講解。