如何簡單易懂地理解貝葉斯非參數模型?

如題


簡單說貝葉斯非參數模型就是參數是無限維的貝葉斯模型。

PS:貝葉斯非參和非參(比如K近鄰、決策樹之類的)有共同點,就是模型可以自動適應數據。不同的是貝葉斯非參是在貝葉斯的框架下提出的。

==從頭捋一遍==

模型是用來描述數據的。概率模型就是從概率的角度描述數據:對於給定的數據集X={x_1, x_2, ..., x_n},我們認為這個數據集裡面的元素是從某個概率分布M獨立採樣得到的,即x_1, x_2, ..., x_n stackrel{	ext{i.i.d}}{sim} M

模型估計問題就是給定X找到這樣一個M。之後我們會找一個參數控制的模型的集合mathcal{M}={M_	heta|	hetain S},把在函數空間中尋找最佳M的問題轉換成某參數空間S中尋找最佳參數	heta^*的問題。例如我們可以定義某目標函數mathcal{L}(	heta|X),例如似然函數mathcal{L}(	heta|X)=prod_{i=1}^n p_	heta(x_i),這裡p_	heta為分布M_	heta的概率密度函數,然後在S上優化mathcal{L}(	heta|X)就可以得到最佳參數	heta^*和對應的模型P_{	heta^*}

上面這個方法叫頻率方法。貝葉斯是另一回事兒,不過mathcal{M}={M_	heta|	hetain S}還是有的,但是我的目標並不是找一個特定的	heta^*作為最優解,而是在S上定義一個概率分布P_	heta作為	heta的先驗分布,然後再根據數據X計算	heta的後驗分布,即p(	heta|X)propto p(	heta)prod_{i=0}^{n}p_	heta(x_i),這裡p(	heta)P_	heta對應的密度函數。

舉個例子,給你個硬幣,讓你估計正面的概率(伯努利分布的參數),你扔了100次,有60次朝上,頻率方法估計的結果就是正面向上的概率為0.6,貝葉斯方法的結果可能是這麼個樣子:正面向上概率為0.6的概率是0.9,概率為0.4的概率為0.1

而貝葉斯參數和非參數的區別主要就在這個S上面。簡單說如果S是有限維的,比如mathbb{R}^n,那這個模型就叫參數模型,如果S是無限維的就叫非參數模型。非參數模型中的P_	heta一般要藉助隨機過程來描述。

簡單地概括地來說就是這樣吧。具體的每一種非參模型又有其具體的技術細節,複雜的多了。


要看你手上的是哪種貝葉斯非參模型。貝葉斯非參模型太多了... 龍生九子各有不同,不同模型/方法差異還挺大的。

總體來說貝葉斯非參方法的建模對象是distribution(或probability measure)。你的prior information是the distribution is centered around some other distribution (比如N(mu,sigma^2)),然後再通過觀測到的數據點更新你的distribution。以Dirichlet Process為例,如果把prior distribution想像成一個step function,那麼你的prior是這些steps jointly follow a Dirichlet distribution(如上例中,這個Dirichlet distribution的參數來自於另一個prior distribution,比如normal)。數據進來之後,有observation的地方,台階的高度得到更新(某種意義上台階的寬度也由此明確),沒有observation的地方,台階的高度依舊來自prior。關鍵是更新之後,這些台階的高度仍然是follow a distribution,而不是定值。正因為唯有有數據的地方台階高度才會更新,in some sense it has a pointwise update, 所以這個方法是非參數方法。

Bayesian nonparametric methods 還是挺難理解的,主要比較counter-intuitive,上面也只是很粗略地解釋一下它的idea而已,具體還是要你自己看書/推導/建模之後才比較容易消化。


先捋一捋參數模型和非參數模型的區別。

參數模型就是知道變數的分布,但是不知道這個分布的參數,比如知道x服從參數為p的二項分布,因此我們在經過試驗得到x的樣本後,要反推回p到底是什麼。

非參數模型都是不知道變數的分布,更不用說什麼參數了,比如對於變數x,現在有一堆試驗得到的x的樣本,我們要做的,是估計x的分布函數(或者x的秩的分布函數、x大於0的個數的分布函數……反正要找一個與x有關的變數,估計它的分布函數)在每個點上的取值。那麼怎麼在不知道x的分布時估計x(或x的秩、x大於0的個數……)的分布函數在每個點上的取值呢?其實很暴力,就是假定它服從某個分布。

比如秩檢驗,給定x的樣本但不知道x的分布,那麼我就從x的秩入手,因為x的秩W依概率服從正態分布,這樣就可以通過x的樣本算出W的具體分布函數了(為什麼變數的秩W就得依概率服從正態分布呀,這麼久了我也沒查到資料,要是有人知道千萬要告訴我。)

其實上面想說的就兩點,已知變數x的樣本要估計分布函數的時候應該怎麼做?

1.如果知道變數x的分布,但不知道分布的參數,比如知道是參數為p的二項分布但不知道p具體是多少,就用參數方法。

2.如果不知道變數x的分布,我們可以假定變數x的分布就是某種分布,或者引入與x有關的其他變數(比如秩),再假定(or算出)這個引入變數的分布,就可以用類似參數方法的方法計算分布了。

回到貝葉斯非參數模型,我目前只學過狄利克雷非參數模型,不過應該是大同小異,就是假定(or算出?)樣本分布的概率(注意是樣本的概率不是樣本)服從狄利克雷過程,接下來就是狄利克雷過程的參數的計算了。


推薦閱讀:

四億個兌換碼的生成/驗證演算法?
應該如何擺多米諾骨牌?
負數與負數相乘為什麼會得正?
Size Balanced Tree 真的是國內 ACM 選手陳啟峰的發明嗎?
最優不規則五邊形演算法?

TAG:演算法 | 數據挖掘 | 數學 | 機器學習 | 統計 |