カテゴリ分布(categorical distribution)のベイズ推定と多クラス分類

多クラスでの分類(1-of-K表現のモデル)などでよく出てくるカテゴリ分布のパラメータの共役事前分布を利用した推論を扱います。

カテゴリ分布(categorical distribution)

カテゴリ分布とは、ベルヌーイ分布をK次元に拡張した確率分布である。サイコロの出目の分布など多クラスの出現確率のようなものを扱う分布である。

$$
\mathrm{Cat}(\mathbf{s} | \boldsymbol{\pi}) = \prod^K_{k=1} \pi^{s_k}_k
$$

ここで、$\mathbf{s} = [s_1, s_2, \cdots, s_K]^{\top}$であり、$s_k \in \{0, 1\}$である。$\boldsymbol{\pi} = [\pi_1, \cdots, \pi_K]^{\top}$であり、それぞれのカテゴリ(次元)の確率を表す。そのため、$\pi_k = (0, 1)$であり、また、$\sum^K_{k=1} \pi_k = 1.0$である。

多項分布との関係

カテゴリ分布による試行をM回繰り返した場合のカテゴリkの出現回数$m_k$に関する分布である。ベルヌーイ分布と二項分布の関係と同様の関係にある。

多項分布については下記を参照

パラメータのベイズ推論

事後分布の導出

カテゴリ分布のパラメータベクトル$\boldsymbol{\pi}$に関する事後分布を$p(\boldsymbol{\pi} |\mathcal{D})$とすると、ベイズの定理に基づいて事後分布は以下の通りとなる。ここで、事前分布には共役事前分布であるディリクレ分布を用いている。

$$
\begin{align}
p\left(\boldsymbol{\pi} | \mathcal{D} \right) &\propto p\left( \mathcal{D} | \boldsymbol{\pi} \right) p \left( \boldsymbol{\pi} \right) \\
& = \left\{ \prod^N_{n=1} \mathrm{Cat}(\mathbf{s}_n | \boldsymbol{\pi}) \right\} \mathrm{Dir}(\boldsymbol{\pi} | \boldsymbol{\alpha})
\end{align}
$$

ここで、$\mathcal{D} = \left[ \mathbf{s}_1, \cdots, \mathbf{s}_N \right]$である。

カテゴリ分布とディリクレ分布の関係については下記参照。

上記の事後分布$p\left(\boldsymbol{\pi} | \mathcal{D} \right)$は共役事前分布を用いているため、下記の通り解析的に導出することができる。

まず、計算を簡単にするために対数を取った対数事後分布を考える。

$$
\begin{align}
\ln p\left(\boldsymbol{\pi} | \mathcal{D} \right) & = \sum^N_{n=1} \ln \prod^K_{k=1} \pi^{s_{n, k}}_k + \ln \mathrm{C_D}(\boldsymbol{\alpha}) \prod^K_{k=1} \pi^{\alpha_k – 1}_k + \mathrm{Const.} \\
&= \sum^N_{n=1} \sum^K_{k=1} s_{n, k} \ln \pi_k + \sum^K_{k=1} (\alpha_k – 1) \ln \pi_k + \mathrm{Const.} \\
&= \sum^K_{k=1} \left\{ \sum^N_{n=1} s_{n, k} + (\alpha_k – 1) \right\} \ln \pi_k + \mathrm{Const.}
\end{align}
$$

3段目の式は、ディリクレ分布の対数の形をしていることから、事後分布$p\left(\boldsymbol{\pi} | \mathcal{D} \right)$は以下のようなディリクレ分布となる。

$$
\begin{align}
p\left(\boldsymbol{\pi} | \mathcal{D} \right) &= \mathrm{Dir}(\boldsymbol{\pi} | \hat{\boldsymbol{\alpha}} ) \\
&\hat{\boldsymbol{\alpha}} = \sum^N_{n=1} s_{n, k} + \alpha_k
\end{align}
$$

事後分布の周辺分布

事後分布であるディリクレ分布を周辺化して、カテゴリ毎のパラメータ$\pi_k$の周辺事後分布を確認したい場合がある。

ディリクレ分布$\mathrm{Dir}(\boldsymbol{\pi} | \boldsymbol{\alpha} )$のカテゴリkについての周辺分布はベータ分布$\mathrm{Beta}\left( \alpha_k, (\sum \alpha_i – \alpha_k) \right)$となる。ここでは、3クラスを例として周辺分布を導出する。

$$
\begin{align}
\mathrm{Dir}(\pi_1, \pi_2, (1-\pi_1-\pi_2) | \alpha_1, \alpha_2, \alpha_3 ) \propto \pi_1^{\alpha_1-1}\pi_2^{\alpha_2-1}(1-\pi_1-\pi_2)^{\alpha_3-1}
\end{align}
$$

なお、$\sum \pi_i = 1$であることから、$\pi_3 = 1-\pi_1-\pi_2$である。

ここで、$\pi_1$についての周辺分布$p(\pi_1)$は以下の通り、$\pi_2$について積分を取った分布である。

$$
\begin{align}
p(\pi_1) &\propto \int \pi_1^{\alpha_1-1}\pi_2^{\alpha_2-1}(1-\pi_1-\pi_2)^{\alpha_3-1} d\pi_2 \\
&= \pi_1^{\alpha_1-1} \int \pi_2^{\alpha_2-1}(1-\pi_1-\pi_2)^{\alpha_3-1} d\pi_2
\end{align}
$$

2段目の積分において、$\pi_2 = (1-\pi_1)u$と変換すると、次の通り計算できる。

$$
\begin{align}
\int \pi_2^{\alpha_2-1}(1-\pi_1-\pi_2)^{\alpha_3-1} d\pi_2 &= \int (1-\pi_1)^{\alpha_2-1}u^{\alpha_2-1} \left( 1-\pi_1 – (1-\pi_1)u \right)^{\alpha_3-1} (1-\pi_1) du \\
&= \int (1-\pi_1)^{\alpha_2}(1-\pi_1)^{\alpha_3-1}u^{\alpha_2-1}(1-u)^{\alpha_3-1}du \\
&=(1-\pi_1)^{\alpha_2+\alpha_3-1} \int u^{\alpha_2-1}(1-u)^{\alpha_3-1}du
\end{align}
$$

ここで、3段目の積分の中身はベータ分布と同じ形であるため、その積分結果はベータ分布の正規化項の逆数となる。これらをまとめると周辺分布$p(\pi_1)$は以下の通りである。

$$
\begin{align}
p(\pi_1) \propto \pi_1^{\alpha_1-1} (1-\pi_1)^{\alpha_2+\alpha_3-1}
\end{align}
$$

この式の右辺もまた、ベータ分布と同じ形をしている。$p(\pi_1)$は確率分布であるため、確率分布の定義を満たすように正規化項を追加すると、結局は以下のベータ分布となる。

$$
p(\pi_1) = \mathrm{Beta}(\alpha_1, \alpha_2+\alpha_3)
$$

上記では、正規化項を省略して導出したが、正規化項を含めた計算としては、以下のページ(外部ページ)などを参照。

https://math.stackexchange.com/questions/543764/let-x-y-have-a-dirichlet-distribution-with-paramters-alpha-1-alpha-2-al