混合ポアソン分布は混合分布の1例で、離散値をとり多峰性を持つような分布を表現する際に、よく用いられます。
混合ポアソン分布のパラメータを推定する場合、EMアルゴリズムや変分推論などの手法に加えて、MCMCの1つである、ギブスサンプリング等を用いて、事後分布のパラメータを推定することがでいます。
今回は、混合ポアソン分布におけるパラメータの事後分布を、ギブスサンプリングによって求めていきます。
混合ポアソン分布のモデルや生成モデルの詳細については、こちらの記事をご覧ください。
混合ポアソン分布をギブスサンプリングする
混合ポアソン分布においては、各クラスタのポアソン分布のパラメータの集合$\bm{\lambda}$、混合比率$\bm{\pi}$、$n$番目のデータがどのクラスタに属するかを示す潜在変数を$\bm{S}$としたとき、混合分布のギブスサンプリングにおいては、潜在変数とパラメータを分けてサンプリングすると、よい感じで近似した事後分布を得ることができます。
\begin{equation} \begin{split} \bm{S} &\sim p(\bm{S} | \bm{X}, \bm{\lambda}, \bm{\pi}) \\ \bm{\lambda}, \bm{\pi} &\sim p(\bm{\lambda}, \bm{\pi} | \bm{S}, \bm{X}) \end{split} \end{equation}
潜在変数$\bm{S}$をサンプリング
前述したように、混合分布における、ギブスサンプリング(Gibbs Sampling)では、混合分布の潜在変数とモデルパラメータを分けてサンプリングすることで、適切な事後分布を得ることができます。
潜在変数$\bm{S}$をサンプリングする際には、モデルパラメータ $\bm{\lambda}, \bm{\pi}$が既にわかっている前提で、サンプリングを行います。
ポアソン混合モデルにおける、$\bm{\lambda}, \bm{\pi}$が既知の場合における、観測モデルは次のようになります。
\begin{equation} \begin{split} p(x_n | \bm{s_n} , \bm{\lambda}) = \prod_{k=1}^{K} Poi (x_n | \lambda_k )^{s_{nk}} \end{split} \end{equation}
ここで、(2)式の対数を取ると次のようになります。
\begin{equation} \begin{split} ln p(x_n | \bm{s_n} , \bm{\lambda}) &= \sum_{k=1}^{K} s_{nk} ln Poi(x_n | \lambda_k) \\ &= \sum_{k=1}^{K} s_{nk} (x_n ln \lambda_k - \lambda_k) + const. \end{split} \end{equation}
ここで、ポアソン分布の確率質量関数(pmf)はこのようになることを利用しています。
\begin{equation} Poi(x | \lambda) = \frac{\lambda^x}{x!} e^{- \lambda} \end{equation}
続いて、$p(\bm{s_n} | \bm{\pi})$についても対数を考えます。
\begin{equation} \begin{split} ln p(\bm{s_n} | \bm{\pi}) &= ln Cat(\bm{s_n} | \bm{\pi}) \\ &= \sum_{k=1}^{K} s_{nk} ln \pi_k \end{split} \end{equation}
ここで、カテゴリ分布は次にような確率質量関数はこのようになっています。
\begin{equation} Cat (\bm{s} | \bm{\pi}) = \prod_{k=1}^{K} \pi_k^{s_{nk}} \end{equation}
ここで、これらを考えると、
\begin{equation} \begin{split} ln p(x_n | \bm{s_n}, \bm{\lambda})p(\bm{s_n} | \bm{\pi}) = \sum_{k=1}^{K} s_{nk} (x_n ln \lambda_k - \lambda_k + ln \lambda_k) + const. \end{split} \end{equation}
ここで、$\sum_{k=1}^{K} s_{nk} = 1 $で考慮すると、(7)は新しいカテゴリカル分布に対数をとった形式と言えます。よって、
\begin{equation} \begin{split} p(\bm{S} | \bm{X}, \bm{\lambda}, \bm{\pi}) &\propto p(\bm{S}, \bm{X}, \bm{\lambda}, \bm{\pi}) \\ &= p(\bm{X} | \bm{S}, \bm{\lambda}) p(\bm{S} | \bm{\pi}) \\ &= \prod_{n=1}^{N} p(x_n | \bm{s_n}, \bm{\lambda}) p(\bm{s_n} | \bm{\pi}) \end{split} \end{equation}
であることから、(8)の対数をとり、(7)と比較すると、サンプリングしたい$\bm{s_n}$の事後分布は、次のような、カテゴリカル分布で表現することができます。
\begin{equation} \bm{s_n} \sim Cat(\bm{s_n} | \bm{\eta_n} ) \end{equation}
ここで、
\bm{\eta_n} \propto exp\{ x_n ln \lambda_k - \lambda_k + ln \lambda_k \}
新しいカテゴリカル変数の$\bm{\eta_n}$を計算し、ランダムにサンプリングすることで、$\bm{s_n}$を得ることができます。
ここまでが、$\bm{s_n}$のサンプリングの方法についてでした。
モデルパラメータ$\bm{\lambda}, \bm{\pi}$をサンプリング
先ほど、$\bm{s_n}$のサンプリングについてまとめたので、続いて、モデルパラメータである$\bm{\lambda}, \bm{\pi}$に入っていきます。
データ$\bm{X}$と、先ほどサンプリングした$\bm{S}$が既知とした時の、$\bm{\lambda}, \bm{\pi}$の事後分布はこのように表現することができます。
\begin{equation} \begin{split} p(\bm{\lambda}, \bm{\pi} | \bm{X}, \bm{S}) &\propto p(\bm{\lambda}, \bm{\pi} , \bm{X}, \bm{S}) \\ &= p(\bm{X} | \bm{S}, \bm{\lambda})p(\bm{S} | \bm{\pi}) p(\bm{\lambda}) p(\bm{\pi}) \end{split} \end{equation}
ここで(10)から$\bm{\lambda}, \bm{\pi}$ が独立であることから、$\bm{\lambda}$と$\bm{\pi}$ は別々にサンプリングすればよいことがわかります。
証明は後日追加しますが、$\bm{\lambda}$と$\bm{\pi}$ は、それぞれ次のような分布からサンプリングすればよいことが知られています。
\begin{equation} \bm{\lambda} \sim Gam(\lambda_k | a_k, b_k) \end{equation}
ただし、
\begin{split} a_k &= \sum_{n=1}^{N} s_{nk} x_n + a \\ b_k &= \sum_{n=1}^{N} s_{nk} + b \end{split}
\begin{equation} \bm{\pi} \sim Dir(\bm{\pi} | \bm{\alpha}) \end{equation}
ただし、
\begin{split} \bm{\alpha} = \sum_{n=1}^{N} s_{nk} + \alpha_k \end{split}