马尔可夫“折棍子”过程 Markovian Stick-breaking Process 在直方图平滑中的应用
馬爾可夫“折棍子”過程 Markovian Stick-breaking Process 在直方圖平滑中的應用
- 用Dirichlet prior做Histogram Smoothing
- 用Markovian Stick-breaking Prior做Histogram Smoothing
- Dirichlet Generator
- Tridiagonal Generator
上一篇介紹了Markovian Stick-breaking Process的構造,這一篇介紹它在非參貝葉斯統計中的一個簡單應用——Histogram Smoothing。
用Dirichlet prior做Histogram Smoothing
這個toy example來自WILLIAM LIPPITT AND SUNDER SETHURAMAN的manuscript(ON THE USE OF MARKOVIAN STICK-BREAKING PRIORS)。
假設一個鞋店老板想了解附近居民的鞋碼分布,假設有ddd種尺碼。在實際走訪之前,因為他沒有任何關于鞋碼分布的先驗信息,于是他決定使用non-informative measure:
μ=1?d\mu=\frac{\vec 1}ze8trgl8bvbqμ=d1?
在他走訪之后,記下了每種鞋碼對應的人數,用f?\vec ff?表示;如果先驗為Dirichlet(θμ)Dirichlet(\theta \mu)Dirichlet(θμ),則對于Multinomial的數據,后驗為Dirichlet(θμ+f?)Dirichlet(\theta\mu+\vec f)Dirichlet(θμ+f?),后驗均值為
θμ+f?θ+f?T1?\frac{\theta \mu+\vec f}{\theta+\vec f^T \vec 1}θ+f?T1θμ+f??
因此θ\thetaθ可以代表先驗的強度,θ\thetaθ越大,先驗對后驗的影響就越大。
上圖展示了Dirichlet prior的缺陷,在處理count data的時候,如果某些類別的數據樣本很少(中圖),那么在后驗均值中,這些類別也不會被填充(右圖),所以后驗均值的直方圖依舊無法展示數據的真實特征,也就是說Dirichlet prior并沒有完全發掘出所有類別的先驗信息。
用Markovian Stick-breaking Prior做Histogram Smoothing
Dirichlet Generator
要使用MSB(G)MSB(G)MSB(G)作為先驗的話,需要先確定generator matrix GGG,因為Dirichlet prior是MSB(G)MSB(G)MSB(G)的一個特例,我們可以先看看Dirichlet prior Dirichlet(α)Dirichlet(\alpha)Dirichlet(α)對應的generator matrix。
用有向圖代表Dirichlet prior不同category(在這個例子中就是鞋碼)之間的dependence,但是Dirichlet prior中不同category是獨立的,因此從節點iii到jjj的有向邊的權重只取決于jjj,對于Dirichlet(α)Dirichlet(\alpha)Dirichlet(α)而言,這個權重與αj\alpha_jαj?成正比(簡單起見可以就用αj\alpha_jαj?),因此Dirichlet prior有向圖的伴隨矩陣為
A=[α1α2α3?αdα1α2α3?αdα1α2α3?αd?????α1α2α3?αd]A=\left[ \begin{matrix} \alpha_1 & \alpha_2 & \alpha_3 & \cdots & \alpha_d \\ \alpha_1 & \alpha_2 & \alpha_3 & \cdots & \alpha_d \\ \alpha_1 & \alpha_2 & \alpha_3& \cdots & \alpha_d \\ \cdots & \cdots & \cdots & \cdots & \cdots \\ \alpha_1 & \alpha_2 & \alpha_3 & \cdots & \alpha_d\end{matrix} \right]A=???????α1?α1?α1??α1??α2?α2?α2??α2??α3?α3?α3??α3????????αd?αd?αd??αd?????????
根據Generator的定義把伴隨矩陣修正為generator:
G=[α1?∑i=1dαiα2α3?αdα1α2?∑i=1dαiα3?αdα1α2α3?∑i=1dαi?αd?????α1α2α3?αd?∑i=1dαi]G=\left[ \begin{matrix} \alpha_1-\sum_{i=1}^d \alpha_i & \alpha_2 & \alpha_3 & \cdots & \alpha_d \\ \alpha_1 & \alpha_2-\sum_{i=1}^d \alpha_i & \alpha_3 & \cdots & \alpha_d \\ \alpha_1 & \alpha_2 & \alpha_3-\sum_{i=1}^d \alpha_i & \cdots & \alpha_d \\ \cdots & \cdots & \cdots & \cdots & \cdots \\ \alpha_1 & \alpha_2 & \alpha_3 & \cdots & \alpha_d -\sum_{i=1}^d \alpha_i \end{matrix} \right]G=????????α1??∑i=1d?αi?α1?α1??α1??α2?α2??∑i=1d?αi?α2??α2??α3?α3?α3??∑i=1d?αi??α3????????αd?αd?αd??αd??∑i=1d?αi??????????
這就是Dirichlet prior的generator matrix。
Tridiagonal Generator
根據Dirichlet generator的思想,用有向圖表示不同category之間的dependence structure,再把有向圖的伴隨矩陣改寫為generator的形式,這樣我們就可以根據需求設計category之間的prior dependence structure。
在鞋碼的這個例子中,我們可以假設鞋碼其實是根據連續型隨機變量——腳的長度——離散化之后的結果,因此鞋碼之間的dependence structure應該是:
這兩個結果非常直觀,比如在買鞋的時候,平時穿40鞋的人最多再試一下39或者41,一般不會嘗試38或者42;根據我們對鞋碼之間dependence的認識,我們可以寫出對應有向圖的伴隨矩陣:
A=[ww00wwww?00ww?0?????w00?w]A=\left[ \begin{matrix} w & w & 0 & 0 & w \\ w & w & w & \cdots & 0 \\ 0 & w & w& \cdots & 0 \\ \cdots & \cdots & \cdots & \cdots & \cdots \\ w & 0 & 0 & \cdots & w\end{matrix} \right]A=???????ww0?w?www?0?0ww?0?0?????w00?w????????
這里我做了一點標準化處理,假設category 1與category d相鄰,改寫為generator之后它就成了對角元相同的一個很像三對角矩陣的矩陣(因為有右上左下兩個www,所以并不是三對角矩陣),這是就稱這種generator為tridiagonal generator的原因:
G=[?2ww00ww?2ww?00w?2w?0?????w00??2w]G=\left[ \begin{matrix} -2w & w & 0 & 0 & w \\ w & -2w & w & \cdots & 0 \\ 0 & w & -2w& \cdots & 0 \\ \cdots & \cdots & \cdots & \cdots & \cdots \\ w & 0 & 0 & \cdots & -2w\end{matrix} \right]G=????????2ww0?w?w?2ww?0?0w?2w?0?0?????w00??2w????????
下面是原文的兩個模擬結果:
總結
以上是生活随笔為你收集整理的马尔可夫“折棍子”过程 Markovian Stick-breaking Process 在直方图平滑中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UA MATH567 高维统计专题1 稀
- 下一篇: UA PHYS515A 电磁理论V 电磁