本文目錄一覽:
貝葉斯的mcmc演算法怎麼在matlab里實現呀 或者gibbs抽樣 求代碼
MATLAB中只有矩陣和cell,如果是想要在matlab里實現
要取出第r行、第c列的矩陣元素用:A(r,c)
要取出第r行、第c列的cell成員用:A{r,c}
吉布斯抽樣是什麼
吉布斯採樣是生成馬爾科夫鏈的一種方法,生成的馬爾科夫鏈可以用來做蒙特卡洛模擬,從而求得一個較複雜的多元分布。
吉布斯採樣的具體做法:假設有一個k維的隨機向量,現想要構造一條有n個樣本的k維向量(n樣本馬爾科夫序列),那麼(隨機)初始化一個k維向量,然後固定這個向量其中的k-1個元素,抽取剩下的那個元素(生成給定後驗的隨機數),這樣循環k次,就把整個向量更新了一遍,也就是生成了一個新的樣本,把這個整體重複n次就得到了一條馬爾科夫鏈。
什麼是吉布斯採樣演算法
幾個可以學習gibbs sampling的方法
1,讀Bishop的Pattern Recognition and Machine Learning,講的很清楚,但是我記得好像沒有例子。
2,讀artificial Intelligence,2、3版,都有。但是我沒讀過。
3,最方便的,查wiki,這個說的最清楚。
這裡通俗點的解釋一下。首先,什麼是sampling。sampling就是以一定的概率分布,看發生什麼事件。舉一個例子。甲只能E:吃飯、學習、打球,時間T:上午、下午、晚上,天氣W:晴朗、颳風、下雨。現在要一個sample,這個sample可以是:打球+下午+晴朗。。。
問題是我們不知道p(E,T,W),或者說,不知道三件事的聯合分布。當然,如果知道的話,就沒有必要用gibbs sampling了。但是,我們知道三件事的conditional distribution。也就是說,p(E|T,W),p(T|E,W),p(W|E,T)。現在要做的就是通過這三個已知的條件分布,再用gibbs sampling的方法,得到joint distribution。
具體方法。首先隨便初始化一個組合,i.e. 學習+晚上+颳風,然後依條件概率改變其中的一個變數。具體說,假設我們知道晚上+颳風,我們給E生成一個變數,比如,學習-》吃飯。我們再依條件概率改下一個變數,根據學習+颳風,把晚上變成上午。類似地,把颳風變成颳風(當然可以變成相同的變數)。這樣學習+晚上+颳風-》吃飯+上午+颳風。
同樣的方法,得到一個序列,每個單元包含三個變數,也就是一個馬爾可夫鏈。然後跳過初始的一定數量的單元(比如100個),然後隔一定的數量取一個單元(比如隔20個取1個)。這樣sample到的單元,是逼近聯合分布的。
我也是剛wiki到的,可能不完全正確,歡迎討論:
zhangshiqihit@yahoo.com.cn
gibbs抽樣的英文
Examples show that the results obtained using laplace method are very close to that obtained using gibbs samppng method
實例表明通過laplace方法得到的估計與利用 gibbs抽樣 方法得到的參數的bayes估計很接近。
For example , to the general models such as follows : with the apppcation of the serial important function and the gibbs algorithms in mcmc methods , i give some results in the choice of the important function and how to use the gibbs algorithms in the forecasting of the models
例如,對於如下一般模型:分別應用序列重要抽樣的方法和mcmc方法中的 gibbs抽樣 演算法對上述模型作預測,並且對於重要函數的選取和抽樣的可行性提出了幾個結論。
原創文章,作者:MGKBX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/317637.html